diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
index e9e8770b3409489b0ae11bc37f79cb9b4ece6bd2..12b11478f6541303dbc6ffcd2b9227f22637641a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
@@ -15,8 +15,18 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		/// </summary>
 		public string NodeId { get; set; }
 		/// <summary>
+		/// Gets or sets Whether this node is ignored for accessibility
+		/// </summary>
+		public bool Ignored { get; set; }
+		/// <summary>
+		/// Gets or sets Collection of reasons why this node is hidden.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public AXProperty[] IgnoredReasons { get; set; }
+		/// <summary>
 		/// Gets or sets This <code>Node</code>'s role, whether explicit or implicit.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValue Role { get; set; }
 		/// <summary>
 		/// Gets or sets The accessible name for this <code>Node</code>.
@@ -34,13 +44,19 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValue Value { get; set; }
 		/// <summary>
-		/// Gets or sets Help.
+		/// Gets or sets All other properties
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public AXProperty[] Properties { get; set; }
+		/// <summary>
+		/// Gets or sets IDs for each of this node's child nodes.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AXValue Help { get; set; }
+		public string[] ChildIds { get; set; }
 		/// <summary>
-		/// Gets or sets All other properties
+		/// Gets or sets The backend ID for the associated DOM node, if any.
 		/// </summary>
-		public AXProperty[] Properties { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? BackendDOMNodeId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs
deleted file mode 100644
index c6aee5ff8417490c743e9993ab708f515e62ca4e..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
-{
-	/// <summary>
-	/// A single source for a computed AX property.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class AXPropertySource
-	{
-		/// <summary>
-		/// Gets or sets The name/label of this source.
-		/// </summary>
-		public string Name { get; set; }
-		/// <summary>
-		/// Gets or sets What type of source this is.
-		/// </summary>
-		public AXPropertySourceType SourceType { get; set; }
-		/// <summary>
-		/// Gets or sets The value of this property source.
-		/// </summary>
-		public object Value { get; set; }
-		/// <summary>
-		/// Gets or sets What type the value should be interpreted as.
-		/// </summary>
-		public AXValueType Type { get; set; }
-		/// <summary>
-		/// Gets or sets Whether the value for this property is invalid.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? Invalid { get; set; }
-		/// <summary>
-		/// Gets or sets Reason for the value being invalid, if it is.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string InvalidReason { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
index b160514d8d36715a39ea366ffb0f705e4a7f172b..986ccbd0210b12294ff9585b41837c7b213a31c7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
@@ -22,6 +22,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		/// <summary>
 		/// Gets or sets The text alternative of this node in the current context.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Text { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
index faa253ea4ff5d8572cb8d3638141620610daf2db..d6a7050fc212d1919648a54b5e434fb7c445b875 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
@@ -20,19 +20,14 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public object Value { get; set; }
 		/// <summary>
-		/// Gets or sets The related node value, if any.
+		/// Gets or sets One or more related nodes, if applicable.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AXRelatedNode RelatedNodeValue { get; set; }
-		/// <summary>
-		/// Gets or sets Multiple relted nodes, if applicable.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AXRelatedNode[] RelatedNodeArrayValue { get; set; }
+		public AXRelatedNode[] RelatedNodes { get; set; }
 		/// <summary>
 		/// Gets or sets The sources which contributed to the computation of this property.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AXPropertySource[] Sources { get; set; }
+		public AXValueSource[] Sources { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueSource.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueSource.cs
index 5b207aa212e93a7297d9d5df7894704eea75c5b3..7a87fc5c7acc6daa3510d76249256e2b0f880d9b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueSource.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueSource.cs
@@ -17,34 +17,42 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		/// <summary>
 		/// Gets or sets The value of this property source.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValue Value { get; set; }
 		/// <summary>
 		/// Gets or sets The name of the relevant attribute, if any.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Attribute { get; set; }
 		/// <summary>
 		/// Gets or sets The value of the relevant attribute, if any.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValue AttributeValue { get; set; }
 		/// <summary>
 		/// Gets or sets Whether this source is superseded by a higher priority source.
 		/// </summary>
-		public bool Superseded { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Superseded { get; set; }
 		/// <summary>
 		/// Gets or sets The native markup source for this value, e.g. a <label> element.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValueNativeSourceType NativeSource { get; set; }
 		/// <summary>
 		/// Gets or sets The value, such as a node or node list, of the native source.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public AXValue NativeSourceValue { get; set; }
 		/// <summary>
 		/// Gets or sets Whether the value for this property is invalid.
 		/// </summary>
-		public bool Invalid { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Invalid { get; set; }
 		/// <summary>
 		/// Gets or sets Reason for the value being invalid, if it is.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string InvalidReason { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs
deleted file mode 100644
index e83341d753993d9cabf28c86cea0e88ea525c8d6..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
-{
-	/// <summary>
-	/// Fetches the accessibility node for this DOM node, if it exists.
-	/// </summary>
-	[CommandResponse(ProtocolName.Accessibility.GetAXNode)]
-	[SupportedBy("Chrome")]
-	public class GetAXNodeCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets The <code>Accessibility.AXNode</code> for this DOM node, if it exists.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AXNode AccessibilityNode { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
index 09fa06d13b7c66f08b4b9a28d0fb13bc23644e0e..dd0fd198a282b03cb6c905b3306aa1cce1a79c6e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
@@ -18,6 +18,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 		/// <summary>
 		/// Gets or sets Whether to fetch this nodes ancestors, siblings and children. Defaults to true.
 		/// </summary>
-		public bool FetchRelatives { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? FetchRelatives { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/Animation.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/Animation.cs
index ad279c54f709b7aab0ff4959875ec8d59ecdf9c9..55c6090688db072f2fc2b0b1d05bcdbfada24127 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/Animation.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/Animation.cs
@@ -49,6 +49,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 		/// <summary>
 		/// Gets or sets A unique ID for <code>Animation</code> representing the sources that triggered this CSS animation/transition.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string CssId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCanceledEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCanceledEvent.cs
index 72946b28cc2e4c5a995c435e13cc15024a0d733e..b87737b1b99b069381482b83f702050aae9a242a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCanceledEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCanceledEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCreatedEvent.cs
index a17aa70f0474cfdaae0b97e7ff9a0e1defd497d4..dda0e6170edbfa36d87355c229b172a08174be10 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationCreatedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs
deleted file mode 100644
index 9371e7885960ffddb74fcc1d7a0fff80f3c3d919..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
-{
-	/// <summary>
-	/// Event for AnimationPlayers in the frontend that have been cancelled.
-	/// </summary>
-	[Event(ProtocolName.Animation.AnimationPlayerCanceled)]
-	[SupportedBy("Chrome")]
-	public class AnimationPlayerCanceledEvent
-	{
-		/// <summary>
-		/// Gets or sets Id of the AnimationPlayer that was cancelled.
-		/// </summary>
-		public string PlayerId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs
deleted file mode 100644
index 4b29a0bc071ec19b5e722a6242b17b97b89462af..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
-{
-	/// <summary>
-	/// Event for each animation player that has been created.
-	/// </summary>
-	[Event(ProtocolName.Animation.AnimationPlayerCreated)]
-	[SupportedBy("Chrome")]
-	public class AnimationPlayerCreatedEvent
-	{
-		/// <summary>
-		/// Gets or sets AnimationPlayer that was created.
-		/// </summary>
-		public AnimationPlayer Player { get; set; }
-		/// <summary>
-		/// Gets or sets Whether the timeline should be reset.
-		/// </summary>
-		public bool ResetTimeline { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationStartedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationStartedEvent.cs
index 2df5c3280748b720f453adc601370467740b7539..293a9bf3fe74ac27c8050ff7cb06bc2b76b4daa2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationStartedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationStartedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/CSSKeyframeRule.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSKeyframeRule.cs
index 2c367775cae631abcc32835a9ab28658260838ee..460ad6ea4b0ebc4d2d7cb0523a8cee29dd98d8a3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/CSSKeyframeRule.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSKeyframeRule.cs
@@ -13,6 +13,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// <summary>
 		/// Gets or sets The css style sheet identifier (absent for user agent stylesheet and user-specified stylesheet rules) this rule came from.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string StyleSheetId { get; set; }
 		/// <summary>
 		/// Gets or sets Parent stylesheet's origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
index 20f2a00b0d9aa41b7258456aee17a8b545752c6b..f532fe4390afc71c7dab41687b496a19c123f7dd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
@@ -32,7 +32,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// Gets or sets Identifier of the stylesheet containing this object (if exists).
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ParentStyleSheetId { get; set; }
+		public string StyleSheetId { get; set; }
 		/// <summary>
 		/// Gets or sets Array of media queries.
 		/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/FontsUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/FontsUpdatedEvent.cs
index 3f987711397f3667345ceb46ee5d44dd635ac719..cf9505a03712904354e6b106f794afe468c74125 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/FontsUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/FontsUpdatedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommandResponse.cs
index 7af43ac18016b1b992f9eb2d5ea9d775bf636227..acae41355f8bae1076c563bc45ad2a60edca0c53 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommandResponse.cs
@@ -11,6 +11,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// <summary>
 		/// Gets or sets The range of background colors behind this element, if it contains any visible text. If no visible text is present, this will be undefined. In the case of a flat background color, this will consist of simply that color. In the case of a gradient, this will consist of each of the color stops. For anything more complicated, this will be an empty array. Images will be ignored (as if the image had failed to load).
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] BackgroundColors { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
index 315b8253746b3161463d051440e3442b3ea4afc0..b5a69f7679c45e013d73ccccb7d53bb90449c85d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
@@ -15,15 +15,5 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// Gets or sets NodeId
 		/// </summary>
 		public long NodeId { get; set; }
-		/// <summary>
-		/// Gets or sets Whether to exclude pseudo styles (default: false).
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? ExcludePseudo { get; set; }
-		/// <summary>
-		/// Gets or sets Whether to exclude inherited styles (default: false).
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? ExcludeInherited { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
index be70f684b45346bad951826e4e46a84346372ffe..5b57feb08314700e95b15b2715caad0293764652 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
@@ -11,6 +11,16 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	[SupportedBy("Chrome")]
 	public class GetMatchedStylesForNodeCommandResponse
 	{
+		/// <summary>
+		/// Gets or sets Inline style for the specified DOM node.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public CSSStyle InlineStyle { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute-defined element style (e.g. resulting from "width=20 height=100%").
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public CSSStyle AttributesStyle { get; set; }
 		/// <summary>
 		/// Gets or sets CSS rules matching this node, from all applicable stylesheets.
 		/// </summary>
@@ -20,11 +30,16 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// Gets or sets Pseudo style matches for this node.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public PseudoIdMatches[] PseudoElements { get; set; }
+		public PseudoElementMatches[] PseudoElements { get; set; }
 		/// <summary>
 		/// Gets or sets A chain of inherited styles (from the immediate node parent up to the DOM tree root).
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public InheritedStyleEntry[] Inherited { get; set; }
+		/// <summary>
+		/// Gets or sets A list of CSS keyframed animations matching this node.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public CSSKeyframesRule[] CssKeyframesRules { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/LayoutTreeNode.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/LayoutTreeNode.cs
index 3cff9d16d63df1f3b5e3e3a3c364970bbc179136..49bb32249cacac7185f7dcd527a34a927d8b298a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/LayoutTreeNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/LayoutTreeNode.cs
@@ -21,14 +21,17 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// <summary>
 		/// Gets or sets Contents of the LayoutText if any
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string LayoutText { get; set; }
 		/// <summary>
 		/// Gets or sets The post layout inline text nodes, if any.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public InlineTextBox[] InlineTextNodes { get; set; }
 		/// <summary>
 		/// Gets or sets Index into the computedStyles array returned by getLayoutTreeAndStyles.
 		/// </summary>
-		public long StyleIndex { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? StyleIndex { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
index 7c57906ef675a2b141197f3f57ddc97741565fc3..9ee94e08f43030dade5092812aa5bdd6c5b9c1da 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
@@ -14,6 +14,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// <summary>
 		/// Gets or sets URL of source map associated with script (if any).
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string SourceMapURL { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
index 1563402cd03ef8efa149edd8777bc9909596a6f7..dd9c49cd4c1af41125239fd75cd7d6a8061e4aaa 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
@@ -21,6 +21,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 		/// <summary>
 		/// Gets or sets Whether the property has "!important" annotation (implies <code>false</code> if absent).
 		/// </summary>
-		public bool Important { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Important { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs
deleted file mode 100644
index 71d72dbac11ab6355a849a14712fb61b45a04607..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// 
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class Call
-	{
-		/// <summary>
-		/// Gets or sets ContextId
-		/// </summary>
-		public string ContextId { get; set; }
-		/// <summary>
-		/// Gets or sets FunctionName
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FunctionName { get; set; }
-		/// <summary>
-		/// Gets or sets Arguments
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public CallArgument[] Arguments { get; set; }
-		/// <summary>
-		/// Gets or sets Result
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public CallArgument Result { get; set; }
-		/// <summary>
-		/// Gets or sets IsDrawingCall
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsDrawingCall { get; set; }
-		/// <summary>
-		/// Gets or sets IsFrameEndCall
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsFrameEndCall { get; set; }
-		/// <summary>
-		/// Gets or sets Property
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Property { get; set; }
-		/// <summary>
-		/// Gets or sets Value
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public CallArgument Value { get; set; }
-		/// <summary>
-		/// Gets or sets SourceURL
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string SourceURL { get; set; }
-		/// <summary>
-		/// Gets or sets LineNumber
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? LineNumber { get; set; }
-		/// <summary>
-		/// Gets or sets ColumnNumber
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? ColumnNumber { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs
deleted file mode 100644
index 4275208c619b4ae07db1a0d17083c8ed72576b04..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// 
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class CallArgument
-	{
-		/// <summary>
-		/// Gets or sets String representation of the object.
-		/// </summary>
-		public string Description { get; set; }
-		/// <summary>
-		/// Gets or sets Enum name, if any, that stands for the value (for example, a WebGL enum name).
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string EnumName { get; set; }
-		/// <summary>
-		/// Gets or sets Resource identifier. Specified for <code>Resource</code> objects only.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ResourceId { get; set; }
-		/// <summary>
-		/// Gets or sets Object type. Specified for non <code>Resource</code> objects only.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Type { get; set; }
-		/// <summary>
-		/// Gets or sets Object subtype hint. Specified for <code>object</code> type values only.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Subtype { get; set; }
-		/// <summary>
-		/// Gets or sets The <code>RemoteObject</code>, if requested.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject RemoteObject { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs
deleted file mode 100644
index 6ffc545e2ad46126ab57daf64ee99bf203d44fed..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Starts (or continues) a canvas frame capturing which will be stopped automatically after the next frame is prepared.
-	/// </summary>
-	[Command(ProtocolName.Canvas.CaptureFrame)]
-	[SupportedBy("Chrome")]
-	public class CaptureFrameCommand
-	{
-		/// <summary>
-		/// Gets or sets Identifier of the frame containing document whose canvases are to be captured. If omitted, main frame is assumed.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FrameId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs
deleted file mode 100644
index 388fcf82afce07ad0a448616da4227e654673c01..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Fired when a canvas context has been created in the given frame. The context may not be instrumented (see hasUninstrumentedCanvases command).
-	/// </summary>
-	[Event(ProtocolName.Canvas.ContextCreated)]
-	[SupportedBy("Chrome")]
-	public class ContextCreatedEvent
-	{
-		/// <summary>
-		/// Gets or sets Identifier of the frame containing a canvas with a context.
-		/// </summary>
-		public string FrameId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs
deleted file mode 100644
index 0e960904fc5dbefa0c6f2914fd2e02bc9585521f..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Evaluates a given trace call argument or its result.
-	/// </summary>
-	[Command(ProtocolName.Canvas.EvaluateTraceLogCallArgument)]
-	[SupportedBy("Chrome")]
-	public class EvaluateTraceLogCallArgumentCommand
-	{
-		/// <summary>
-		/// Gets or sets TraceLogId
-		/// </summary>
-		public string TraceLogId { get; set; }
-		/// <summary>
-		/// Gets or sets Index of the call to evaluate on (zero based).
-		/// </summary>
-		public long CallIndex { get; set; }
-		/// <summary>
-		/// Gets or sets Index of the argument to evaluate (zero based). Provide <code>-1</code> to evaluate call result.
-		/// </summary>
-		public long ArgumentIndex { get; set; }
-		/// <summary>
-		/// Gets or sets String object group name to put result into (allows rapid releasing resulting object handles using <code>Runtime.releaseObjectGroup</code>).
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectGroup { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
deleted file mode 100644
index da274cc2655ceff2f33b19a6e0c4c1f40b91369c..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Evaluates a given trace call argument or its result.
-	/// </summary>
-	[CommandResponse(ProtocolName.Canvas.EvaluateTraceLogCallArgument)]
-	[SupportedBy("Chrome")]
-	public class EvaluateTraceLogCallArgumentCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets Object wrapper for the evaluation result.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject Result { get; set; }
-		/// <summary>
-		/// Gets or sets State of the <code>Resource</code> object.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public ResourceState ResourceState { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs
deleted file mode 100644
index de96338724f11ece255c58ac371fc19b57c839cf..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	[Command(ProtocolName.Canvas.GetTraceLog)]
-	[SupportedBy("Chrome")]
-	public class GetTraceLogCommand
-	{
-		/// <summary>
-		/// Gets or sets TraceLogId
-		/// </summary>
-		public string TraceLogId { get; set; }
-		/// <summary>
-		/// Gets or sets StartOffset
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? StartOffset { get; set; }
-		/// <summary>
-		/// Gets or sets MaxLength
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? MaxLength { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs
deleted file mode 100644
index 37d45894cec4ce456c604705d4af0abb5a8d54ac..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Resource state.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class ResourceState
-	{
-		/// <summary>
-		/// Gets or sets Id
-		/// </summary>
-		public string Id { get; set; }
-		/// <summary>
-		/// Gets or sets TraceLogId
-		/// </summary>
-		public string TraceLogId { get; set; }
-		/// <summary>
-		/// Gets or sets Describes current <code>Resource</code> state.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public ResourceStateDescriptor[] Descriptors { get; set; }
-		/// <summary>
-		/// Gets or sets Screenshot image data URL.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ImageURL { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs
deleted file mode 100644
index 7b9ca5c0286286fb47312a6c22dd081828376bce..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Resource state descriptor.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class ResourceStateDescriptor
-	{
-		/// <summary>
-		/// Gets or sets State name.
-		/// </summary>
-		public string Name { get; set; }
-		/// <summary>
-		/// Gets or sets String representation of the enum value, if <code>name</code> stands for an enum.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string EnumValueForName { get; set; }
-		/// <summary>
-		/// Gets or sets The value associated with the particular state.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public CallArgument Value { get; set; }
-		/// <summary>
-		/// Gets or sets Array of values associated with the particular state. Either <code>value</code> or <code>values</code> will be specified.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public ResourceStateDescriptor[] Values { get; set; }
-		/// <summary>
-		/// Gets or sets True iff the given <code>values</code> items stand for an array rather than a list of grouped states.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsArray { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs
deleted file mode 100644
index f898829e2bc6cfd060f21a3f3e95b9c20f7ab0c5..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Starts (or continues) consecutive canvas frames capturing. The capturing is stopped by the corresponding stopCapturing command.
-	/// </summary>
-	[Command(ProtocolName.Canvas.StartCapturing)]
-	[SupportedBy("Chrome")]
-	public class StartCapturingCommand
-	{
-		/// <summary>
-		/// Gets or sets Identifier of the frame containing document whose canvases are to be captured. If omitted, main frame is assumed.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FrameId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs
deleted file mode 100644
index be7e7273e73fefd90b45907da16f9694674ba412..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
-{
-	/// <summary>
-	/// Fired when a set of trace logs were removed from the backend. If no parameters are given, all trace logs were removed.
-	/// </summary>
-	[Event(ProtocolName.Canvas.TraceLogsRemoved)]
-	[SupportedBy("Chrome")]
-	public class TraceLogsRemovedEvent
-	{
-		/// <summary>
-		/// Gets or sets If given, trace logs from the given frame were removed.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FrameId { get; set; }
-		/// <summary>
-		/// Gets or sets If given, trace log with the given ID was removed.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string TraceLogId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs b/source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs
deleted file mode 100644
index 6bc8dbcf9fa5d1e0c1c43c9db09d434fe4e2678f..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
-{
-	/// <summary>
-	/// Asynchronous JavaScript call stack.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class AsyncStackTrace
-	{
-		/// <summary>
-		/// Gets or sets Call frames of the stack trace.
-		/// </summary>
-		public CallFrame[] CallFrames { get; set; }
-		/// <summary>
-		/// Gets or sets String label of this stack trace. For async traces this may be a name of the function that initiated the async call.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Description { get; set; }
-		/// <summary>
-		/// Gets or sets Next asynchronous stack trace, if any.
-		/// </summary>
-		[JsonProperty("asyncStackTrace")]
-		public AsyncStackTrace AsyncStackTraceChild { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs b/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
index 4ea754811cd9f7f88d411904fa817bc26215d2fd..659878df5002d2766056b70e6b8e85fdda26338e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
@@ -23,63 +23,19 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 		/// </summary>
 		public string Text { get; set; }
 		/// <summary>
-		/// Gets or sets Console message type.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Type { get; set; }
-		/// <summary>
-		/// Gets or sets Script ID of the message origin.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ScriptId { get; set; }
-		/// <summary>
 		/// Gets or sets URL of the message origin.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Url { get; set; }
 		/// <summary>
-		/// Gets or sets Line number in the resource that generated this message.
+		/// Gets or sets Line number in the resource that generated this message (1-based).
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long? Line { get; set; }
 		/// <summary>
-		/// Gets or sets Column number in the resource that generated this message.
+		/// Gets or sets Column number in the resource that generated this message (1-based).
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long? Column { get; set; }
-		/// <summary>
-		/// Gets or sets Repeat count for repeated messages.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? RepeatCount { get; set; }
-		/// <summary>
-		/// Gets or sets Message parameters in case of the formatted message.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject[] Parameters { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript stack trace for assertions and error messages.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public CallFrame[] StackTrace { get; set; }
-		/// <summary>
-		/// Gets or sets Asynchronous JavaScript stack trace that preceded this message, if available.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public AsyncStackTrace AsyncStackTrace { get; set; }
-		/// <summary>
-		/// Gets or sets Identifier of the network request associated with this message.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string NetworkRequestId { get; set; }
-		/// <summary>
-		/// Gets or sets Timestamp, when this message was fired.
-		/// </summary>
-		public double Timestamp { get; set; }
-		/// <summary>
-		/// Gets or sets Identifier of the context where this message was created
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? ExecutionContextId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs
deleted file mode 100644
index e608bce2cc90cb96478a944e0182320cf26d1d81..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
-{
-	/// <summary>
-	/// Is not issued. Will be gone in the future versions of the protocol.
-	/// </summary>
-	[Event(ProtocolName.Console.MessageRepeatCountUpdated)]
-	[SupportedBy("Chrome")]
-	public class MessageRepeatCountUpdatedEvent
-	{
-		/// <summary>
-		/// Gets or sets New repeat count value.
-		/// </summary>
-		public long Count { get; set; }
-		/// <summary>
-		/// Gets or sets Timestamp of most recent message in batch.
-		/// </summary>
-		public double Timestamp { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs
deleted file mode 100644
index 31166480cfa546d194aae84511647862c5f76afb..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
-{
-	/// <summary>
-	/// Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation.
-	/// </summary>
-	[Event(ProtocolName.Console.MessagesCleared)]
-	[SupportedBy("Chrome")]
-	public class MessagesClearedEvent
-	{
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs
deleted file mode 100644
index 83ddbf52105166344c1590ed76e3134311e65e79..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
-{
-	/// <summary>
-	/// DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class EventListener
-	{
-		/// <summary>
-		/// Gets or sets <code>EventListener</code>'s type.
-		/// </summary>
-		public string Type { get; set; }
-		/// <summary>
-		/// Gets or sets <code>EventListener</code>'s useCapture.
-		/// </summary>
-		public bool UseCapture { get; set; }
-		/// <summary>
-		/// Gets or sets <code>EventListener</code>'s isAttribute.
-		/// </summary>
-		public bool IsAttribute { get; set; }
-		/// <summary>
-		/// Gets or sets Target <code>DOMNode</code> id.
-		/// </summary>
-		public long NodeId { get; set; }
-		/// <summary>
-		/// Gets or sets Handler code location.
-		/// </summary>
-		public Debugger.Location Location { get; set; }
-		/// <summary>
-		/// Gets or sets Event handler function value.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject Handler { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
index 66c92b6d9a9c94dd4440f23581f556871d6aea39..ad402978a2466ffdc6ab78c67936e5cc683f8c3b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
@@ -14,10 +14,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.
 		/// </summary>
-		public long Depth { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Depth { get; set; }
 		/// <summary>
 		/// Gets or sets Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false).
 		/// </summary>
-		public bool Pierce { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Pierce { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs
deleted file mode 100644
index b717a8aa71d3a0f787c0b9b1883f6a35cb6795f2..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
-{
-	/// <summary>
-	/// Returns event listeners relevant to the node.
-	/// </summary>
-	[Command(ProtocolName.DOM.GetEventListenersForNode)]
-	[SupportedBy("Chrome")]
-	public class GetEventListenersForNodeCommand
-	{
-		/// <summary>
-		/// Gets or sets Id of the node to get listeners for.
-		/// </summary>
-		public long NodeId { get; set; }
-		/// <summary>
-		/// Gets or sets Symbolic group name for handler value. Handler value is not returned without this parameter specified.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectGroup { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
index 4d0b7d444604eb4eac2ffc265da7b0bbdca33a63..b098415071d84eaa44f5bfe81fd328d89d73f0f0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
@@ -14,10 +14,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.
 		/// </summary>
-		public long Depth { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Depth { get; set; }
 		/// <summary>
 		/// Gets or sets Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false).
 		/// </summary>
-		public bool Pierce { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Pierce { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
index c7e1bba2cbcc083f4e40722086727f955e8644dc..48dfb8a1c4782f51689f19a4391f0861356c43b7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
@@ -28,7 +28,8 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets DisplayAsMaterial
 		/// </summary>
-		public bool DisplayAsMaterial { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? DisplayAsMaterial { get; set; }
 		/// <summary>
 		/// Gets or sets The content box highlight fill color (default: transparent).
 		/// </summary>
@@ -67,6 +68,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets Selectors to highlight relevant nodes.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string SelectorList { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
index bec244e9b93c8e7d9788e08ae60b458f598eaf75..74fdff1a5256b5602083ca28bc7540648e2103cd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
@@ -17,7 +17,8 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets The id of the parent node if any.
 		/// </summary>
-		public long ParentId { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ParentId { get; set; }
 		/// <summary>
 		/// Gets or sets The BackendNodeId for this node.
 		/// </summary>
@@ -141,6 +142,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// <summary>
 		/// Gets or sets Whether the node is SVG.
 		/// </summary>
-		public bool IsSVG { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? IsSVG { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/NodeHighlightRequestedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/NodeHighlightRequestedEvent.cs
index 40e59d065a9bd63644a17fb261c9347c522ad9d3..de433c2b81ee7e39496919f23bcb7e8c304e1f3a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/NodeHighlightRequestedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/NodeHighlightRequestedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
index 9d526fa4a45ecf0cddeb3dc20e8957d64ee8bd51..623161c5b929f118a72e4610591b303acb714576 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
@@ -20,5 +20,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long? Depth { get; set; }
+		/// <summary>
+		/// Gets or sets Whether or not iframes and shadow roots should be traversed when returning the sub-tree (default is false).
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Pierce { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeCommand.cs
index adeb99e9b1e3c3aceb49dd35d12bca30e753ede4..70a3c7ecf66f1a37ae0cf4cfbbbd3664770a6db7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeCommand.cs
@@ -7,19 +7,14 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// <summary>
 	/// Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspectNodeRequested' event upon element selection.
 	/// </summary>
-	[Command(ProtocolName.DOM.SetInspectModeEnabled)]
+	[Command(ProtocolName.DOM.SetInspectMode)]
 	[SupportedBy("Chrome")]
-	public class SetInspectModeEnabledCommand
+	public class SetInspectModeCommand
 	{
 		/// <summary>
-		/// Gets or sets True to enable inspection mode, false to disable it.
+		/// Gets or sets Set an inspection mode.
 		/// </summary>
-		public bool Enabled { get; set; }
-		/// <summary>
-		/// Gets or sets True to enable inspection mode for user agent shadow DOM.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? InspectUAShadowDOM { get; set; }
+		public string Mode { get; set; }
 		/// <summary>
 		/// Gets or sets A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>.
 		/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/EventListener.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/EventListener.cs
index b8299ee49b64ebdb0676450550095494ddc693fd..3070f1af40472340b5e98d32c7b09b286f217788 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/EventListener.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/EventListener.cs
@@ -41,14 +41,17 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 		/// <summary>
 		/// Gets or sets Event handler function value.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Runtime.RemoteObject Handler { get; set; }
 		/// <summary>
 		/// Gets or sets Event original handler function value.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Runtime.RemoteObject OriginalHandler { get; set; }
 		/// <summary>
 		/// Gets or sets Node the listener is added to (if any).
 		/// </summary>
-		public long BackendNodeId { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? BackendNodeId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
index 46975a358f6c35f3bf0bc33a105270af3292b3f2..353df4c35e1f7c2aac0d3ca1ff483c5081e3d586 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
@@ -18,10 +18,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 		/// <summary>
 		/// Gets or sets The maximum depth at which Node children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.
 		/// </summary>
-		public long Depth { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Depth { get; set; }
 		/// <summary>
 		/// Gets or sets Whether or not iframes and shadow roots should be traversed when returning the subtree (default is false). Reports listeners for all contexts if pierce is enabled.
 		/// </summary>
-		public bool Pierce { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Pierce { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs
deleted file mode 100644
index 95db90de570955b2e560e1fa2a116d1cee206f8d..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Information about the async operation.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class AsyncOperation
-	{
-		/// <summary>
-		/// Gets or sets Unique id of the async operation.
-		/// </summary>
-		public long Id { get; set; }
-		/// <summary>
-		/// Gets or sets String description of the async operation.
-		/// </summary>
-		public string Description { get; set; }
-		/// <summary>
-		/// Gets or sets Stack trace where async operation was scheduled.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] StackTrace { get; set; }
-		/// <summary>
-		/// Gets or sets Asynchronous stack trace where async operation was scheduled, if available.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.AsyncStackTrace AsyncStackTrace { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs
deleted file mode 100644
index 5c4c61d775e7d0897ddfeb0e5f009b0c6dffef21..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Fired when an async operation is completed (while in a debugger stepping session).
-	/// </summary>
-	[Event(ProtocolName.Debugger.AsyncOperationCompleted)]
-	[SupportedBy("Chrome")]
-	public class AsyncOperationCompletedEvent
-	{
-		/// <summary>
-		/// Gets or sets ID of the async operation that was completed.
-		/// </summary>
-		public long Id { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs
deleted file mode 100644
index d108ab4d294cf285c428e13f4532b66e2cfe6b7e..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Fired when an async operation is scheduled (while in a debugger stepping session).
-	/// </summary>
-	[Event(ProtocolName.Debugger.AsyncOperationStarted)]
-	[SupportedBy("Chrome")]
-	public class AsyncOperationStartedEvent
-	{
-		/// <summary>
-		/// Gets or sets Information about the async operation.
-		/// </summary>
-		public AsyncOperation Operation { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakLocation.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakLocation.cs
index 2f8067a01abb24f8832084456e9900eed1813a5d..73f4131292c09e2826f164ebc3078232645724dc 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakLocation.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakLocation.cs
@@ -21,10 +21,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// <summary>
 		/// Gets or sets Column number in the script (0-based).
 		/// </summary>
-		public long ColumnNumber { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ColumnNumber { get; set; }
 		/// <summary>
 		/// Gets or sets Type
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Type { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
index 642c31f4db64f88fc835783710f4e8ca776a7fc1..d9150fae8bc984b7700f0c855d508e628afaeb5b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
@@ -15,10 +15,5 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// Gets or sets Location to continue to.
 		/// </summary>
 		public Location Location { get; set; }
-		/// <summary>
-		/// Gets or sets Allows breakpoints at the intemediate positions inside statements.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? InterstatementLocation { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs
deleted file mode 100644
index 9fa809a838b9b6dc5b136cd0760982d167cdabad..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Enables promise tracking, information about <code>Promise</code>s created or updated will now be stored on the backend.
-	/// </summary>
-	[Command(ProtocolName.Debugger.EnablePromiseTracker)]
-	[SupportedBy("Chrome")]
-	public class EnablePromiseTrackerCommand
-	{
-		/// <summary>
-		/// Gets or sets Whether to capture stack traces for promise creation and settlement events (default: false).
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? CaptureStacks { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
index 4f23eb2818e8d4c7cd8e72f9d7aec6e654965932..c2baf27455d1a8f1d329749f3974acce0047a981 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
@@ -30,10 +30,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? IncludeCommandLineAPI { get; set; }
 		/// <summary>
-		/// Gets or sets Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// Gets or sets In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		public bool? Silent { get; set; }
 		/// <summary>
 		/// Gets or sets Whether the result is expected to be a JSON object that should be sent by value.
 		/// </summary>
@@ -44,5 +44,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? GeneratePreview { get; set; }
+		/// <summary>
+		/// Gets or sets Whether to throw an exception if side effect cannot be ruled out during evaluation.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? ThrowOnSideEffect { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
index 7f7f766774ec82ee28fdee33aab7ceefb709d4ac..018f9cea511202d7db181c6c089828ca7452cb59 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
@@ -16,14 +16,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		public Runtime.RemoteObject Result { get; set; }
 		/// <summary>
-		/// Gets or sets True if the result was thrown during the evaluation.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? WasThrown { get; set; }
-		/// <summary>
 		/// Gets or sets Exception details.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public ExceptionDetails ExceptionDetails { get; set; }
+		public Runtime.ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs
deleted file mode 100644
index b481d2aee8e7e8e5dda5a6ae3d63fad56ee90c22..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Detailed information on exception (or error) that was thrown during script compilation or execution.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class ExceptionDetails
-	{
-		/// <summary>
-		/// Gets or sets Exception text.
-		/// </summary>
-		public string Text { get; set; }
-		/// <summary>
-		/// Gets or sets URL of the message origin.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Url { get; set; }
-		/// <summary>
-		/// Gets or sets Script ID of the message origin.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ScriptId { get; set; }
-		/// <summary>
-		/// Gets or sets Line number in the resource that generated this message.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? Line { get; set; }
-		/// <summary>
-		/// Gets or sets Column number in the resource that generated this message.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? Column { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript stack trace for assertions and error messages.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] StackTrace { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs
deleted file mode 100644
index eb6b876ed60ea02716468d8d92f01efa07d80188..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Information about the function.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class FunctionDetails
-	{
-		/// <summary>
-		/// Gets or sets Location of the function, none for native functions.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Location Location { get; set; }
-		/// <summary>
-		/// Gets or sets Name of the function.
-		/// </summary>
-		public string FunctionName { get; set; }
-		/// <summary>
-		/// Gets or sets Whether this is a generator function.
-		/// </summary>
-		public bool IsGenerator { get; set; }
-		/// <summary>
-		/// Gets or sets Scope chain for this closure.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Scope[] ScopeChain { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs
deleted file mode 100644
index 7e7f00eb3ec061f7432a1ad48ff99ad3547b50a9..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Information about the generator object.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class GeneratorObjectDetails
-	{
-		/// <summary>
-		/// Gets or sets Generator function.
-		/// </summary>
-		public Runtime.RemoteObject Function { get; set; }
-		/// <summary>
-		/// Gets or sets Name of the generator function.
-		/// </summary>
-		public string FunctionName { get; set; }
-		/// <summary>
-		/// Gets or sets Current generator object status.
-		/// </summary>
-		public string Status { get; set; }
-		/// <summary>
-		/// Gets or sets If suspended, location where generator function was suspended (e.g. location of the last 'yield'). Otherwise, location of the generator function.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Location Location { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs
deleted file mode 100644
index 56d99cb9834c76794daba0f328014e5ca9faf2b5..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Returns call stack including variables changed since VM was paused. VM must be paused.
-	/// </summary>
-	[CommandResponse(ProtocolName.Debugger.GetBacktrace)]
-	[SupportedBy("Chrome")]
-	public class GetBacktraceCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets Call stack the virtual machine stopped on.
-		/// </summary>
-		public CallFrame[] CallFrames { get; set; }
-		/// <summary>
-		/// Gets or sets Async stack trace, if any.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public StackTrace AsyncStackTrace { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
index 17cf11550f8d63c52acffece041f027113585117..2d1403898fdd069fe8fc146f7b7f7f07e1a78c41 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
@@ -18,10 +18,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// <summary>
 		/// Gets or sets End of range to search possible breakpoint locations in (excluding). When not specifed, end of scripts is used as end of range.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Location End { get; set; }
 		/// <summary>
 		/// Gets or sets Only consider locations which are in the same (non-nested) function as start.
 		/// </summary>
-		public bool RestrictToFunction { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? RestrictToFunction { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs
deleted file mode 100644
index 06135f86e3e3e45cb5b9c809d2487fb7e0bc09e3..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Returns <code>Promise</code> with specified ID.
-	/// </summary>
-	[Command(ProtocolName.Debugger.GetPromiseById)]
-	[SupportedBy("Chrome")]
-	public class GetPromiseByIdCommand
-	{
-		/// <summary>
-		/// Gets or sets PromiseId
-		/// </summary>
-		public long PromiseId { get; set; }
-		/// <summary>
-		/// Gets or sets Symbolic group name that can be used to release multiple objects.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectGroup { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs
deleted file mode 100644
index 80d671937f286c03f4959ad83636b8bff6aa4c9f..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Lists all positions where step-in is possible for a current statement in a specified call frame
-	/// </summary>
-	[CommandResponse(ProtocolName.Debugger.GetStepInPositions)]
-	[SupportedBy("Chrome")]
-	public class GetStepInPositionsCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets experimental
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Location[] StepInPositions { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs
deleted file mode 100644
index 25a4e379f57508c8ec96daeeb38d9b3a7f5a5be2..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload.
-	/// </summary>
-	[Event(ProtocolName.Debugger.GlobalObjectCleared)]
-	[SupportedBy("Chrome")]
-	public class GlobalObjectClearedEvent
-	{
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
index 8f17fb56e284a0307fe0017e09614282564ca810..fc7d6cb9d46dd9c7760aae101c31397825301e63 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
@@ -31,6 +31,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// Gets or sets Async stack trace, if any.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public StackTrace AsyncStackTrace { get; set; }
+		public Runtime.StackTrace AsyncStackTrace { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs
deleted file mode 100644
index 311ccf3accfbeb72722a2a31c1967862df13a14b..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Information about the promise.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class PromiseDetails
-	{
-		/// <summary>
-		/// Gets or sets Unique id of the promise.
-		/// </summary>
-		public long Id { get; set; }
-		/// <summary>
-		/// Gets or sets Status of the promise.
-		/// </summary>
-		public string Status { get; set; }
-		/// <summary>
-		/// Gets or sets Id of the parent promise.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? ParentId { get; set; }
-		/// <summary>
-		/// Gets or sets Top call frame on promise creation.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame CallFrame { get; set; }
-		/// <summary>
-		/// Gets or sets Creation time of the promise.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public double CreationTime { get; set; }
-		/// <summary>
-		/// Gets or sets Settlement time of the promise.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public double SettlementTime { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript stack trace on promise creation.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] CreationStack { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript asynchronous stack trace on promise creation, if available.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.AsyncStackTrace AsyncCreationStack { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript stack trace on promise settlement.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] SettlementStack { get; set; }
-		/// <summary>
-		/// Gets or sets JavaScript asynchronous stack trace on promise settlement, if available.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.AsyncStackTrace AsyncSettlementStack { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs
deleted file mode 100644
index 6bb1d8fd055a13b5bb5f243b666c145725b1a84e..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Fired when a <code>Promise</code> is created, updated or garbage collected.
-	/// </summary>
-	[Event(ProtocolName.Debugger.PromiseUpdated)]
-	[SupportedBy("Chrome")]
-	public class PromiseUpdatedEvent
-	{
-		/// <summary>
-		/// Gets or sets Type of the event.
-		/// </summary>
-		public string EventType { get; set; }
-		/// <summary>
-		/// Gets or sets Information about the updated <code>Promise</code>.
-		/// </summary>
-		public PromiseDetails Promise { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
index 3df7b7b592459160cc033fb5b2c5754bad46bf15..8d621088936f4203a47bfaa2f8eef94e87813867 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
@@ -16,13 +16,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		public CallFrame[] CallFrames { get; set; }
 		/// <summary>
-		/// Gets or sets VM-specific description.
-		/// </summary>
-		public object Result { get; set; }
-		/// <summary>
 		/// Gets or sets Async stack trace, if any.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public StackTrace AsyncStackTrace { get; set; }
+		public Runtime.StackTrace AsyncStackTrace { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs
deleted file mode 100644
index 5c786b7e2057f887450767067c90820d808a7bbe..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Runs script with given id in a given context.
-	/// </summary>
-	[Command(ProtocolName.Debugger.RunScript)]
-	[SupportedBy("Chrome")]
-	public class RunScriptCommand
-	{
-		/// <summary>
-		/// Gets or sets Id of the script to run.
-		/// </summary>
-		public string ScriptId { get; set; }
-		/// <summary>
-		/// Gets or sets Specifies in which isolated context to perform script run. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? ExecutionContextId { get; set; }
-		/// <summary>
-		/// Gets or sets Symbolic group name that can be used to release multiple objects.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectGroup { get; set; }
-		/// <summary>
-		/// Gets or sets Specifies whether script run should stop on exceptions and mute console. Overrides setPauseOnException state.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? DoNotPauseOnExceptionsAndMuteConsole { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
index 7ade59b2de71e9101a1a56fb799e0433254d321e..45f6ebc2a8d27047e8132bf99495747f5486e43a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
@@ -21,14 +21,17 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// <summary>
 		/// Gets or sets Name
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Name { get; set; }
 		/// <summary>
 		/// Gets or sets Location in the source code where scope starts
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Location StartLocation { get; set; }
 		/// <summary>
 		/// Gets or sets Location in the source code where scope ends
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Location EndLocation { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
index e963b42bbc0560a1c7bfa6abdcc1bbf5ca6d15db..b5408faf95fb6a3522723c147b625b93e8b0c233 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
@@ -34,15 +34,18 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		public long EndColumn { get; set; }
 		/// <summary>
-		/// Gets or sets Determines whether this script is a user extension script.
+		/// Gets or sets Specifies script creation context.
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsContentScript { get; set; }
+		public long ExecutionContextId { get; set; }
+		/// <summary>
+		/// Gets or sets Content hash of the script.
+		/// </summary>
+		public string Hash { get; set; }
 		/// <summary>
-		/// Gets or sets Determines whether this script is an internal script.
+		/// Gets or sets Embedder-specific auxiliary data.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsInternalScript { get; set; }
+		public object ExecutionContextAuxData { get; set; }
 		/// <summary>
 		/// Gets or sets URL of source map associated with script (if any).
 		/// </summary>
@@ -53,5 +56,15 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? HasSourceURL { get; set; }
+		/// <summary>
+		/// Gets or sets True, if this script is ES6 module.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? IsModule { get; set; }
+		/// <summary>
+		/// Gets or sets This script length.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Length { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
index bb53716100c874373740b63c89b306b6100482ce..5cfcc016eb42028d7cec141926013d5b2cb19348 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
@@ -34,15 +34,23 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		public long EndColumn { get; set; }
 		/// <summary>
-		/// Gets or sets Determines whether this script is a user extension script.
+		/// Gets or sets Specifies script creation context.
+		/// </summary>
+		public long ExecutionContextId { get; set; }
+		/// <summary>
+		/// Gets or sets Content hash of the script.
+		/// </summary>
+		public string Hash { get; set; }
+		/// <summary>
+		/// Gets or sets Embedder-specific auxiliary data.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsContentScript { get; set; }
+		public object ExecutionContextAuxData { get; set; }
 		/// <summary>
-		/// Gets or sets Determines whether this script is an internal script.
+		/// Gets or sets True, if this script is generated as a result of the live edit operation.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsInternalScript { get; set; }
+		public bool? IsLiveEdit { get; set; }
 		/// <summary>
 		/// Gets or sets URL of source map associated with script (if any).
 		/// </summary>
@@ -53,5 +61,15 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? HasSourceURL { get; set; }
+		/// <summary>
+		/// Gets or sets True, if this script is ES6 module.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? IsModule { get; set; }
+		/// <summary>
+		/// Gets or sets This script length.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Length { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptPosition.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptPosition.cs
index 85975e32fab9bffbbc2872871abb03055c610f24..d80265c6614acc8adacb8792da50cd618fe661aa 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptPosition.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptPosition.cs
@@ -5,19 +5,18 @@ using System.Collections.Generic;
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
-	/// Collection entry.
+	/// Location in the source code.
 	/// </summary>
 	[SupportedBy("Chrome")]
-	public class CollectionEntry
+	public class ScriptPosition
 	{
 		/// <summary>
-		/// Gets or sets Entry key of a map-like collection, otherwise not provided.
+		/// Gets or sets LineNumber
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject Key { get; set; }
+		public long LineNumber { get; set; }
 		/// <summary>
-		/// Gets or sets Entry value.
+		/// Gets or sets ColumnNumber
 		/// </summary>
-		public Runtime.RemoteObject Value { get; set; }
+		public long ColumnNumber { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
index b1b9a3d430839711b6ed458ab8eb65368618cef1..98677b66b078e91efaa5e17db4310bc388190821 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
@@ -20,9 +20,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// </summary>
 		public string ScriptSource { get; set; }
 		/// <summary>
-		/// Gets or sets  If true the change will not actually be applied. Preview mode may be used to get result description without actually modifying the code.
+		/// Gets or sets  If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? Preview { get; set; }
+		public bool? DryRun { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
index 6fc0b8c9b4d9961c06fbd023401fa75847ea8f68..33a9acdd7b1aa669def5990212b969dfefaf520d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
@@ -17,14 +17,19 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public CallFrame[] CallFrames { get; set; }
 		/// <summary>
-		/// Gets or sets VM-specific description of the changes applied.
+		/// Gets or sets Whether current call stack  was modified after applying the changes.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public object Result { get; set; }
+		public bool? StackChanged { get; set; }
 		/// <summary>
 		/// Gets or sets Async stack trace, if any.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public StackTrace AsyncStackTrace { get; set; }
+		public Runtime.StackTrace AsyncStackTrace { get; set; }
+		/// <summary>
+		/// Gets or sets Exception details if any.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public Runtime.ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs
deleted file mode 100644
index 1c14f6da19d57af148e7f741d00ce5902cecc6bd..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Error data for setScriptSource command. compileError is a case type for uncompilable script source error.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class SetScriptSourceError
-	{
-		/// <summary>
-		/// Gets or sets CompileError
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public object CompileError { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
index d515cc4f091e9dc07a6b611019d8ba3b504a4b02..a85bf6428487b17f55180ca6b84d5a0d2aad8a9f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
@@ -5,7 +5,7 @@ using System.Collections.Generic;
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
-	/// Changes value of variable in a callframe or a closure. Either callframe or function must be specified. Object-based scopes are not supported and must be mutated manually.
+	/// Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetVariableValue)]
 	[SupportedBy("Chrome")]
@@ -26,12 +26,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 		/// <summary>
 		/// Gets or sets Id of callframe that holds variable.
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string CallFrameId { get; set; }
-		/// <summary>
-		/// Gets or sets Object id of closure (function) that holds variable.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FunctionObjectId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs
deleted file mode 100644
index 598829371daf350e731fa9cb447cdd482e71f494..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
-{
-	/// <summary>
-	/// Makes backend skip steps in the sources with names matching given pattern. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
-	/// </summary>
-	[Command(ProtocolName.Debugger.SkipStackFrames)]
-	[SupportedBy("Chrome")]
-	public class SkipStackFramesCommand
-	{
-		/// <summary>
-		/// Gets or sets Regular expression defining the scripts to ignore while stepping.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Script { get; set; }
-		/// <summary>
-		/// Gets or sets True, if all content scripts should be ignored.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? SkipContentScripts { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
index 9577979539fdfa311677945096c7efb1e7937997..500fe4b56754bfffee7fd92978cf2cef430053b8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
@@ -14,6 +14,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 		/// <summary>
 		/// Gets or sets RGBA of the default background color. If not specified, any existing override will be cleared.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public DOM.RGBA Color { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
index a7b431905f9567052ca730d87a73b93adbbb2cd9..df73e8e5dd3bad54bbec8dbd043f220c39be4603 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
@@ -49,22 +49,27 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 		/// <summary>
 		/// Gets or sets Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long ScreenWidth { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ScreenWidth { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long ScreenHeight { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ScreenHeight { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long PositionX { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? PositionX { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long PositionY { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? PositionY { get; set; }
 		/// <summary>
 		/// Gets or sets Screen orientation override.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public ScreenOrientation ScreenOrientation { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
index f36aa02e30d7954bab4c3798299957c3ad799f84..96562f0a0041128f35cfc785fbd49957c4999bad 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
@@ -18,6 +18,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 		/// <summary>
 		/// Gets or sets If set, after this many virtual milliseconds have elapsed virtual time will be paused and a virtualTimeBudgetExpired event is sent.
 		/// </summary>
-		public long Budget { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Budget { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs
deleted file mode 100644
index 7c8758836dc5d72089d60356490f29c1163cec66..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
-{
-	/// <summary>
-	/// Fired when a visible page viewport has changed. Only fired when device metrics are overridden.
-	/// </summary>
-	[Event(ProtocolName.Emulation.ViewportChanged)]
-	[SupportedBy("Chrome")]
-	public class ViewportChangedEvent
-	{
-		/// <summary>
-		/// Gets or sets Viewport description.
-		/// </summary>
-		public Viewport Viewport { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/VirtualTimeBudgetExpiredEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/VirtualTimeBudgetExpiredEvent.cs
index d13e0018677d3d714c360fc5f25933b939fefd42..15d2a7c665d2e56a8c0200581165cbdbaa95132a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/VirtualTimeBudgetExpiredEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/VirtualTimeBudgetExpiredEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs
deleted file mode 100644
index 8988af25f9616c9d8e4dc2a4a44f2eaf0c0bf3b8..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Represents a browser side file or directory.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class Entry
-	{
-		/// <summary>
-		/// Gets or sets filesystem: URL for the entry.
-		/// </summary>
-		public string Url { get; set; }
-		/// <summary>
-		/// Gets or sets The name of the file or directory.
-		/// </summary>
-		public string Name { get; set; }
-		/// <summary>
-		/// Gets or sets True if the entry is a directory.
-		/// </summary>
-		public bool IsDirectory { get; set; }
-		/// <summary>
-		/// Gets or sets MIME type of the entry, available for a file only.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string MimeType { get; set; }
-		/// <summary>
-		/// Gets or sets ResourceType of the entry, available for a file only.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Page.ResourceType ResourceType { get; set; }
-		/// <summary>
-		/// Gets or sets True if the entry is a text file.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsTextFile { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs
deleted file mode 100644
index 0e0424b8878b5c9aa0898fa73a8057c485bff515..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Returns content of the directory.
-	/// </summary>
-	[CommandResponse(ProtocolName.FileSystem.RequestDirectoryContent)]
-	[SupportedBy("Chrome")]
-	public class RequestDirectoryContentCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets 0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value.
-		/// </summary>
-		public long ErrorCode { get; set; }
-		/// <summary>
-		/// Gets or sets Contains all entries on directory if the command completed successfully.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Entry[] Entries { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs
deleted file mode 100644
index 6cbbb2dcb5fdb1bd2de86359b063d279e71f4b1a..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Returns content of the file. Result should be sliced into [start, end).
-	/// </summary>
-	[Command(ProtocolName.FileSystem.RequestFileContent)]
-	[SupportedBy("Chrome")]
-	public class RequestFileContentCommand
-	{
-		/// <summary>
-		/// Gets or sets URL of the file that the frontend is requesting to read from.
-		/// </summary>
-		public string Url { get; set; }
-		/// <summary>
-		/// Gets or sets True if the content should be read as text, otherwise the result will be returned as base64 encoded text.
-		/// </summary>
-		public bool ReadAsText { get; set; }
-		/// <summary>
-		/// Gets or sets Specifies the start of range to read.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? Start { get; set; }
-		/// <summary>
-		/// Gets or sets Specifies the end of range to read exclusively.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? End { get; set; }
-		/// <summary>
-		/// Gets or sets Overrides charset of the content when content is served as text.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Charset { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs
deleted file mode 100644
index 017689770722e50f0fa79d8734dcef307c3982e8..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Returns content of the file. Result should be sliced into [start, end).
-	/// </summary>
-	[CommandResponse(ProtocolName.FileSystem.RequestFileContent)]
-	[SupportedBy("Chrome")]
-	public class RequestFileContentCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets 0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value.
-		/// </summary>
-		public long ErrorCode { get; set; }
-		/// <summary>
-		/// Gets or sets Content of the file.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Content { get; set; }
-		/// <summary>
-		/// Gets or sets Charset of the content if it is served as text.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Charset { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs
deleted file mode 100644
index 9b97eb917619eca242c3ef1b79479068e40860cd..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Returns root directory of the FileSystem, if exists.
-	/// </summary>
-	[CommandResponse(ProtocolName.FileSystem.RequestFileSystemRoot)]
-	[SupportedBy("Chrome")]
-	public class RequestFileSystemRootCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets 0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value.
-		/// </summary>
-		public long ErrorCode { get; set; }
-		/// <summary>
-		/// Gets or sets Contains root of the requested FileSystem if the command completed successfully.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Entry Root { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs
deleted file mode 100644
index 2e52e73f3fba295ffa01b15071edeb9ebd7870da..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
-{
-	/// <summary>
-	/// Returns metadata of the entry.
-	/// </summary>
-	[CommandResponse(ProtocolName.FileSystem.RequestMetadata)]
-	[SupportedBy("Chrome")]
-	public class RequestMetadataCommandResponse
-	{
-		/// <summary>
-		/// Gets or sets 0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value.
-		/// </summary>
-		public long ErrorCode { get; set; }
-		/// <summary>
-		/// Gets or sets Contains metadata of the entry if the command completed successfully.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Metadata Metadata { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
index ae1eff4da209a0c02446e9dfd8147e194d2cbc2e..0f7a69d39d85cef42ceea91533758b1f2fed441c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
@@ -11,6 +11,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 		/// <summary>
 		/// Gets or sets Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public double SamplingInterval { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
index 77a89938dbfff59256fa9437df801fe350777d9a..3e0a5ebd8e5057104b45a726f903246d7c12ff45 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
@@ -18,10 +18,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IO
 		/// <summary>
 		/// Gets or sets Seek to the specified offset before reading (if not specificed, proceed with offset following the last read).
 		/// </summary>
-		public long Offset { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Offset { get; set; }
 		/// <summary>
 		/// Gets or sets Maximum number of bytes to read (left upon the agent discretion if not specified).
 		/// </summary>
-		public long Size { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Size { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
index 6ffe7318999c40f28f7a09ad03217b3b6388ad4a..04ffa562a37cd5fea991c93518ea5f19ab063a8d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
@@ -48,6 +48,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 		/// <summary>
 		/// Gets or sets Unique DOM defined string value describing the meaning of the key in the context of active modifiers, keyboard layout, etc (e.g., 'AltGr') (default: "").
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Key { get; set; }
 		/// <summary>
 		/// Gets or sets Windows virtual key code (default: 0).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
index 45c565f57a636bfda2ca8650cf13f21d168db5cd..b28f8b45df22cbc6ca0d1fc37f3c2f8e071214f8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
@@ -57,14 +57,17 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 		/// <summary>
 		/// Gets or sets The number of times to repeat the gesture (default: 0).
 		/// </summary>
-		public long RepeatCount { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? RepeatCount { get; set; }
 		/// <summary>
 		/// Gets or sets The number of milliseconds delay between each repeat. (default: 250).
 		/// </summary>
-		public long RepeatDelayMs { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? RepeatDelayMs { get; set; }
 		/// <summary>
 		/// Gets or sets The name of the interaction markers to generate, if not empty (default: "").
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string InteractionMarkerName { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs
deleted file mode 100644
index 6f3911671459dece24fa7cff3661510565937948..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
-{
-	[Event(ProtocolName.Inspector.EvaluateForTestInFrontend)]
-	[SupportedBy("Chrome")]
-	public class EvaluateForTestInFrontendEvent
-	{
-		/// <summary>
-		/// Gets or sets TestCallId
-		/// </summary>
-		public long TestCallId { get; set; }
-		/// <summary>
-		/// Gets or sets Script
-		/// </summary>
-		public string Script { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs
deleted file mode 100644
index 59f1a310c0ef746120f0db4f907515bdb38fdb17..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
-{
-	[Event(ProtocolName.Inspector.Inspect)]
-	[SupportedBy("Chrome")]
-	public class InspectEvent
-	{
-		/// <summary>
-		/// Gets or sets Object
-		/// </summary>
-		public Runtime.RemoteObject Object { get; set; }
-		/// <summary>
-		/// Gets or sets Hints
-		/// </summary>
-		public object Hints { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/EntryAddedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Log/EntryAddedEvent.cs
index 7a7eb6c9fe043cf608f4a787c53a8901263c1b4e..28c26b565e765f3b581b0a336c4376f68ac59e43 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/EntryAddedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/EntryAddedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/LogEntry.cs b/source/ChromeDevTools/Protocol/Chrome/Log/LogEntry.cs
index d13f095606387d9a38b0293ae44dd0dc832bba2c..909d7282d33412bb478ade11c9b4414d2bc89f6c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/LogEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/LogEntry.cs
@@ -29,22 +29,27 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 		/// <summary>
 		/// Gets or sets URL of the resource if known.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Url { get; set; }
 		/// <summary>
 		/// Gets or sets Line number in the resource.
 		/// </summary>
-		public long LineNumber { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? LineNumber { get; set; }
 		/// <summary>
 		/// Gets or sets JavaScript stack trace.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Runtime.StackTrace StackTrace { get; set; }
 		/// <summary>
 		/// Gets or sets Identifier of the network request associated with this entry.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string NetworkRequestId { get; set; }
 		/// <summary>
 		/// Gets or sets Identifier of the worker associated with this entry.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string WorkerId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
index 349c560115a079e1e273f1c8ad71c48552429655..53c934194af4017e872eeb0bbefd31bdb1e2c1db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
@@ -49,6 +49,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets Cookie SameSite type.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public CookieSameSite SameSite { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
index 00f3cc2c1c2e012656014de2adb9f573493a4706..5787cbc2b0fd2cc5380f7e4429290b3f0d76ca9a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
@@ -30,6 +30,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets Connection type if known.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string ConnectionType { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
index 9ed2bcc78ba98e10b267afacb77dab4788b63d75..93921fb39353cb2b1dc9a1e33ccd9deff5ea3d20 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
@@ -14,10 +14,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets Buffer size in bytes to use when preserving network payloads (XHRs, etc).
 		/// </summary>
-		public long MaxTotalBufferSize { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? MaxTotalBufferSize { get; set; }
 		/// <summary>
 		/// Gets or sets Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).
 		/// </summary>
-		public long MaxResourceBufferSize { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? MaxResourceBufferSize { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
index 3e3b405877d1de5fff76b723eebedb92eb077911..736c9b884a540ce6f890703f55fd8952bb46be14 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
@@ -14,6 +14,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets The list of URLs for which applicable cookies will be fetched
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] Urls { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
index 65cd26e823d0cb29f0441b32c144eb24c791db93..d2212b8de921c8e39b6672fc57cebdd19883b9aa 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
@@ -18,21 +18,16 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// Gets or sets Initiator JavaScript stack trace, set for Script only.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] StackTrace { get; set; }
+		public Runtime.StackTrace Stack { get; set; }
 		/// <summary>
 		/// Gets or sets Initiator URL, set for Parser type only.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Url { get; set; }
 		/// <summary>
-		/// Gets or sets Initiator line number, set for Parser type only.
+		/// Gets or sets Initiator line number, set for Parser type only (0-based).
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public double LineNumber { get; set; }
-		/// <summary>
-		/// Gets or sets Initiator asynchronous JavaScript stack trace, if available.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.AsyncStackTrace AsyncStackTrace { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
index ed295f30ed2ccf80968f2fd9fc1c62da02120d64..6e3df63e2d0f87a034a2347d19238ca214cad8ce 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
@@ -30,5 +30,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? Canceled { get; set; }
+		/// <summary>
+		/// Gets or sets The reason why loading was blocked, if any.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public BlockedReason BlockedReason { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
index bf96f5c4da81e1932af988b47e3e115ac6c6a08c..d34fa12a0fd6f7f072334c47634127d4a9f46c73 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
@@ -30,6 +30,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets The mixed content status of the request, as defined in http://www.w3.org/TR/mixed-content/
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string MixedContentType { get; set; }
 		/// <summary>
 		/// Gets or sets Priority of the resource request at the time request is sent.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ResourceChangedPriorityEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ResourceChangedPriorityEvent.cs
index 35cdf18f8abda5549ede1abe4c64ae2f8e2bf827..551ced60c1545a835d9bf8788481e9e6f503d28c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/ResourceChangedPriorityEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ResourceChangedPriorityEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
index b1d058b0d7d6c7dc2e62d45b8b16e9031865462c..634d56b8ffe1912840631b771450200e3c277b10 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
@@ -94,6 +94,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets Security details for the request.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public SecurityDetails SecurityDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SecurityDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SecurityDetails.cs
index f0dfe03cf41bab71e9819e9f9c1a887a22b03622..e82b47087c79701699994d1ace737a31c4677de6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SecurityDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SecurityDetails.cs
@@ -21,6 +21,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets (EC)DH group used by the connection, if applicable.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string KeyExchangeGroup { get; set; }
 		/// <summary>
 		/// Gets or sets Cipher name.
@@ -29,6 +30,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets TLS MAC. Note that AEAD ciphers do not have separate MACs.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Mac { get; set; }
 		/// <summary>
 		/// Gets or sets Certificate ID value.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
index 520b1d91f648e54a277b249b18c8ac22fd93636f..ebd87bb6e5dc170ec81688cf8d40051df48a278d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
@@ -26,26 +26,32 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets If omitted, the cookie becomes a host-only cookie.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Domain { get; set; }
 		/// <summary>
 		/// Gets or sets Defaults to the path portion of the url parameter.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Path { get; set; }
 		/// <summary>
 		/// Gets or sets Defaults ot false.
 		/// </summary>
-		public bool Secure { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Secure { get; set; }
 		/// <summary>
 		/// Gets or sets Defaults to false.
 		/// </summary>
-		public bool HttpOnly { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? HttpOnly { get; set; }
 		/// <summary>
 		/// Gets or sets Defaults to browser default behavior.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string SameSite { get; set; }
 		/// <summary>
 		/// Gets or sets If omitted, the cookie becomes a session cookie.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public double ExpirationDate { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
index ea7a8027f792a5deca1988657a7d00495d49610e..be812cc616e57d20b7569efb9410f88497ad9747 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
@@ -20,6 +20,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 		/// <summary>
 		/// Gets or sets Request initiator.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Initiator Initiator { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
index 01035dddb451d7c80164c0224f7f37d3f7a663fd..d3599a8b5e053d58b291ec08f946f16c3221b836 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
@@ -14,10 +14,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Image compression format (defaults to png).
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Format { get; set; }
 		/// <summary>
 		/// Gets or sets Compression quality from range [0..100] (jpeg only).
 		/// </summary>
-		public long Quality { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Quality { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ConfigureOverlayCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ConfigureOverlayCommand.cs
index fe5c6739bff1dd58ab61c27a5f8908dfbc3794c5..ddb6c17df5d56cfabf2e192b62b445dff5ecc063 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ConfigureOverlayCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ConfigureOverlayCommand.cs
@@ -14,10 +14,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Whether overlay should be suspended and not consume any resources.
 		/// </summary>
-		public bool Suspended { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Suspended { get; set; }
 		/// <summary>
 		/// Gets or sets Overlay message to display.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Message { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameResource.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResource.cs
index 827b077f00f78ee1ff3c848b33ae77fa62143593..b166f37c0ee0f95ca28389671426a78c4f438b8b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/FrameResource.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResource.cs
@@ -25,18 +25,22 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets last-modified timestamp as reported by server.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public double LastModified { get; set; }
 		/// <summary>
 		/// Gets or sets Resource content size.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public double ContentSize { get; set; }
 		/// <summary>
 		/// Gets or sets True if the resource failed to load.
 		/// </summary>
-		public bool Failed { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Failed { get; set; }
 		/// <summary>
 		/// Gets or sets True if the resource was canceled during loading.
 		/// </summary>
-		public bool Canceled { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Canceled { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
index 6cace98639670c37ec48132f99c9cc37554eb425..f58ae77c367f553fe9c5188985ae45a89fcd043f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
@@ -19,35 +19,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public FrameResourceTree[] ChildFrames { get; set; }
-		public class ResourcesArray
-		{
-		/// <summary>
-		/// Gets or sets Resource URL.
-		/// </summary>
-		public string Url { get; set; }
-		/// <summary>
-		/// Gets or sets Type of this resource.
-		/// </summary>
-		public ResourceType Type { get; set; }
-		/// <summary>
-		/// Gets or sets Resource mimeType as determined by the browser.
-		/// </summary>
-		public string MimeType { get; set; }
-		/// <summary>
-		/// Gets or sets True if the resource failed to load.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? Failed { get; set; }
-		/// <summary>
-		/// Gets or sets True if the resource was canceled during loading.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? Canceled { get; set; }
-		}
-
 		/// <summary>
 		/// Gets or sets Information about frame resources.
 		/// </summary>
-		public ResourcesArray[] Resources { get; set; }
+		public FrameResource[] Resources { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommandResponse.cs
index d9e38cfe8e045b7e0b40c463e3955197c9020efd..8371023f67ec8f958e6d722ff722d9dbeca515da 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommandResponse.cs
@@ -19,6 +19,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Manifest content.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Data { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
index 388f6d4b1ee62a7cb5aaed5da9e0898fb6cef49d..a48af94a979b216ea888377af51686cb1c2f01f0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
@@ -18,6 +18,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Referrer URL.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Referrer { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/NavigationRequestedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigationRequestedEvent.cs
index 6dfccb85ab2b05ef0eacf0ba12d50b9e6f3322c8..177a223d0f8e3326dc0d0552b67dd519509e0e10 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/NavigationRequestedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigationRequestedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommandResponse.cs
index b9aebc8acf90e3e0d3ca0a1b84105e90960bc69e..75329521d8c3cef0e0774adb47b7051a51f8d3cd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommandResponse.cs
@@ -5,16 +5,15 @@ using System.Collections.Generic;
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
-	/// Sets overlay message.
+	/// Print page as pdf.
 	/// </summary>
-	[Command(ProtocolName.Page.SetOverlayMessage)]
+	[CommandResponse(ProtocolName.Page.PrintToPDF)]
 	[SupportedBy("Chrome")]
-	public class SetOverlayMessageCommand
+	public class PrintToPDFCommandResponse
 	{
 		/// <summary>
-		/// Gets or sets Overlay message to display when paused in debugger.
+		/// Gets or sets Base64-encoded pdf data.
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Message { get; set; }
+		public string Data { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
index a9dfb3c3039e26322e93a11a7feb4c206562019e..c8f2bffb58351406655362d1dae5dc50ec4bfd3a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
@@ -20,7 +20,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Frame number.
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? FrameNumber { get; set; }
+		public long SessionId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
index 1cae559eaa1b77c1d1332daf353df6d23e41fd87..94052764e26bbb824740d08d9e327df38febffaa 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
@@ -49,22 +49,27 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// <summary>
 		/// Gets or sets Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long ScreenWidth { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ScreenWidth { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long ScreenHeight { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ScreenHeight { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long PositionX { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? PositionX { get; set; }
 		/// <summary>
 		/// Gets or sets Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|.
 		/// </summary>
-		public long PositionY { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? PositionY { get; set; }
 		/// <summary>
 		/// Gets or sets Screen orientation override.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public Emulation.ScreenOrientation ScreenOrientation { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
index 1a3e61725d880b7fa5ae388dc0e2b2615c7c3b3c..67ee4c2ed89207ca13aee5c929504080eaefa51f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
@@ -31,5 +31,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long? MaxHeight { get; set; }
+		/// <summary>
+		/// Gets or sets Send every n-th frame.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? EveryNthFrame { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs
deleted file mode 100644
index 37fe165b60f602e5d8ca8c6510e654d66a730c52..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
-{
-	[Event(ProtocolName.Power.DataAvailable)]
-	[SupportedBy("Chrome")]
-	public class DataAvailableEvent
-	{
-		/// <summary>
-		/// Gets or sets List of power events.
-		/// </summary>
-		public PowerEvent[] Value { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/Profile.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/Profile.cs
index b44657ded7734cd3df86222874e19401a7000ad3..76a480f16c62aec852594d4d31cf6d4c538220a6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/Profile.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/Profile.cs
@@ -8,18 +8,18 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// Profile.
 	/// </summary>
 	[SupportedBy("Chrome")]
-	public class CPUProfile
+	public class Profile
 	{
 		/// <summary>
-		/// Gets or sets Head
+		/// Gets or sets The list of profile nodes. First item is the root node.
 		/// </summary>
-		public CPUProfileNode Head { get; set; }
+		public ProfileNode[] Nodes { get; set; }
 		/// <summary>
-		/// Gets or sets Profiling start time in seconds.
+		/// Gets or sets Profiling start timestamp in microseconds.
 		/// </summary>
 		public double StartTime { get; set; }
 		/// <summary>
-		/// Gets or sets Profiling end time in seconds.
+		/// Gets or sets Profiling end timestamp in microseconds.
 		/// </summary>
 		public double EndTime { get; set; }
 		/// <summary>
@@ -28,9 +28,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long[] Samples { get; set; }
 		/// <summary>
-		/// Gets or sets Timestamps of the samples in microseconds.
+		/// Gets or sets Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public double[] Timestamps { get; set; }
+		public long[] TimeDeltas { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/ProfileNode.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/ProfileNode.cs
index 3beec746cd1ba789f11d147a4173309f2a4ed8bb..d85fa4115a6e86a007ecf50e6e1550471557f4f5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/ProfileNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/ProfileNode.cs
@@ -21,18 +21,22 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 		/// <summary>
 		/// Gets or sets Number of samples where this node was on top of the call stack.
 		/// </summary>
-		public long HitCount { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? HitCount { get; set; }
 		/// <summary>
 		/// Gets or sets Child node ids.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long[] Children { get; set; }
 		/// <summary>
 		/// Gets or sets The reason of being not optimized. The function may be deoptimized or marked as don't optimize.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string DeoptReason { get; set; }
 		/// <summary>
 		/// Gets or sets An array of source position ticks.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public PositionTickInfo[] PositionTicks { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowViewportSizeOnResizeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowViewportSizeOnResizeCommand.cs
index e3a869ed814475468cc02c2ff61bba3b068e2db3..1442c25aee5ea49beab66bf12650505195024340 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowViewportSizeOnResizeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowViewportSizeOnResizeCommand.cs
@@ -2,12 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Paints viewport size upon main frame resize.
 	/// </summary>
-	[Command(ProtocolName.Page.SetShowViewportSizeOnResize)]
+	[Command(ProtocolName.Rendering.SetShowViewportSizeOnResize)]
 	[SupportedBy("Chrome")]
 	public class SetShowViewportSizeOnResizeCommand
 	{
@@ -15,10 +15,5 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 		/// Gets or sets Whether to paint size or not.
 		/// </summary>
 		public bool Show { get; set; }
-		/// <summary>
-		/// Gets or sets Whether to paint grid as well.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? ShowGrid { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
index 7d6629d31c8c8805cd83c29834ae46eb7f868a9d..3b8dae0ac397b3627cc80aaf5512df46098e8aaf 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
@@ -18,10 +18,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Whether the result is expected to be a JSON object that should be sent by value.
 		/// </summary>
-		public bool ReturnByValue { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? ReturnByValue { get; set; }
 		/// <summary>
 		/// Gets or sets Whether preview should be generated for the result.
 		/// </summary>
-		public bool GeneratePreview { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? GeneratePreview { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommandResponse.cs
index dfa789104722b5afe3181ac22dd2bf7654c2e452..a9978d51566adfc23c73ddf3bab8fac7ee1479ee 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommandResponse.cs
@@ -18,6 +18,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Exception details if stack strace is available.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
index 515af4273e36aab1fe80079f939dd7dad7b132a8..a015ba92a0559fc51685082966336c0c41f0e96d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
@@ -5,25 +5,25 @@ using System.Collections.Generic;
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
-	/// Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.
+	/// Represents function call argument. Either remote object id <code>objectId</code>, primitive <code>value</code>, unserializable primitive value or neither of (for undefined) them should be specified.
 	/// </summary>
 	[SupportedBy("Chrome")]
 	public class CallArgument
 	{
 		/// <summary>
-		/// Gets or sets Primitive value, or description string if the value can not be JSON-stringified (like NaN, Infinity, -Infinity, -0).
+		/// Gets or sets Primitive value.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public object Value { get; set; }
 		/// <summary>
-		/// Gets or sets Remote object handle.
+		/// Gets or sets Primitive value which can not be JSON-stringified.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectId { get; set; }
+		public UnserializableValue UnserializableValue { get; set; }
 		/// <summary>
-		/// Gets or sets Object type.
+		/// Gets or sets Remote object handle.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Type { get; set; }
+		public string ObjectId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
index a8ce50bc8e8485fa53632a2ed2ffe205bd7ecdb3..3be066a4603253b5ccd678066e9cba8cc7eff852 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
@@ -25,10 +25,10 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public CallArgument[] Arguments { get; set; }
 		/// <summary>
-		/// Gets or sets Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// Gets or sets In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		public bool? Silent { get; set; }
 		/// <summary>
 		/// Gets or sets Whether the result is expected to be a JSON object which should be sent by value.
 		/// </summary>
@@ -39,5 +39,15 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? GeneratePreview { get; set; }
+		/// <summary>
+		/// Gets or sets Whether execution should be treated as initiated by user in the UI.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? UserGesture { get; set; }
+		/// <summary>
+		/// Gets or sets Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? AwaitPromise { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
index a41117123fddceeeab45b95fca134edc64ba6ac7..7bed517fee15f0b20e6699732a3b92bdd6449d43 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
@@ -16,9 +16,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		public RemoteObject Result { get; set; }
 		/// <summary>
-		/// Gets or sets True if the result was thrown during the evaluation.
+		/// Gets or sets Exception details.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? WasThrown { get; set; }
+		public ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ConsoleAPICalledEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ConsoleAPICalledEvent.cs
index 12c6810247de4126b9c9edbf5f8eb1c0f15f6ed5..f1d70d396f765144172c5de407d9088a363308eb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ConsoleAPICalledEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ConsoleAPICalledEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
@@ -28,6 +28,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Stack trace captured when the call was made.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public StackTrace StackTrace { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
index 9026149f940f8ed17f56bfb9a266fd9fa81e0371..53402a06a576528075f1d9b6af8da7cb8ab0d9b8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
@@ -26,12 +26,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? IncludeCommandLineAPI { get; set; }
 		/// <summary>
-		/// Gets or sets Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// Gets or sets In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		public bool? Silent { get; set; }
 		/// <summary>
-		/// Gets or sets Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page.
+		/// Gets or sets Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public long? ContextId { get; set; }
@@ -45,5 +45,15 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public bool? GeneratePreview { get; set; }
+		/// <summary>
+		/// Gets or sets Whether execution should be treated as initiated by user in the UI.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? UserGesture { get; set; }
+		/// <summary>
+		/// Gets or sets Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? AwaitPromise { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
index 702bda706e41ca810c75ee0781b780ca7d29a508..1f7d767c87b981dbf880d255dc7b7d3d898821d9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
@@ -16,14 +16,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		public RemoteObject Result { get; set; }
 		/// <summary>
-		/// Gets or sets True if the result was thrown during the evaluation.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? WasThrown { get; set; }
-		/// <summary>
 		/// Gets or sets Exception details.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Debugger.ExceptionDetails ExceptionDetails { get; set; }
+		public ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs
deleted file mode 100644
index 59c441a00fbad3e1bdde73674902b47c995ea48b..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
-{
-	/// <summary>
-	/// Object event listener.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class EventListener
-	{
-		/// <summary>
-		/// Gets or sets <code>EventListener</code>'s type.
-		/// </summary>
-		public string Type { get; set; }
-		/// <summary>
-		/// Gets or sets <code>EventListener</code>'s useCapture.
-		/// </summary>
-		public bool UseCapture { get; set; }
-		/// <summary>
-		/// Gets or sets Handler code location.
-		/// </summary>
-		public Debugger.Location Location { get; set; }
-		/// <summary>
-		/// Gets or sets Event handler function value.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Runtime.RemoteObject Handler { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionDetails.cs
index 0d2b0ba7979512009edd40c39126f969411662fa..ef3b64d91262cae683394762983d0c8b1055d726 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionDetails.cs
@@ -29,22 +29,27 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Script ID of the exception location.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string ScriptId { get; set; }
 		/// <summary>
 		/// Gets or sets URL of the exception location, to be used when the script was not reported.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Url { get; set; }
 		/// <summary>
 		/// Gets or sets JavaScript stack trace if available.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public StackTrace StackTrace { get; set; }
 		/// <summary>
 		/// Gets or sets Exception object if available.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public RemoteObject Exception { get; set; }
 		/// <summary>
 		/// Gets or sets Identifier of the context where exception happened.
 		/// </summary>
-		public long ExecutionContextId { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ExecutionContextId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionRevokedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionRevokedEvent.cs
index 78691563a12ca92faf3306281da323dde6ee5964..202cfcb37ead423aa07f3a3723d953ff4e16561a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionRevokedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionRevokedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionThrownEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionThrownEvent.cs
index 380c89bb028b47973b33ee0212702245792ebfaa..a695600b47503c4f4bd96a0dab0b4163283f6912 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionThrownEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExceptionThrownEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
index 38c8116620053477c5449804e3b0da9c7cedda02..bc0d48a53f564732c9273ad1f725117fd521927b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
@@ -15,11 +15,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		public long Id { get; set; }
 		/// <summary>
-		/// Gets or sets True if this is a context where inpspected web page scripts run. False if it is a content script isolated context.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsPageContext { get; set; }
-		/// <summary>
 		/// Gets or sets Execution context origin.
 		/// </summary>
 		public string Origin { get; set; }
@@ -28,8 +23,9 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// </summary>
 		public string Name { get; set; }
 		/// <summary>
-		/// Gets or sets Id of the owning frame. May be an empty string if the context is not associated with a frame.
+		/// Gets or sets Embedder-specific auxiliary data.
 		/// </summary>
-		public string FrameId { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public object AuxData { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs
deleted file mode 100644
index ca02539670105143395d2a0799614df0994cad8d..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
-{
-	/// <summary>
-	/// Returns event listeners of the given object.
-	/// </summary>
-	[Command(ProtocolName.Runtime.GetEventListeners)]
-	[SupportedBy("Chrome")]
-	public class GetEventListenersCommand
-	{
-		/// <summary>
-		/// Gets or sets Identifier of the object to return listeners for.
-		/// </summary>
-		public string ObjectId { get; set; }
-		/// <summary>
-		/// Gets or sets Symbolic group name for handler value. Handler value is not returned without this parameter specified.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string ObjectGroup { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
index 4ab501495abf358f3e364505d9f3d900abce0bc3..db45ce6689caf8b5e0d437c86bbc7c1bc8993cc3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
@@ -23,6 +23,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Exception details.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public ExceptionDetails ExceptionDetails { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/InspectRequestedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/InspectRequestedEvent.cs
index f4c6371d0f188c625e6cbfca53a25048d0053dfd..42340473b517a6502dd76a943c86f17e7ceaf2a2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/InspectRequestedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/InspectRequestedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
index a900634ec49e601842d896d1f7f939a9552e89a5..401fe9cb86aa1225af787f40c3b2fc09c1a9530b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
@@ -32,6 +32,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Primitive value which can not be JSON-stringified does not have <code>value</code>, but gets this property.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public UnserializableValue UnserializableValue { get; set; }
 		/// <summary>
 		/// Gets or sets String representation of the object.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
index 0df7fb4012c1b36c958cad74dec93a6e94b76d7f..3534bd0720ba87633a3ff8336abce7abc5258369 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
@@ -18,30 +18,37 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 		/// <summary>
 		/// Gets or sets Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
 		/// </summary>
-		public long ExecutionContextId { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? ExecutionContextId { get; set; }
 		/// <summary>
 		/// Gets or sets Symbolic group name that can be used to release multiple objects.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string ObjectGroup { get; set; }
 		/// <summary>
 		/// Gets or sets In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
 		/// </summary>
-		public bool Silent { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? Silent { get; set; }
 		/// <summary>
 		/// Gets or sets Determines whether Command Line API should be available during the evaluation.
 		/// </summary>
-		public bool IncludeCommandLineAPI { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? IncludeCommandLineAPI { get; set; }
 		/// <summary>
 		/// Gets or sets Whether the result is expected to be a JSON object which should be sent by value.
 		/// </summary>
-		public bool ReturnByValue { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? ReturnByValue { get; set; }
 		/// <summary>
 		/// Gets or sets Whether preview should be generated for the result.
 		/// </summary>
-		public bool GeneratePreview { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? GeneratePreview { get; set; }
 		/// <summary>
 		/// Gets or sets Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error.
 		/// </summary>
-		public bool AwaitPromise { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? AwaitPromise { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/StackTrace.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/StackTrace.cs
index d509aeae498ded6772a182ac44afe6cd0fa549ed..0217d896282813d066868c94829113bdba3c4182 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/StackTrace.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/StackTrace.cs
@@ -2,27 +2,32 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
-	/// JavaScript call stack, including async stack traces.
+	/// Call frames for assertions or error messages.
 	/// </summary>
 	[SupportedBy("Chrome")]
 	public class StackTrace
 	{
 		/// <summary>
-		/// Gets or sets Call frames of the stack trace.
+		/// Gets or sets String label of this stack trace. For async traces this may be a name of the function that initiated the async call.
+		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public string Description { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript function name.
 		/// </summary>
 		public CallFrame[] CallFrames { get; set; }
 		/// <summary>
-		/// Gets or sets String label of this stack trace. For async traces this may be a name of the function that initiated the async call.
+		/// Gets or sets Asynchronous JavaScript stack trace that preceded this stack, if available.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Description { get; set; }
+		public StackTrace Parent { get; set; }
 		/// <summary>
-		/// Gets or sets Async stack trace, if any.
+		/// Gets or sets Creation frame of the Promise which produced the next synchronous trace when resolved, if available.
 		/// </summary>
 		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public StackTrace AsyncStackTrace { get; set; }
+		public CallFrame PromiseCreationFrame { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/SecurityStateChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Security/SecurityStateChangedEvent.cs
index 27bc687e596982247959978d99c2a501105edc67..607b782d9847ef109b3fb20dee4e15241c7c2594 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/SecurityStateChangedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/SecurityStateChangedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 {
@@ -28,6 +28,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 		/// <summary>
 		/// Gets or sets Overrides user-visible description of the state.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Summary { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs
deleted file mode 100644
index bd1587917decc3beca8860df762ca125d750251d..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
-{
-	[Event(ProtocolName.ServiceWorker.DebugOnStartUpdated)]
-	[SupportedBy("Chrome")]
-	public class DebugOnStartUpdatedEvent
-	{
-		/// <summary>
-		/// Gets or sets DebugOnStart
-		/// </summary>
-		public bool DebugOnStart { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs
deleted file mode 100644
index 7cf42acfaaff6b6b3b8bc2e47fb7d588ea9ec9a7..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
-{
-	[Event(ProtocolName.ServiceWorker.DispatchMessage)]
-	[SupportedBy("Chrome")]
-	public class DispatchMessageEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-		/// <summary>
-		/// Gets or sets Message
-		/// </summary>
-		public string Message { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
index 2d2df74d9122a1a2ee5cc1f680e48bfbd9a26488..e02410957e17e40f4af72441451cedecc9b1cb3e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
@@ -21,7 +21,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 		/// <summary>
 		/// Gets or sets IsDeleted
 		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IsDeleted { get; set; }
+		public bool IsDeleted { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
index 60cbbf0078b8eba46dc279628376126b108e5979..a40f2d537b868f56d30e8d7f0449bc9f5579dee1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
@@ -43,10 +43,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 		/// <summary>
 		/// Gets or sets ControlledClients
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] ControlledClients { get; set; }
 		/// <summary>
 		/// Gets or sets TargetId
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string TargetId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs
deleted file mode 100644
index d1395f16dc5b5567680a320413af576146bdcfb4..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
-{
-	[Event(ProtocolName.ServiceWorker.WorkerCreated)]
-	[SupportedBy("Chrome")]
-	public class WorkerCreatedEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-		/// <summary>
-		/// Gets or sets Url
-		/// </summary>
-		public string Url { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs
deleted file mode 100644
index 641e6c889c4324dd0116d1319eef7228ed90a9bd..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
-{
-	[Event(ProtocolName.ServiceWorker.WorkerTerminated)]
-	[SupportedBy("Chrome")]
-	public class WorkerTerminatedEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GPUInfo.cs b/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GPUInfo.cs
index 2cbf98316479341d697205da0eac3e03a5bbfdca..cec7f214c9843aea49caa84527f410a630ae8217 100644
--- a/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GPUInfo.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GPUInfo.cs
@@ -17,10 +17,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.SystemInfo
 		/// <summary>
 		/// Gets or sets An optional dictionary of additional GPU related attributes.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public object AuxAttributes { get; set; }
 		/// <summary>
 		/// Gets or sets An optional dictionary of graphics features and their status.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public object FeatureStatus { get; set; }
 		/// <summary>
 		/// Gets or sets An optional array of GPU driver bug workarounds.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/AttachedToTargetEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Target/AttachedToTargetEvent.cs
index 4fbcccee554b4937297382a24e3a175c7a760f8f..f8f3bd2f7a8b77fdc9ba82dfa0a76f9a0026fbde 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/AttachedToTargetEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/AttachedToTargetEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
index a4b5562063f7ecf7f37224ebfb0ff26b90002322..3ebfb8b8bac515f531cf81eb69324473a6f55b94 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
@@ -18,14 +18,17 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 		/// <summary>
 		/// Gets or sets Frame width in DIP (headless chrome only).
 		/// </summary>
-		public long Width { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Width { get; set; }
 		/// <summary>
 		/// Gets or sets Frame height in DIP (headless chrome only).
 		/// </summary>
-		public long Height { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public long? Height { get; set; }
 		/// <summary>
 		/// Gets or sets The browser context to create the page in (headless chrome only).
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string BrowserContextId { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/DetachedFromTargetEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Target/DetachedFromTargetEvent.cs
index 2ca0c68ebd01308be527f0b521599cd686b3c077..ceca8bd889b1935ec7320afa9f041de9f8743c24 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/DetachedFromTargetEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/DetachedFromTargetEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/ReceivedMessageFromTargetEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Target/ReceivedMessageFromTargetEvent.cs
index b1e50c8242909dbf195521df21544b17f27213e3..fc71fe5d855b1642424ee4b8587dc88b6511a6ba 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/ReceivedMessageFromTargetEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/ReceivedMessageFromTargetEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/TargetCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Target/TargetCreatedEvent.cs
index abefba03fd14323090ad49469397696d4ff6bbb3..29084c42eb15296581e47d5d8453792fa709fad4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/TargetCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/TargetCreatedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/TargetDestroyedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Target/TargetDestroyedEvent.cs
index 897fd6637b59d44be05272177373b6934a629ba0..da09f06e71f54fce8444f8cd721bcd7b68f9fcdb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/TargetDestroyedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/TargetDestroyedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tethering/AcceptedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Tethering/AcceptedEvent.cs
index 2239c84e139e4a4bdcbcadf47d9d6471034748aa..41b9f8a053ed014f1b9817ad1e4a38972ae984d0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tethering/AcceptedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tethering/AcceptedEvent.cs
@@ -1,4 +1,4 @@
-using MasterDevs.ChromeDevTools;
+using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
 
 namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tethering
 {
diff --git a/source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs
deleted file mode 100644
index ec6936c5cb20607a6bbd3890d9411a1a280f72cd..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
-{
-	/// <summary>
-	/// Deprecated.
-	/// </summary>
-	[Event(ProtocolName.Timeline.EventRecorded)]
-	[SupportedBy("Chrome")]
-	public class EventRecordedEvent
-	{
-		/// <summary>
-		/// Gets or sets Timeline event record data.
-		/// </summary>
-		public TimelineEvent Record { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs
deleted file mode 100644
index 888b9a9d9ddc9c855c3f401fc6cb9b475a8028bd..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
-{
-	/// <summary>
-	/// Deprecated.
-	/// </summary>
-	[Command(ProtocolName.Timeline.Start)]
-	[SupportedBy("Chrome")]
-	public class StartCommand
-	{
-		/// <summary>
-		/// Gets or sets Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public long? MaxCallStackDepth { get; set; }
-		/// <summary>
-		/// Gets or sets Whether instrumentation events should be buffered and returned upon <code>stop</code> call.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? BufferEvents { get; set; }
-		/// <summary>
-		/// Gets or sets Coma separated event types to issue although bufferEvents is set.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string LiveEvents { get; set; }
-		/// <summary>
-		/// Gets or sets Whether counters data should be included into timeline events.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IncludeCounters { get; set; }
-		/// <summary>
-		/// Gets or sets Whether events from GPU process should be collected.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public bool? IncludeGPUEvents { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs
deleted file mode 100644
index e1118e1711411e5b2d98b431a24f20d5723b72bf..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using MasterDevs.ChromeDevTools;
-using Newtonsoft.Json;
-using System.Collections.Generic;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
-{
-	/// <summary>
-	/// Timeline record contains information about the recorded activity.
-	/// </summary>
-	[SupportedBy("Chrome")]
-	public class TimelineEvent
-	{
-		/// <summary>
-		/// Gets or sets Event type.
-		/// </summary>
-		public string Type { get; set; }
-		/// <summary>
-		/// Gets or sets Event data.
-		/// </summary>
-		public object Data { get; set; }
-		/// <summary>
-		/// Gets or sets Start time.
-		/// </summary>
-		public double StartTime { get; set; }
-		/// <summary>
-		/// Gets or sets End time.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public double EndTime { get; set; }
-		/// <summary>
-		/// Gets or sets Nested records.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public TimelineEvent[] Children { get; set; }
-		/// <summary>
-		/// Gets or sets If present, identifies the thread that produced the event.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string Thread { get; set; }
-		/// <summary>
-		/// Gets or sets Stack trace.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public Console.CallFrame[] StackTrace { get; set; }
-		/// <summary>
-		/// Gets or sets Unique identifier of the frame within the page that the event relates to.
-		/// </summary>
-		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
-		public string FrameId { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
index ce026d271ae891ea574cc8e35ef4aeab308f434f..bb959d8e52e805a1303fc93c9280a9e3dfaed707 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
@@ -29,10 +29,12 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 		/// <summary>
 		/// Gets or sets Whether to report trace events as series of dataCollected events or to save trace to a stream (defaults to <code>ReportEvents</code>).
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string TransferMode { get; set; }
 		/// <summary>
 		/// Gets or sets 
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public TraceConfig TraceConfig { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/TraceConfig.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/TraceConfig.cs
index 26eaf614bf8cdd08b47bb97984de0aa279d4a8a5..64f74d3b5bae8b81785fa3353bf8b3a243a5bb89 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/TraceConfig.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/TraceConfig.cs
@@ -13,34 +13,42 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 		/// <summary>
 		/// Gets or sets Controls how the trace buffer stores data.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string RecordMode { get; set; }
 		/// <summary>
 		/// Gets or sets Turns on JavaScript stack sampling.
 		/// </summary>
-		public bool EnableSampling { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? EnableSampling { get; set; }
 		/// <summary>
 		/// Gets or sets Turns on system tracing.
 		/// </summary>
-		public bool EnableSystrace { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? EnableSystrace { get; set; }
 		/// <summary>
 		/// Gets or sets Turns on argument filter.
 		/// </summary>
-		public bool EnableArgumentFilter { get; set; }
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+		public bool? EnableArgumentFilter { get; set; }
 		/// <summary>
 		/// Gets or sets Included category filters.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] IncludedCategories { get; set; }
 		/// <summary>
 		/// Gets or sets Excluded category filters.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] ExcludedCategories { get; set; }
 		/// <summary>
 		/// Gets or sets Configuration to synthesize the delays in tracing.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string[] SyntheticDelays { get; set; }
 		/// <summary>
 		/// Gets or sets Configuration for memory dump triggers. Used only when "memory-infra" category is enabled.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public MemoryDumpConfig MemoryDumpConfig { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
index 68d6c48585e18c5af538c29861d06702ae4bc275..ddf0a7d6868c3572fb4fda166144ead1231b6908 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
@@ -12,6 +12,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 		/// <summary>
 		/// Gets or sets A handle of the stream that holds resulting trace data.
 		/// </summary>
+		[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
 		public string Stream { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs
deleted file mode 100644
index 441d9bada7ad18b22d92e2fadd78fc6dd7ed57b8..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
-{
-	[Event(ProtocolName.Worker.DispatchMessageFromWorker)]
-	[SupportedBy("Chrome")]
-	public class DispatchMessageFromWorkerEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-		/// <summary>
-		/// Gets or sets Message
-		/// </summary>
-		public string Message { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs
deleted file mode 100644
index 54811edab30d23e4584b5953f74929710ca0b07f..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
-{
-	[Event(ProtocolName.Worker.WorkerCreated)]
-	[SupportedBy("Chrome")]
-	public class WorkerCreatedEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-		/// <summary>
-		/// Gets or sets Url
-		/// </summary>
-		public string Url { get; set; }
-		/// <summary>
-		/// Gets or sets InspectorConnected
-		/// </summary>
-		public bool InspectorConnected { get; set; }
-	}
-}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs
deleted file mode 100644
index 9f94c83bf60ddcb41ffefd17557f896b8b8bb2ff..0000000000000000000000000000000000000000
--- a/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using MasterDevs.ChromeDevTools;using Newtonsoft.Json;
-
-namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
-{
-	[Event(ProtocolName.Worker.WorkerTerminated)]
-	[SupportedBy("Chrome")]
-	public class WorkerTerminatedEvent
-	{
-		/// <summary>
-		/// Gets or sets WorkerId
-		/// </summary>
-		public string WorkerId { get; set; }
-	}
-}
diff --git a/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs b/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs
index 400ca82b27f61a6f9c0e7e738aac56f3906dcdaf..05fef10b4ce46c9a1d948c2aa8cb61045ed24be7 100644
--- a/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs
+++ b/source/MasterDevs.ChromeDevTools.Tests/SerializationTests.cs
@@ -1,12 +1,7 @@
-using MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger;
-using MasterDevs.ChromeDevTools.Protocol.Chrome.DOM;
+using MasterDevs.ChromeDevTools.Protocol.Chrome.DOM;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Newtonsoft.Json;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime;
 
 namespace MasterDevs.ChromeDevTools.Tests
 {