From fd8aa43342d9eb6e451562e433d90fe0c0e2286c Mon Sep 17 00:00:00 2001
From: svatal <swata@centrum.cz>
Date: Sat, 12 Aug 2017 11:12:00 +0200
Subject: [PATCH] SendAsync returns correct result type

.. so user does not have to use cast on every command result that
returns something interesting
---
 source/ChromeDevTools/ChromeSession.cs        | 17 +++++++++++--
 .../ChromeDevTools/ChromeSessionExtensions.cs |  4 ++--
 source/ChromeDevTools/IChromeSession.cs       |  6 ++++-
 .../Accessibility/GetPartialAXTreeCommand.cs  |  2 +-
 .../Chrome/Animation/DisableCommand.cs        |  2 +-
 .../Chrome/Animation/EnableCommand.cs         |  2 +-
 .../Chrome/Animation/GetCurrentTimeCommand.cs |  2 +-
 .../Animation/GetPlaybackRateCommand.cs       |  2 +-
 .../Animation/ReleaseAnimationsCommand.cs     |  2 +-
 .../Animation/ResolveAnimationCommand.cs      |  2 +-
 .../Chrome/Animation/SeekAnimationsCommand.cs |  2 +-
 .../Chrome/Animation/SetPausedCommand.cs      |  2 +-
 .../Animation/SetPlaybackRateCommand.cs       |  2 +-
 .../Chrome/Animation/SetTimingCommand.cs      |  2 +-
 .../Chrome/ApplicationCache/EnableCommand.cs  |  2 +-
 .../GetApplicationCacheForFrameCommand.cs     |  2 +-
 .../GetFramesWithManifestsCommand.cs          |  2 +-
 .../GetManifestForFrameCommand.cs             |  2 +-
 .../Chrome/Browser/GetWindowBoundsCommand.cs  |  2 +-
 .../Browser/GetWindowForTargetCommand.cs      |  2 +-
 .../Chrome/Browser/SetWindowBoundsCommand.cs  |  2 +-
 .../Protocol/Chrome/CSS/AddRuleCommand.cs     |  2 +-
 .../Chrome/CSS/CollectClassNamesCommand.cs    |  2 +-
 .../Chrome/CSS/CreateStyleSheetCommand.cs     |  2 +-
 .../Protocol/Chrome/CSS/DisableCommand.cs     |  2 +-
 .../Protocol/Chrome/CSS/EnableCommand.cs      |  2 +-
 .../Chrome/CSS/ForcePseudoStateCommand.cs     |  2 +-
 .../Chrome/CSS/GetBackgroundColorsCommand.cs  |  2 +-
 .../CSS/GetComputedStyleForNodeCommand.cs     |  2 +-
 .../CSS/GetInlineStylesForNodeCommand.cs      |  2 +-
 .../CSS/GetLayoutTreeAndStylesCommand.cs      |  2 +-
 .../CSS/GetMatchedStylesForNodeCommand.cs     |  2 +-
 .../Chrome/CSS/GetMediaQueriesCommand.cs      |  2 +-
 .../CSS/GetPlatformFontsForNodeCommand.cs     |  2 +-
 .../Chrome/CSS/GetStyleSheetTextCommand.cs    |  2 +-
 ...SetEffectivePropertyValueForNodeCommand.cs |  2 +-
 .../Chrome/CSS/SetKeyframeKeyCommand.cs       |  2 +-
 .../Chrome/CSS/SetMediaTextCommand.cs         |  2 +-
 .../Chrome/CSS/SetRuleSelectorCommand.cs      |  2 +-
 .../Chrome/CSS/SetStyleSheetTextCommand.cs    |  2 +-
 .../Chrome/CSS/SetStyleTextsCommand.cs        |  2 +-
 .../CSS/StartRuleUsageTrackingCommand.cs      |  2 +-
 .../CSS/StopRuleUsageTrackingCommand.cs       |  2 +-
 .../Chrome/CSS/TakeCoverageDeltaCommand.cs    |  2 +-
 .../Chrome/CacheStorage/DeleteCacheCommand.cs |  2 +-
 .../Chrome/CacheStorage/DeleteEntryCommand.cs |  2 +-
 .../CacheStorage/RequestCacheNamesCommand.cs  |  2 +-
 .../CacheStorage/RequestEntriesCommand.cs     |  2 +-
 .../Chrome/Console/ClearMessagesCommand.cs    |  2 +-
 .../Protocol/Chrome/Console/DisableCommand.cs |  2 +-
 .../Protocol/Chrome/Console/EnableCommand.cs  |  2 +-
 .../CollectClassNamesFromSubtreeCommand.cs    |  2 +-
 .../Protocol/Chrome/DOM/CopyToCommand.cs      |  2 +-
 .../Protocol/Chrome/DOM/DisableCommand.cs     |  2 +-
 .../Chrome/DOM/DiscardSearchResultsCommand.cs |  2 +-
 .../Protocol/Chrome/DOM/EnableCommand.cs      |  2 +-
 .../Protocol/Chrome/DOM/FocusCommand.cs       |  2 +-
 .../Chrome/DOM/GetAttributesCommand.cs        |  2 +-
 .../Protocol/Chrome/DOM/GetBoxModelCommand.cs |  2 +-
 .../Protocol/Chrome/DOM/GetDocumentCommand.cs |  2 +-
 .../Chrome/DOM/GetFlattenedDocumentCommand.cs |  2 +-
 .../Chrome/DOM/GetNodeForLocationCommand.cs   |  2 +-
 .../Chrome/DOM/GetOuterHTMLCommand.cs         |  2 +-
 .../Chrome/DOM/GetRelayoutBoundaryCommand.cs  |  2 +-
 .../Chrome/DOM/GetSearchResultsCommand.cs     |  2 +-
 .../Chrome/DOM/HideHighlightCommand.cs        |  2 +-
 .../Chrome/DOM/HighlightNodeCommand.cs        |  2 +-
 .../Chrome/DOM/HighlightRectCommand.cs        |  2 +-
 .../Chrome/DOM/MarkUndoableStateCommand.cs    |  2 +-
 .../Protocol/Chrome/DOM/MoveToCommand.cs      |  2 +-
 .../Chrome/DOM/PerformSearchCommand.cs        |  2 +-
 .../DOM/PushNodeByPathToFrontendCommand.cs    |  2 +-
 .../PushNodesByBackendIdsToFrontendCommand.cs |  2 +-
 .../Chrome/DOM/QuerySelectorAllCommand.cs     |  2 +-
 .../Chrome/DOM/QuerySelectorCommand.cs        |  2 +-
 .../Protocol/Chrome/DOM/RedoCommand.cs        |  2 +-
 .../Chrome/DOM/RemoveAttributeCommand.cs      |  2 +-
 .../Protocol/Chrome/DOM/RemoveNodeCommand.cs  |  2 +-
 .../Chrome/DOM/RequestChildNodesCommand.cs    |  2 +-
 .../Protocol/Chrome/DOM/RequestNodeCommand.cs |  2 +-
 .../Protocol/Chrome/DOM/ResolveNodeCommand.cs |  2 +-
 .../Chrome/DOM/SetAttributeValueCommand.cs    |  2 +-
 .../Chrome/DOM/SetAttributesAsTextCommand.cs  |  2 +-
 .../Chrome/DOM/SetFileInputFilesCommand.cs    |  2 +-
 .../Chrome/DOM/SetInspectedNodeCommand.cs     |  2 +-
 .../Protocol/Chrome/DOM/SetNodeNameCommand.cs |  2 +-
 .../Chrome/DOM/SetNodeValueCommand.cs         |  2 +-
 .../Chrome/DOM/SetOuterHTMLCommand.cs         |  2 +-
 .../Protocol/Chrome/DOM/UndoCommand.cs        |  2 +-
 .../DOMDebugger/GetEventListenersCommand.cs   |  2 +-
 .../DOMDebugger/RemoveDOMBreakpointCommand.cs |  2 +-
 .../RemoveEventListenerBreakpointCommand.cs   |  2 +-
 .../RemoveInstrumentationBreakpointCommand.cs |  2 +-
 .../DOMDebugger/RemoveXHRBreakpointCommand.cs |  2 +-
 .../DOMDebugger/SetDOMBreakpointCommand.cs    |  2 +-
 .../SetEventListenerBreakpointCommand.cs      |  2 +-
 .../SetInstrumentationBreakpointCommand.cs    |  2 +-
 .../DOMDebugger/SetXHRBreakpointCommand.cs    |  2 +-
 .../Chrome/DOMStorage/ClearCommand.cs         |  2 +-
 .../Chrome/DOMStorage/DisableCommand.cs       |  2 +-
 .../Chrome/DOMStorage/EnableCommand.cs        |  2 +-
 .../DOMStorage/GetDOMStorageItemsCommand.cs   |  2 +-
 .../DOMStorage/RemoveDOMStorageItemCommand.cs |  2 +-
 .../DOMStorage/SetDOMStorageItemCommand.cs    |  2 +-
 .../Chrome/Database/DisableCommand.cs         |  2 +-
 .../Protocol/Chrome/Database/EnableCommand.cs |  2 +-
 .../Chrome/Database/ExecuteSQLCommand.cs      |  2 +-
 .../Database/GetDatabaseTableNamesCommand.cs  |  2 +-
 .../Debugger/ContinueToLocationCommand.cs     |  2 +-
 .../Chrome/Debugger/DisableCommand.cs         |  2 +-
 .../Protocol/Chrome/Debugger/EnableCommand.cs |  2 +-
 .../Debugger/EvaluateOnCallFrameCommand.cs    |  2 +-
 .../Debugger/GetPossibleBreakpointsCommand.cs |  2 +-
 .../Chrome/Debugger/GetScriptSourceCommand.cs |  2 +-
 .../Protocol/Chrome/Debugger/PauseCommand.cs  |  2 +-
 .../Debugger/RemoveBreakpointCommand.cs       |  2 +-
 .../Chrome/Debugger/RestartFrameCommand.cs    |  2 +-
 .../Protocol/Chrome/Debugger/ResumeCommand.cs |  2 +-
 .../Debugger/ScheduleStepIntoAsyncCommand.cs  |  2 +-
 .../Chrome/Debugger/SearchInContentCommand.cs |  2 +-
 .../Debugger/SetAsyncCallStackDepthCommand.cs |  2 +-
 .../Debugger/SetBlackboxPatternsCommand.cs    |  2 +-
 .../Debugger/SetBlackboxedRangesCommand.cs    |  2 +-
 .../Debugger/SetBreakpointByUrlCommand.cs     |  2 +-
 .../Chrome/Debugger/SetBreakpointCommand.cs   |  2 +-
 .../Debugger/SetBreakpointsActiveCommand.cs   |  2 +-
 .../Debugger/SetPauseOnExceptionsCommand.cs   |  2 +-
 .../Chrome/Debugger/SetScriptSourceCommand.cs |  2 +-
 .../Debugger/SetSkipAllPausesCommand.cs       |  2 +-
 .../Debugger/SetVariableValueCommand.cs       |  2 +-
 .../Chrome/Debugger/StepIntoCommand.cs        |  2 +-
 .../Chrome/Debugger/StepOutCommand.cs         |  2 +-
 .../Chrome/Debugger/StepOverCommand.cs        |  2 +-
 .../ClearDeviceOrientationOverrideCommand.cs  |  2 +-
 .../SetDeviceOrientationOverrideCommand.cs    |  2 +-
 .../Chrome/Emulation/CanEmulateCommand.cs     |  2 +-
 .../ClearDeviceMetricsOverrideCommand.cs      |  2 +-
 .../ClearGeolocationOverrideCommand.cs        |  2 +-
 .../Chrome/Emulation/ForceViewportCommand.cs  |  2 +-
 .../Emulation/ResetPageScaleFactorCommand.cs  |  2 +-
 .../Chrome/Emulation/ResetViewportCommand.cs  |  2 +-
 .../Emulation/SetCPUThrottlingRateCommand.cs  |  2 +-
 ...etDefaultBackgroundColorOverrideCommand.cs |  2 +-
 .../SetDeviceMetricsOverrideCommand.cs        |  2 +-
 .../Emulation/SetEmulatedMediaCommand.cs      |  2 +-
 .../SetGeolocationOverrideCommand.cs          |  2 +-
 .../Emulation/SetPageScaleFactorCommand.cs    |  2 +-
 .../SetScriptExecutionDisabledCommand.cs      |  2 +-
 .../SetTouchEmulationEnabledCommand.cs        |  2 +-
 .../Emulation/SetVirtualTimePolicyCommand.cs  |  2 +-
 .../Chrome/Emulation/SetVisibleSizeCommand.cs |  2 +-
 .../AddInspectedHeapObjectCommand.cs          |  2 +-
 .../HeapProfiler/CollectGarbageCommand.cs     |  2 +-
 .../Chrome/HeapProfiler/DisableCommand.cs     |  2 +-
 .../Chrome/HeapProfiler/EnableCommand.cs      |  2 +-
 .../HeapProfiler/GetHeapObjectIdCommand.cs    |  2 +-
 .../GetObjectByHeapObjectIdCommand.cs         |  2 +-
 .../HeapProfiler/StartSamplingCommand.cs      |  2 +-
 .../StartTrackingHeapObjectsCommand.cs        |  2 +-
 .../HeapProfiler/StopSamplingCommand.cs       |  2 +-
 .../StopTrackingHeapObjectsCommand.cs         |  2 +-
 .../HeapProfiler/TakeHeapSnapshotCommand.cs   |  2 +-
 .../Protocol/Chrome/IO/CloseCommand.cs        |  2 +-
 .../Protocol/Chrome/IO/ReadCommand.cs         |  2 +-
 .../IndexedDB/ClearObjectStoreCommand.cs      |  2 +-
 .../Chrome/IndexedDB/DeleteDatabaseCommand.cs |  2 +-
 .../Chrome/IndexedDB/DisableCommand.cs        |  2 +-
 .../Chrome/IndexedDB/EnableCommand.cs         |  2 +-
 .../Chrome/IndexedDB/RequestDataCommand.cs    |  2 +-
 .../IndexedDB/RequestDatabaseCommand.cs       |  2 +-
 .../IndexedDB/RequestDatabaseNamesCommand.cs  |  2 +-
 .../Chrome/Input/DispatchKeyEventCommand.cs   |  2 +-
 .../Chrome/Input/DispatchMouseEventCommand.cs |  2 +-
 .../Chrome/Input/DispatchTouchEventCommand.cs |  2 +-
 .../EmulateTouchFromMouseEventCommand.cs      |  2 +-
 .../Input/SetIgnoreInputEventsCommand.cs      |  2 +-
 .../Input/SynthesizePinchGestureCommand.cs    |  2 +-
 .../Input/SynthesizeScrollGestureCommand.cs   |  2 +-
 .../Input/SynthesizeTapGestureCommand.cs      |  2 +-
 .../Chrome/Inspector/DisableCommand.cs        |  2 +-
 .../Chrome/Inspector/EnableCommand.cs         |  2 +-
 .../LayerTree/CompositingReasonsCommand.cs    |  2 +-
 .../Chrome/LayerTree/DisableCommand.cs        |  2 +-
 .../Chrome/LayerTree/EnableCommand.cs         |  2 +-
 .../Chrome/LayerTree/LoadSnapshotCommand.cs   |  2 +-
 .../Chrome/LayerTree/MakeSnapshotCommand.cs   |  2 +-
 .../LayerTree/ProfileSnapshotCommand.cs       |  2 +-
 .../LayerTree/ReleaseSnapshotCommand.cs       |  2 +-
 .../Chrome/LayerTree/ReplaySnapshotCommand.cs |  2 +-
 .../LayerTree/SnapshotCommandLogCommand.cs    |  2 +-
 .../Protocol/Chrome/Log/ClearCommand.cs       |  2 +-
 .../Protocol/Chrome/Log/DisableCommand.cs     |  2 +-
 .../Protocol/Chrome/Log/EnableCommand.cs      |  2 +-
 .../Log/StartViolationsReportCommand.cs       |  2 +-
 .../Chrome/Log/StopViolationsReportCommand.cs |  2 +-
 .../Chrome/Memory/GetDOMCountersCommand.cs    |  2 +-
 ...tPressureNotificationsSuppressedCommand.cs |  2 +-
 .../SimulatePressureNotificationCommand.cs    |  2 +-
 .../Network/CanClearBrowserCacheCommand.cs    |  2 +-
 .../Network/CanClearBrowserCookiesCommand.cs  |  2 +-
 .../CanEmulateNetworkConditionsCommand.cs     |  2 +-
 .../Network/ClearBrowserCacheCommand.cs       |  2 +-
 .../Network/ClearBrowserCookiesCommand.cs     |  2 +-
 .../Chrome/Network/DeleteCookieCommand.cs     |  2 +-
 .../Protocol/Chrome/Network/DisableCommand.cs |  2 +-
 .../EmulateNetworkConditionsCommand.cs        |  2 +-
 .../Protocol/Chrome/Network/EnableCommand.cs  |  2 +-
 .../Chrome/Network/GetAllCookiesCommand.cs    |  2 +-
 .../Chrome/Network/GetCertificateCommand.cs   |  2 +-
 .../Chrome/Network/GetCookiesCommand.cs       |  2 +-
 .../Chrome/Network/GetResponseBodyCommand.cs  |  2 +-
 .../Chrome/Network/ReplayXHRCommand.cs        |  2 +-
 .../Chrome/Network/SetBlockedURLsCommand.cs   |  2 +-
 .../Network/SetBypassServiceWorkerCommand.cs  |  2 +-
 .../Chrome/Network/SetCacheDisabledCommand.cs |  2 +-
 .../Chrome/Network/SetCookieCommand.cs        |  2 +-
 .../SetDataSizeLimitsForTestCommand.cs        |  2 +-
 .../Network/SetExtraHTTPHeadersCommand.cs     |  2 +-
 .../Network/SetUserAgentOverrideCommand.cs    |  2 +-
 .../Protocol/Chrome/Overlay/DisableCommand.cs |  2 +-
 .../Protocol/Chrome/Overlay/EnableCommand.cs  |  2 +-
 .../GetHighlightObjectForTestCommand.cs       |  2 +-
 .../Chrome/Overlay/HideHighlightCommand.cs    |  2 +-
 .../Chrome/Overlay/HighlightFrameCommand.cs   |  2 +-
 .../Chrome/Overlay/HighlightNodeCommand.cs    |  2 +-
 .../Chrome/Overlay/HighlightQuadCommand.cs    |  2 +-
 .../Chrome/Overlay/HighlightRectCommand.cs    |  2 +-
 .../Chrome/Overlay/SetInspectModeCommand.cs   |  2 +-
 .../SetPausedInDebuggerMessageCommand.cs      |  2 +-
 .../Overlay/SetShowDebugBordersCommand.cs     |  2 +-
 .../Overlay/SetShowFPSCounterCommand.cs       |  2 +-
 .../Overlay/SetShowPaintRectsCommand.cs       |  2 +-
 .../SetShowScrollBottleneckRectsCommand.cs    |  2 +-
 .../SetShowViewportSizeOnResizeCommand.cs     |  2 +-
 .../Chrome/Overlay/SetSuspendedCommand.cs     |  2 +-
 .../Page/AddScriptToEvaluateOnLoadCommand.cs  |  2 +-
 .../Chrome/Page/CaptureScreenshotCommand.cs   |  2 +-
 .../Page/ClearDeviceMetricsOverrideCommand.cs |  2 +-
 .../ClearDeviceOrientationOverrideCommand.cs  |  2 +-
 .../Page/ClearGeolocationOverrideCommand.cs   |  2 +-
 .../Chrome/Page/CreateIsolatedWorldCommand.cs |  2 +-
 .../Chrome/Page/DeleteCookieCommand.cs        |  2 +-
 .../Protocol/Chrome/Page/DisableCommand.cs    |  2 +-
 .../Protocol/Chrome/Page/EnableCommand.cs     |  2 +-
 .../Chrome/Page/GetAppManifestCommand.cs      |  2 +-
 .../Protocol/Chrome/Page/GetCookiesCommand.cs |  2 +-
 .../Chrome/Page/GetLayoutMetricsCommand.cs    |  2 +-
 .../Page/GetNavigationHistoryCommand.cs       |  2 +-
 .../Chrome/Page/GetResourceContentCommand.cs  |  2 +-
 .../Chrome/Page/GetResourceTreeCommand.cs     |  2 +-
 .../Page/HandleJavaScriptDialogCommand.cs     |  2 +-
 .../Protocol/Chrome/Page/NavigateCommand.cs   |  2 +-
 .../Page/NavigateToHistoryEntryCommand.cs     |  2 +-
 .../Protocol/Chrome/Page/PrintToPDFCommand.cs |  2 +-
 .../Chrome/Page/ProcessNavigationCommand.cs   |  2 +-
 .../Protocol/Chrome/Page/ReloadCommand.cs     |  2 +-
 .../RemoveScriptToEvaluateOnLoadCommand.cs    |  2 +-
 .../Chrome/Page/RequestAppBannerCommand.cs    |  2 +-
 .../Chrome/Page/ScreencastFrameAckCommand.cs  |  2 +-
 .../Chrome/Page/SearchInResourceCommand.cs    |  2 +-
 .../SetAutoAttachToCreatedPagesCommand.cs     |  2 +-
 .../Page/SetControlNavigationsCommand.cs      |  2 +-
 .../Page/SetDeviceMetricsOverrideCommand.cs   |  2 +-
 .../SetDeviceOrientationOverrideCommand.cs    |  2 +-
 .../Chrome/Page/SetDocumentContentCommand.cs  |  2 +-
 .../Page/SetGeolocationOverrideCommand.cs     |  2 +-
 .../Page/SetTouchEmulationEnabledCommand.cs   |  2 +-
 .../Chrome/Page/StartScreencastCommand.cs     |  2 +-
 .../Chrome/Page/StopLoadingCommand.cs         |  2 +-
 .../Chrome/Page/StopScreencastCommand.cs      |  2 +-
 .../Chrome/Profiler/DisableCommand.cs         |  2 +-
 .../Protocol/Chrome/Profiler/EnableCommand.cs |  2 +-
 .../Profiler/GetBestEffortCoverageCommand.cs  |  2 +-
 .../Profiler/SetSamplingIntervalCommand.cs    |  2 +-
 .../Protocol/Chrome/Profiler/StartCommand.cs  |  2 +-
 .../Profiler/StartPreciseCoverageCommand.cs   |  2 +-
 .../Protocol/Chrome/Profiler/StopCommand.cs   |  2 +-
 .../Profiler/StopPreciseCoverageCommand.cs    |  2 +-
 .../Profiler/TakePreciseCoverageCommand.cs    |  2 +-
 .../Chrome/Runtime/AwaitPromiseCommand.cs     |  2 +-
 .../Chrome/Runtime/CallFunctionOnCommand.cs   |  2 +-
 .../Chrome/Runtime/CompileScriptCommand.cs    |  2 +-
 .../Protocol/Chrome/Runtime/DisableCommand.cs |  2 +-
 .../Runtime/DiscardConsoleEntriesCommand.cs   |  2 +-
 .../Protocol/Chrome/Runtime/EnableCommand.cs  |  2 +-
 .../Chrome/Runtime/EvaluateCommand.cs         |  2 +-
 .../Chrome/Runtime/GetPropertiesCommand.cs    |  2 +-
 .../Chrome/Runtime/ReleaseObjectCommand.cs    |  2 +-
 .../Runtime/ReleaseObjectGroupCommand.cs      |  2 +-
 .../Runtime/RunIfWaitingForDebuggerCommand.cs |  2 +-
 .../Chrome/Runtime/RunScriptCommand.cs        |  2 +-
 .../SetCustomObjectFormatterEnabledCommand.cs |  2 +-
 .../Chrome/Schema/GetDomainsCommand.cs        |  2 +-
 .../Chrome/Security/DisableCommand.cs         |  2 +-
 .../Protocol/Chrome/Security/EnableCommand.cs |  2 +-
 .../Security/HandleCertificateErrorCommand.cs |  2 +-
 .../SetOverrideCertificateErrorsCommand.cs    |  2 +-
 .../Security/ShowCertificateViewerCommand.cs  |  2 +-
 .../DeliverPushMessageCommand.cs              |  2 +-
 .../Chrome/ServiceWorker/DisableCommand.cs    |  2 +-
 .../ServiceWorker/DispatchSyncEventCommand.cs |  2 +-
 .../Chrome/ServiceWorker/EnableCommand.cs     |  2 +-
 .../ServiceWorker/InspectWorkerCommand.cs     |  2 +-
 .../SetForceUpdateOnPageLoadCommand.cs        |  2 +-
 .../ServiceWorker/SkipWaitingCommand.cs       |  2 +-
 .../ServiceWorker/StartWorkerCommand.cs       |  2 +-
 .../Chrome/ServiceWorker/StopWorkerCommand.cs |  2 +-
 .../Chrome/ServiceWorker/UnregisterCommand.cs |  2 +-
 .../UpdateRegistrationCommand.cs              |  2 +-
 .../Storage/ClearDataForOriginCommand.cs      |  2 +-
 .../Chrome/SystemInfo/GetInfoCommand.cs       |  2 +-
 .../Chrome/Target/ActivateTargetCommand.cs    |  2 +-
 .../Chrome/Target/AttachToTargetCommand.cs    |  2 +-
 .../Chrome/Target/CloseTargetCommand.cs       |  2 +-
 .../Target/CreateBrowserContextCommand.cs     |  2 +-
 .../Chrome/Target/CreateTargetCommand.cs      |  2 +-
 .../Chrome/Target/DetachFromTargetCommand.cs  |  2 +-
 .../Target/DisposeBrowserContextCommand.cs    |  2 +-
 .../Chrome/Target/GetTargetInfoCommand.cs     |  2 +-
 .../Chrome/Target/GetTargetsCommand.cs        |  2 +-
 .../Target/SendMessageToTargetCommand.cs      |  2 +-
 .../Chrome/Target/SetAttachToFramesCommand.cs |  2 +-
 .../Chrome/Target/SetAutoAttachCommand.cs     |  2 +-
 .../Target/SetDiscoverTargetsCommand.cs       |  2 +-
 .../Target/SetRemoteLocationsCommand.cs       |  2 +-
 .../Protocol/Chrome/Tethering/BindCommand.cs  |  2 +-
 .../Chrome/Tethering/UnbindCommand.cs         |  2 +-
 .../Protocol/Chrome/Tracing/EndCommand.cs     |  2 +-
 .../Chrome/Tracing/GetCategoriesCommand.cs    |  2 +-
 .../Tracing/RecordClockSyncMarkerCommand.cs   |  2 +-
 .../Tracing/RequestMemoryDumpCommand.cs       |  2 +-
 .../Protocol/Chrome/Tracing/StartCommand.cs   |  2 +-
 .../iOS/ApplicationCache/EnableCommand.cs     |  2 +-
 .../GetApplicationCacheForFrameCommand.cs     |  2 +-
 .../GetFramesWithManifestsCommand.cs          |  2 +-
 .../GetManifestForFrameCommand.cs             |  2 +-
 .../Protocol/iOS/CSS/AddRuleCommand.cs        |  2 +-
 .../iOS/CSS/CreateStyleSheetCommand.cs        |  2 +-
 .../Protocol/iOS/CSS/DisableCommand.cs        |  2 +-
 .../Protocol/iOS/CSS/EnableCommand.cs         |  2 +-
 .../iOS/CSS/ForcePseudoStateCommand.cs        |  2 +-
 .../iOS/CSS/GetAllStyleSheetsCommand.cs       |  2 +-
 .../iOS/CSS/GetComputedStyleForNodeCommand.cs |  2 +-
 .../iOS/CSS/GetInlineStylesForNodeCommand.cs  |  2 +-
 .../iOS/CSS/GetMatchedStylesForNodeCommand.cs |  2 +-
 .../iOS/CSS/GetNamedFlowCollectionCommand.cs  |  2 +-
 .../Protocol/iOS/CSS/GetStyleSheetCommand.cs  |  2 +-
 .../iOS/CSS/GetStyleSheetTextCommand.cs       |  2 +-
 .../CSS/GetSupportedCSSPropertiesCommand.cs   |  2 +-
 ...etSupportedSystemFontFamilyNamesCommand.cs |  2 +-
 .../iOS/CSS/SetRuleSelectorCommand.cs         |  2 +-
 .../iOS/CSS/SetStyleSheetTextCommand.cs       |  2 +-
 .../Protocol/iOS/CSS/SetStyleTextCommand.cs   |  2 +-
 .../iOS/Console/AddInspectedNodeCommand.cs    |  2 +-
 .../iOS/Console/ClearMessagesCommand.cs       |  2 +-
 .../Protocol/iOS/Console/DisableCommand.cs    |  2 +-
 .../Protocol/iOS/Console/EnableCommand.cs     |  2 +-
 .../Console/SetMonitoringXHREnabledCommand.cs |  2 +-
 .../iOS/DOM/DiscardSearchResultsCommand.cs    |  2 +-
 .../Protocol/iOS/DOM/FocusCommand.cs          |  2 +-
 ...etAccessibilityPropertiesForNodeCommand.cs |  2 +-
 .../Protocol/iOS/DOM/GetAttributesCommand.cs  |  2 +-
 .../Protocol/iOS/DOM/GetDocumentCommand.cs    |  2 +-
 .../DOM/GetEventListenersForNodeCommand.cs    |  2 +-
 .../Protocol/iOS/DOM/GetOuterHTMLCommand.cs   |  2 +-
 .../iOS/DOM/GetSearchResultsCommand.cs        |  2 +-
 .../Protocol/iOS/DOM/HideHighlightCommand.cs  |  2 +-
 .../Protocol/iOS/DOM/HighlightFrameCommand.cs |  2 +-
 .../Protocol/iOS/DOM/HighlightNodeCommand.cs  |  2 +-
 .../Protocol/iOS/DOM/HighlightQuadCommand.cs  |  2 +-
 .../Protocol/iOS/DOM/HighlightRectCommand.cs  |  2 +-
 .../iOS/DOM/HighlightSelectorCommand.cs       |  2 +-
 .../iOS/DOM/MarkUndoableStateCommand.cs       |  2 +-
 .../Protocol/iOS/DOM/MoveToCommand.cs         |  2 +-
 .../Protocol/iOS/DOM/PerformSearchCommand.cs  |  2 +-
 .../PushNodeByBackendIdToFrontendCommand.cs   |  2 +-
 .../DOM/PushNodeByPathToFrontendCommand.cs    |  2 +-
 .../iOS/DOM/QuerySelectorAllCommand.cs        |  2 +-
 .../Protocol/iOS/DOM/QuerySelectorCommand.cs  |  2 +-
 .../Protocol/iOS/DOM/RedoCommand.cs           |  2 +-
 .../iOS/DOM/ReleaseBackendNodeIdsCommand.cs   |  2 +-
 .../iOS/DOM/RemoveAttributeCommand.cs         |  2 +-
 .../Protocol/iOS/DOM/RemoveNodeCommand.cs     |  2 +-
 .../iOS/DOM/RequestChildNodesCommand.cs       |  2 +-
 .../Protocol/iOS/DOM/RequestNodeCommand.cs    |  2 +-
 .../Protocol/iOS/DOM/ResolveNodeCommand.cs    |  2 +-
 .../iOS/DOM/SetAttributeValueCommand.cs       |  2 +-
 .../iOS/DOM/SetAttributesAsTextCommand.cs     |  2 +-
 .../iOS/DOM/SetInspectModeEnabledCommand.cs   |  2 +-
 .../Protocol/iOS/DOM/SetNodeNameCommand.cs    |  2 +-
 .../Protocol/iOS/DOM/SetNodeValueCommand.cs   |  2 +-
 .../Protocol/iOS/DOM/SetOuterHTMLCommand.cs   |  2 +-
 .../Protocol/iOS/DOM/UndoCommand.cs           |  2 +-
 .../DOMDebugger/RemoveDOMBreakpointCommand.cs |  2 +-
 .../RemoveEventListenerBreakpointCommand.cs   |  2 +-
 .../RemoveInstrumentationBreakpointCommand.cs |  2 +-
 .../DOMDebugger/RemoveXHRBreakpointCommand.cs |  2 +-
 .../DOMDebugger/SetDOMBreakpointCommand.cs    |  2 +-
 .../SetEventListenerBreakpointCommand.cs      |  2 +-
 .../SetInstrumentationBreakpointCommand.cs    |  2 +-
 .../DOMDebugger/SetXHRBreakpointCommand.cs    |  2 +-
 .../Protocol/iOS/DOMStorage/DisableCommand.cs |  2 +-
 .../Protocol/iOS/DOMStorage/EnableCommand.cs  |  2 +-
 .../DOMStorage/GetDOMStorageItemsCommand.cs   |  2 +-
 .../DOMStorage/RemoveDOMStorageItemCommand.cs |  2 +-
 .../DOMStorage/SetDOMStorageItemCommand.cs    |  2 +-
 .../Protocol/iOS/Database/DisableCommand.cs   |  2 +-
 .../Protocol/iOS/Database/EnableCommand.cs    |  2 +-
 .../iOS/Database/ExecuteSQLCommand.cs         |  2 +-
 .../Database/GetDatabaseTableNamesCommand.cs  |  2 +-
 .../iOS/Debugger/ContinueToLocationCommand.cs |  2 +-
 .../Protocol/iOS/Debugger/DisableCommand.cs   |  2 +-
 .../Protocol/iOS/Debugger/EnableCommand.cs    |  2 +-
 .../Debugger/EvaluateOnCallFrameCommand.cs    |  2 +-
 .../iOS/Debugger/GetFunctionDetailsCommand.cs |  2 +-
 .../iOS/Debugger/GetScriptSourceCommand.cs    |  2 +-
 .../Protocol/iOS/Debugger/PauseCommand.cs     |  2 +-
 .../iOS/Debugger/RemoveBreakpointCommand.cs   |  2 +-
 .../Protocol/iOS/Debugger/ResumeCommand.cs    |  2 +-
 .../iOS/Debugger/SearchInContentCommand.cs    |  2 +-
 .../iOS/Debugger/SetBreakpointByUrlCommand.cs |  2 +-
 .../iOS/Debugger/SetBreakpointCommand.cs      |  2 +-
 .../Debugger/SetBreakpointsActiveCommand.cs   |  2 +-
 .../iOS/Debugger/SetOverlayMessageCommand.cs  |  2 +-
 .../Debugger/SetPauseOnExceptionsCommand.cs   |  2 +-
 .../Protocol/iOS/Debugger/StepIntoCommand.cs  |  2 +-
 .../Protocol/iOS/Debugger/StepOutCommand.cs   |  2 +-
 .../Protocol/iOS/Debugger/StepOverCommand.cs  |  2 +-
 .../iOS/IndexedDB/ClearObjectStoreCommand.cs  |  2 +-
 .../Protocol/iOS/IndexedDB/DisableCommand.cs  |  2 +-
 .../Protocol/iOS/IndexedDB/EnableCommand.cs   |  2 +-
 .../iOS/IndexedDB/RequestDataCommand.cs       |  2 +-
 .../iOS/IndexedDB/RequestDatabaseCommand.cs   |  2 +-
 .../IndexedDB/RequestDatabaseNamesCommand.cs  |  2 +-
 .../Protocol/iOS/Inspector/DisableCommand.cs  |  2 +-
 .../Protocol/iOS/Inspector/EnableCommand.cs   |  2 +-
 .../iOS/Inspector/InitializedCommand.cs       |  2 +-
 .../Protocol/iOS/LayerTree/DisableCommand.cs  |  2 +-
 .../Protocol/iOS/LayerTree/EnableCommand.cs   |  2 +-
 .../iOS/LayerTree/LayersForNodeCommand.cs     |  2 +-
 .../ReasonsForCompositingLayerCommand.cs      |  2 +-
 .../Network/CanClearBrowserCacheCommand.cs    |  2 +-
 .../Network/CanClearBrowserCookiesCommand.cs  |  2 +-
 .../iOS/Network/ClearBrowserCacheCommand.cs   |  2 +-
 .../iOS/Network/ClearBrowserCookiesCommand.cs |  2 +-
 .../Protocol/iOS/Network/DisableCommand.cs    |  2 +-
 .../Protocol/iOS/Network/EnableCommand.cs     |  2 +-
 .../iOS/Network/GetResponseBodyCommand.cs     |  2 +-
 .../iOS/Network/LoadResourceCommand.cs        |  2 +-
 .../iOS/Network/SetCacheDisabledCommand.cs    |  2 +-
 .../iOS/Network/SetExtraHTTPHeadersCommand.cs |  2 +-
 .../Page/AddScriptToEvaluateOnLoadCommand.cs  |  2 +-
 .../Protocol/iOS/Page/ArchiveCommand.cs       |  2 +-
 .../Protocol/iOS/Page/DeleteCookieCommand.cs  |  2 +-
 .../Protocol/iOS/Page/DisableCommand.cs       |  2 +-
 .../Protocol/iOS/Page/EnableCommand.cs        |  2 +-
 .../GetCompositingBordersVisibleCommand.cs    |  2 +-
 .../Protocol/iOS/Page/GetCookiesCommand.cs    |  2 +-
 .../iOS/Page/GetResourceContentCommand.cs     |  2 +-
 .../iOS/Page/GetResourceTreeCommand.cs        |  2 +-
 .../Page/GetScriptExecutionStatusCommand.cs   |  2 +-
 .../iOS/Page/HandleJavaScriptDialogCommand.cs |  2 +-
 .../Protocol/iOS/Page/NavigateCommand.cs      |  2 +-
 .../Protocol/iOS/Page/ReloadCommand.cs        |  2 +-
 .../RemoveScriptToEvaluateOnLoadCommand.cs    |  2 +-
 .../iOS/Page/SearchInResourceCommand.cs       |  2 +-
 .../iOS/Page/SearchInResourcesCommand.cs      |  2 +-
 .../SetCompositingBordersVisibleCommand.cs    |  2 +-
 .../iOS/Page/SetDocumentContentCommand.cs     |  2 +-
 .../iOS/Page/SetEmulatedMediaCommand.cs       |  2 +-
 .../Page/SetScriptExecutionDisabledCommand.cs |  2 +-
 .../iOS/Page/SetShowPaintRectsCommand.cs      |  2 +-
 .../Page/SetTouchEmulationEnabledCommand.cs   |  2 +-
 .../Protocol/iOS/Page/SnapshotNodeCommand.cs  |  2 +-
 .../Protocol/iOS/Page/SnapshotRectCommand.cs  |  2 +-
 .../iOS/Runtime/CallFunctionOnCommand.cs      |  2 +-
 .../Protocol/iOS/Runtime/DisableCommand.cs    |  2 +-
 .../iOS/Runtime/DisableTypeProfilerCommand.cs |  2 +-
 .../Protocol/iOS/Runtime/EnableCommand.cs     |  2 +-
 .../iOS/Runtime/EnableTypeProfilerCommand.cs  |  2 +-
 .../Protocol/iOS/Runtime/EvaluateCommand.cs   |  2 +-
 .../iOS/Runtime/GetBasicBlocksCommand.cs      |  2 +-
 .../Runtime/GetCollectionEntriesCommand.cs    |  2 +-
 .../GetDisplayablePropertiesCommand.cs        |  2 +-
 .../iOS/Runtime/GetPropertiesCommand.cs       |  2 +-
 ...untimeTypesForVariablesAtOffsetsCommand.cs |  2 +-
 .../Protocol/iOS/Runtime/ParseCommand.cs      |  2 +-
 .../iOS/Runtime/ReleaseObjectCommand.cs       |  2 +-
 .../iOS/Runtime/ReleaseObjectGroupCommand.cs  |  2 +-
 .../Protocol/iOS/Runtime/RunCommand.cs        |  2 +-
 .../Protocol/iOS/Runtime/SaveResultCommand.cs |  2 +-
 .../Protocol/iOS/Timeline/StartCommand.cs     |  2 +-
 .../Protocol/iOS/Timeline/StopCommand.cs      |  2 +-
 .../iOS/Worker/CanInspectWorkersCommand.cs    |  2 +-
 .../iOS/Worker/ConnectToWorkerCommand.cs      |  2 +-
 .../Protocol/iOS/Worker/DisableCommand.cs     |  2 +-
 .../iOS/Worker/DisconnectFromWorkerCommand.cs |  2 +-
 .../Protocol/iOS/Worker/EnableCommand.cs      |  2 +-
 .../iOS/Worker/SendMessageToWorkerCommand.cs  |  2 +-
 .../Worker/SetAutoconnectToWorkersCommand.cs  |  2 +-
 source/ProtocolGenerator/Program.cs           |  3 ++-
 source/Sample/Program.cs                      | 24 +++++++------------
 502 files changed, 529 insertions(+), 519 deletions(-)

diff --git a/source/ChromeDevTools/ChromeSession.cs b/source/ChromeDevTools/ChromeSession.cs
index 7c0d7ce..c8d6971 100644
--- a/source/ChromeDevTools/ChromeSession.cs
+++ b/source/ChromeDevTools/ChromeSession.cs
@@ -81,10 +81,23 @@ namespace MasterDevs.ChromeDevTools
             return SendCommand(command, cancellationToken);
         }
 
-        public Task<ICommandResponse> SendAsync<T>(T parameter, CancellationToken cancellationToken)
+        public Task<CommandResponse<T>> SendAsync<T>(ICommand<T> parameter, CancellationToken cancellationToken)
         {
             var command = _commandFactory.Create(parameter);
-            return SendCommand(command, cancellationToken);
+            var task = SendCommand(command, cancellationToken);
+            return CastTaskResult<ICommandResponse, CommandResponse<T>>(task);
+        }
+
+        private Task<TDerived> CastTaskResult<TBase, TDerived>(Task<TBase> task) where TDerived: TBase
+        {
+            var tcs = new TaskCompletionSource<TDerived>();
+            task.ContinueWith(t => tcs.SetResult((TDerived)t.Result),
+                TaskContinuationOptions.OnlyOnRanToCompletion);
+            task.ContinueWith(t => tcs.SetException(t.Exception.InnerExceptions),
+                TaskContinuationOptions.OnlyOnFaulted);
+            task.ContinueWith(t => tcs.SetCanceled(),
+                TaskContinuationOptions.OnlyOnCanceled);
+            return tcs.Task;
         }
 
         public void Subscribe<T>(Action<T> handler) where T : class
diff --git a/source/ChromeDevTools/ChromeSessionExtensions.cs b/source/ChromeDevTools/ChromeSessionExtensions.cs
index b0817f8..667890c 100644
--- a/source/ChromeDevTools/ChromeSessionExtensions.cs
+++ b/source/ChromeDevTools/ChromeSessionExtensions.cs
@@ -5,9 +5,9 @@ namespace MasterDevs.ChromeDevTools
 {
     public static class ChromeSessionExtensions
     {
-        public static Task<ICommandResponse> SendAsync<T>(this IChromeSession session, T parameter)
+        public static Task<CommandResponse<T>> SendAsync<T>(this IChromeSession session, ICommand<T> parameter)
         {
-            return session.SendAsync<T>(parameter, CancellationToken.None);
+            return session.SendAsync(parameter, CancellationToken.None);
         }
 
         public static Task<ICommandResponse> SendAsync<T>(this IChromeSession session)
diff --git a/source/ChromeDevTools/IChromeSession.cs b/source/ChromeDevTools/IChromeSession.cs
index e5ae25f..ef5d88e 100644
--- a/source/ChromeDevTools/IChromeSession.cs
+++ b/source/ChromeDevTools/IChromeSession.cs
@@ -4,9 +4,13 @@ using System.Threading.Tasks;
 
 namespace MasterDevs.ChromeDevTools
 {
+    public interface ICommand<T>
+    {
+
+    }
     public interface IChromeSession
     {
-        Task<ICommandResponse> SendAsync<T>(T parameter, CancellationToken cancellationToken);
+        Task<CommandResponse<TResponse>> SendAsync<TResponse>(ICommand<TResponse> parameter, CancellationToken cancellationToken);
 
         Task<ICommandResponse> SendAsync<T>(CancellationToken cancellationToken);
 
diff --git a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
index dd0fd19..9e97966 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetPartialAXTreeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 	/// </summary>
 	[Command(ProtocolName.Accessibility.GetPartialAXTree)]
 	[SupportedBy("Chrome")]
-	public class GetPartialAXTreeCommand
+	public class GetPartialAXTreeCommand: ICommand<GetPartialAXTreeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ID of node to get the partial accessibility tree for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/DisableCommand.cs
index 524c9d3..1a6fbdb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
index 8c28819..a1b2b4e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/GetCurrentTimeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetCurrentTimeCommand.cs
index 4c74987..06c868f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/GetCurrentTimeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetCurrentTimeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.GetCurrentTime)]
 	[SupportedBy("Chrome")]
-	public class GetCurrentTimeCommand
+	public class GetCurrentTimeCommand: ICommand<GetCurrentTimeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of animation.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
index c3769a5..39db814 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.GetPlaybackRate)]
 	[SupportedBy("Chrome")]
-	public class GetPlaybackRateCommand
+	public class GetPlaybackRateCommand: ICommand<GetPlaybackRateCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/ReleaseAnimationsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/ReleaseAnimationsCommand.cs
index 9537f52..0e0bd6d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/ReleaseAnimationsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/ReleaseAnimationsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.ReleaseAnimations)]
 	[SupportedBy("Chrome")]
-	public class ReleaseAnimationsCommand
+	public class ReleaseAnimationsCommand: ICommand<ReleaseAnimationsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets List of animation ids to seek.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/ResolveAnimationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/ResolveAnimationCommand.cs
index 6e368ff..25a0cee 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/ResolveAnimationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/ResolveAnimationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.ResolveAnimation)]
 	[SupportedBy("Chrome")]
-	public class ResolveAnimationCommand
+	public class ResolveAnimationCommand: ICommand<ResolveAnimationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Animation id.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/SeekAnimationsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SeekAnimationsCommand.cs
index 6f50c69..adff95b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/SeekAnimationsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SeekAnimationsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.SeekAnimations)]
 	[SupportedBy("Chrome")]
-	public class SeekAnimationsCommand
+	public class SeekAnimationsCommand: ICommand<SeekAnimationsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets List of animation ids to seek.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/SetPausedCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPausedCommand.cs
index 3966d53..53c44d9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/SetPausedCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPausedCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.SetPaused)]
 	[SupportedBy("Chrome")]
-	public class SetPausedCommand
+	public class SetPausedCommand: ICommand<SetPausedCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Animations to set the pause state of.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
index 651aeba..4aa7c4a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.SetPlaybackRate)]
 	[SupportedBy("Chrome")]
-	public class SetPlaybackRateCommand
+	public class SetPlaybackRateCommand: ICommand<SetPlaybackRateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Playback rate for animations on page
diff --git a/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
index 9b7ffd9..7ee3e5a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 	/// </summary>
 	[Command(ProtocolName.Animation.SetTiming)]
 	[SupportedBy("Chrome")]
-	public class SetTimingCommand
+	public class SetTimingCommand: ICommand<SetTimingCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Animation id.
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
index ffff30c..fe564db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
index 6dca4b4..4dfb871 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
 	[SupportedBy("Chrome")]
-	public class GetApplicationCacheForFrameCommand
+	public class GetApplicationCacheForFrameCommand: ICommand<GetApplicationCacheForFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame containing document whose application cache is retrieved.
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
index 0cd1f98..2d766a5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetFramesWithManifests)]
 	[SupportedBy("Chrome")]
-	public class GetFramesWithManifestsCommand
+	public class GetFramesWithManifestsCommand: ICommand<GetFramesWithManifestsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
index 5faa27e..9c83755 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetManifestForFrame)]
 	[SupportedBy("Chrome")]
-	public class GetManifestForFrameCommand
+	public class GetManifestForFrameCommand: ICommand<GetManifestForFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame containing document whose manifest is retrieved.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowBoundsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowBoundsCommand.cs
index f11d41c..baefafe 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowBoundsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowBoundsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Browser
 	/// </summary>
 	[Command(ProtocolName.Browser.GetWindowBounds)]
 	[SupportedBy("Chrome")]
-	public class GetWindowBoundsCommand
+	public class GetWindowBoundsCommand: ICommand<GetWindowBoundsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Browser window id.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowForTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowForTargetCommand.cs
index 2751813..cf8bd76 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowForTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Browser/GetWindowForTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Browser
 	/// </summary>
 	[Command(ProtocolName.Browser.GetWindowForTarget)]
 	[SupportedBy("Chrome")]
-	public class GetWindowForTargetCommand
+	public class GetWindowForTargetCommand: ICommand<GetWindowForTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Devtools agent host id.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Browser/SetWindowBoundsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Browser/SetWindowBoundsCommand.cs
index 680f472..f1b8829 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Browser/SetWindowBoundsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Browser/SetWindowBoundsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Browser
 	/// </summary>
 	[Command(ProtocolName.Browser.SetWindowBounds)]
 	[SupportedBy("Chrome")]
-	public class SetWindowBoundsCommand
+	public class SetWindowBoundsCommand: ICommand<SetWindowBoundsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Browser window id.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
index ba3998c..b4cc84b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.AddRule)]
 	[SupportedBy("Chrome")]
-	public class AddRuleCommand
+	public class AddRuleCommand: ICommand<AddRuleCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The css style sheet identifier where a new rule should be inserted.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/CollectClassNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CollectClassNamesCommand.cs
index ec2fc6b..da408ec 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/CollectClassNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CollectClassNamesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.CollectClassNames)]
 	[SupportedBy("Chrome")]
-	public class CollectClassNamesCommand
+	public class CollectClassNamesCommand: ICommand<CollectClassNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
index 26b472d..30e8b01 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.CreateStyleSheet)]
 	[SupportedBy("Chrome")]
-	public class CreateStyleSheetCommand
+	public class CreateStyleSheetCommand: ICommand<CreateStyleSheetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame where "via-inspector" stylesheet should be created.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
index 7d08df8..6e8fb95 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
index c0d53df..73c7a75 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
index 7400709..cd3f05f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.ForcePseudoState)]
 	[SupportedBy("Chrome")]
-	public class ForcePseudoStateCommand
+	public class ForcePseudoStateCommand: ICommand<ForcePseudoStateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The element id for which to force the pseudo state.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommand.cs
index 1508674..d04e602 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetBackgroundColorsCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	[Command(ProtocolName.CSS.GetBackgroundColors)]
 	[SupportedBy("Chrome")]
-	public class GetBackgroundColorsCommand
+	public class GetBackgroundColorsCommand: ICommand<GetBackgroundColorsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get background colors for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
index 9247eaf..e303d90 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetComputedStyleForNode)]
 	[SupportedBy("Chrome")]
-	public class GetComputedStyleForNodeCommand
+	public class GetComputedStyleForNodeCommand: ICommand<GetComputedStyleForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
index 1437f8a..c31633e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetInlineStylesForNode)]
 	[SupportedBy("Chrome")]
-	public class GetInlineStylesForNodeCommand
+	public class GetInlineStylesForNodeCommand: ICommand<GetInlineStylesForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetLayoutTreeAndStylesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetLayoutTreeAndStylesCommand.cs
index 3944eb6..f7d11dd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetLayoutTreeAndStylesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetLayoutTreeAndStylesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetLayoutTreeAndStyles)]
 	[SupportedBy("Chrome")]
-	public class GetLayoutTreeAndStylesCommand
+	public class GetLayoutTreeAndStylesCommand: ICommand<GetLayoutTreeAndStylesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whitelist of computed styles to return.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
index b5a69f7..3b8bda1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetMatchedStylesForNode)]
 	[SupportedBy("Chrome")]
-	public class GetMatchedStylesForNodeCommand
+	public class GetMatchedStylesForNodeCommand: ICommand<GetMatchedStylesForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
index fea14f3..0008763 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetMediaQueries)]
 	[SupportedBy("Chrome")]
-	public class GetMediaQueriesCommand
+	public class GetMediaQueriesCommand: ICommand<GetMediaQueriesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
index f1c0a84..cff0f3e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetPlatformFontsForNode)]
 	[SupportedBy("Chrome")]
-	public class GetPlatformFontsForNodeCommand
+	public class GetPlatformFontsForNodeCommand: ICommand<GetPlatformFontsForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
index 229c292..9a99905 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetStyleSheetText)]
 	[SupportedBy("Chrome")]
-	public class GetStyleSheetTextCommand
+	public class GetStyleSheetTextCommand: ICommand<GetStyleSheetTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetEffectivePropertyValueForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetEffectivePropertyValueForNodeCommand.cs
index d63487f..699b977 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetEffectivePropertyValueForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetEffectivePropertyValueForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetEffectivePropertyValueForNode)]
 	[SupportedBy("Chrome")]
-	public class SetEffectivePropertyValueForNodeCommand
+	public class SetEffectivePropertyValueForNodeCommand: ICommand<SetEffectivePropertyValueForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The element id for which to set property.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetKeyframeKeyCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetKeyframeKeyCommand.cs
index 417a1c9..0284cad 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetKeyframeKeyCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetKeyframeKeyCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetKeyframeKey)]
 	[SupportedBy("Chrome")]
-	public class SetKeyframeKeyCommand
+	public class SetKeyframeKeyCommand: ICommand<SetKeyframeKeyCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
index 7439107..cae0a86 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetMediaText)]
 	[SupportedBy("Chrome")]
-	public class SetMediaTextCommand
+	public class SetMediaTextCommand: ICommand<SetMediaTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
index 2fb444b..09ec4c8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetRuleSelector)]
 	[SupportedBy("Chrome")]
-	public class SetRuleSelectorCommand
+	public class SetRuleSelectorCommand: ICommand<SetRuleSelectorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
index 0522008..02149af 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetStyleSheetText)]
 	[SupportedBy("Chrome")]
-	public class SetStyleSheetTextCommand
+	public class SetStyleSheetTextCommand: ICommand<SetStyleSheetTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleTextsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleTextsCommand.cs
index 59be613..c41d83d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleTextsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleTextsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetStyleTexts)]
 	[SupportedBy("Chrome")]
-	public class SetStyleTextsCommand
+	public class SetStyleTextsCommand: ICommand<SetStyleTextsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Edits
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/StartRuleUsageTrackingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StartRuleUsageTrackingCommand.cs
index 5ed948b..0697003 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/StartRuleUsageTrackingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StartRuleUsageTrackingCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.StartRuleUsageTracking)]
 	[SupportedBy("Chrome")]
-	public class StartRuleUsageTrackingCommand
+	public class StartRuleUsageTrackingCommand: ICommand<StartRuleUsageTrackingCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/StopRuleUsageTrackingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StopRuleUsageTrackingCommand.cs
index 8efb543..d1fb1b3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/StopRuleUsageTrackingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StopRuleUsageTrackingCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.StopRuleUsageTracking)]
 	[SupportedBy("Chrome")]
-	public class StopRuleUsageTrackingCommand
+	public class StopRuleUsageTrackingCommand: ICommand<StopRuleUsageTrackingCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/TakeCoverageDeltaCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/TakeCoverageDeltaCommand.cs
index e44ce3d..50f9115 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CSS/TakeCoverageDeltaCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/TakeCoverageDeltaCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.TakeCoverageDelta)]
 	[SupportedBy("Chrome")]
-	public class TakeCoverageDeltaCommand
+	public class TakeCoverageDeltaCommand: ICommand<TakeCoverageDeltaCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
index 7471b1d..f2d627e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.DeleteCache)]
 	[SupportedBy("Chrome")]
-	public class DeleteCacheCommand
+	public class DeleteCacheCommand: ICommand<DeleteCacheCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of cache for deletion.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteEntryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteEntryCommand.cs
index 79bc109..4abbab3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteEntryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteEntryCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.DeleteEntry)]
 	[SupportedBy("Chrome")]
-	public class DeleteEntryCommand
+	public class DeleteEntryCommand: ICommand<DeleteEntryCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of cache where the entry will be deleted.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
index 616de72..f1a0eb8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.RequestCacheNames)]
 	[SupportedBy("Chrome")]
-	public class RequestCacheNamesCommand
+	public class RequestCacheNamesCommand: ICommand<RequestCacheNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
index 878856f..4bddb41 100644
--- a/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.RequestEntries)]
 	[SupportedBy("Chrome")]
-	public class RequestEntriesCommand
+	public class RequestEntriesCommand: ICommand<RequestEntriesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ID of cache to get entries from.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
index 8cd25be..d123bc5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 	/// </summary>
 	[Command(ProtocolName.Console.ClearMessages)]
 	[SupportedBy("Chrome")]
-	public class ClearMessagesCommand
+	public class ClearMessagesCommand: ICommand<ClearMessagesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
index 24ebcf9..88056d9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 	/// </summary>
 	[Command(ProtocolName.Console.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
index 7e98dd7..b88c914 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 	/// </summary>
 	[Command(ProtocolName.Console.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/CollectClassNamesFromSubtreeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/CollectClassNamesFromSubtreeCommand.cs
index 22baa4b..0e6767f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/CollectClassNamesFromSubtreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/CollectClassNamesFromSubtreeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.CollectClassNamesFromSubtree)]
 	[SupportedBy("Chrome")]
-	public class CollectClassNamesFromSubtreeCommand
+	public class CollectClassNamesFromSubtreeCommand: ICommand<CollectClassNamesFromSubtreeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to collect class names.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
index d9857fd..1dd4acb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.CopyTo)]
 	[SupportedBy("Chrome")]
-	public class CopyToCommand
+	public class CopyToCommand: ICommand<CopyToCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to copy.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
index 82931bd..fa4b32c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
index 6283ea6..33268db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.DiscardSearchResults)]
 	[SupportedBy("Chrome")]
-	public class DiscardSearchResultsCommand
+	public class DiscardSearchResultsCommand: ICommand<DiscardSearchResultsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Unique search session identifier.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
index 9334d2b..1ba5d18 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
index ef3e41a..cb2c6db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Focus)]
 	[SupportedBy("Chrome")]
-	public class FocusCommand
+	public class FocusCommand: ICommand<FocusCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to focus.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
index 214beab..5a5a3d0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetAttributes)]
 	[SupportedBy("Chrome")]
-	public class GetAttributesCommand
+	public class GetAttributesCommand: ICommand<GetAttributesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to retrieve attibutes for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
index 9c2d8b8..684fcec 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetBoxModel)]
 	[SupportedBy("Chrome")]
-	public class GetBoxModelCommand
+	public class GetBoxModelCommand: ICommand<GetBoxModelCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get box model for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
index ad40297..e1a7d09 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetDocument)]
 	[SupportedBy("Chrome")]
-	public class GetDocumentCommand
+	public class GetDocumentCommand: ICommand<GetDocumentCommandResponse>
 	{
 		/// <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.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
index b098415..f8d62ee 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetFlattenedDocumentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetFlattenedDocument)]
 	[SupportedBy("Chrome")]
-	public class GetFlattenedDocumentCommand
+	public class GetFlattenedDocumentCommand: ICommand<GetFlattenedDocumentCommandResponse>
 	{
 		/// <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.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
index 5ae9d8b..37202b7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetNodeForLocation)]
 	[SupportedBy("Chrome")]
-	public class GetNodeForLocationCommand
+	public class GetNodeForLocationCommand: ICommand<GetNodeForLocationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
index 279c92b..d8229db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetOuterHTML)]
 	[SupportedBy("Chrome")]
-	public class GetOuterHTMLCommand
+	public class GetOuterHTMLCommand: ICommand<GetOuterHTMLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get markup for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
index 4a8da01..f092478 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetRelayoutBoundary)]
 	[SupportedBy("Chrome")]
-	public class GetRelayoutBoundaryCommand
+	public class GetRelayoutBoundaryCommand: ICommand<GetRelayoutBoundaryCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
index 984d493..38110c7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetSearchResults)]
 	[SupportedBy("Chrome")]
-	public class GetSearchResultsCommand
+	public class GetSearchResultsCommand: ICommand<GetSearchResultsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Unique search session identifier.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
index f82620d..0e668d7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HideHighlight)]
 	[SupportedBy("Chrome")]
-	public class HideHighlightCommand
+	public class HideHighlightCommand: ICommand<HideHighlightCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
index 8579ae3..9c6087c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightNode)]
 	[SupportedBy("Chrome")]
-	public class HighlightNodeCommand
+	public class HighlightNodeCommand: ICommand<HighlightNodeCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
index 8e93891..dfb034a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightRect)]
 	[SupportedBy("Chrome")]
-	public class HighlightRectCommand
+	public class HighlightRectCommand: ICommand<HighlightRectCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
index 4516516..88dc65c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.MarkUndoableState)]
 	[SupportedBy("Chrome")]
-	public class MarkUndoableStateCommand
+	public class MarkUndoableStateCommand: ICommand<MarkUndoableStateCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
index 4f30c31..ba0d569 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.MoveTo)]
 	[SupportedBy("Chrome")]
-	public class MoveToCommand
+	public class MoveToCommand: ICommand<MoveToCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to move.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
index 8462063..15de5f7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PerformSearch)]
 	[SupportedBy("Chrome")]
-	public class PerformSearchCommand
+	public class PerformSearchCommand: ICommand<PerformSearchCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Plain text or query selector or XPath search query.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
index 4c18a67..83091b3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodeByPathToFrontend)]
 	[SupportedBy("Chrome")]
-	public class PushNodeByPathToFrontendCommand
+	public class PushNodeByPathToFrontendCommand: ICommand<PushNodeByPathToFrontendCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Path to node in the proprietary format.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
index 4fa0a09..bc65bf5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodesByBackendIdsToFrontend)]
 	[SupportedBy("Chrome")]
-	public class PushNodesByBackendIdsToFrontendCommand
+	public class PushNodesByBackendIdsToFrontendCommand: ICommand<PushNodesByBackendIdsToFrontendCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The array of backend node ids.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
index 3b4bb84..ae75d2c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelectorAll)]
 	[SupportedBy("Chrome")]
-	public class QuerySelectorAllCommand
+	public class QuerySelectorAllCommand: ICommand<QuerySelectorAllCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to query upon.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
index 83d9442..b98abf2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelector)]
 	[SupportedBy("Chrome")]
-	public class QuerySelectorCommand
+	public class QuerySelectorCommand: ICommand<QuerySelectorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to query upon.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
index f4633d1..17ce3b3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Redo)]
 	[SupportedBy("Chrome")]
-	public class RedoCommand
+	public class RedoCommand: ICommand<RedoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
index e37d0f4..ddf2000 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveAttribute)]
 	[SupportedBy("Chrome")]
-	public class RemoveAttributeCommand
+	public class RemoveAttributeCommand: ICommand<RemoveAttributeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to remove attribute from.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
index 1460cef..91cd80f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveNode)]
 	[SupportedBy("Chrome")]
-	public class RemoveNodeCommand
+	public class RemoveNodeCommand: ICommand<RemoveNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to remove.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
index 623161c..828e2b0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestChildNodes)]
 	[SupportedBy("Chrome")]
-	public class RequestChildNodesCommand
+	public class RequestChildNodesCommand: ICommand<RequestChildNodesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get children for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
index ee26ae9..531cb66 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestNode)]
 	[SupportedBy("Chrome")]
-	public class RequestNodeCommand
+	public class RequestNodeCommand: ICommand<RequestNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets JavaScript object id to convert into node.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
index 830c5a0..4ef0a9d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.ResolveNode)]
 	[SupportedBy("Chrome")]
-	public class ResolveNodeCommand
+	public class ResolveNodeCommand: ICommand<ResolveNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to resolve.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
index 2366dbd..f8e4b24 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributeValue)]
 	[SupportedBy("Chrome")]
-	public class SetAttributeValueCommand
+	public class SetAttributeValueCommand: ICommand<SetAttributeValueCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to set attribute for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
index ab329a0..e172e4a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributesAsText)]
 	[SupportedBy("Chrome")]
-	public class SetAttributesAsTextCommand
+	public class SetAttributesAsTextCommand: ICommand<SetAttributesAsTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to set attributes for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
index d5d7b76..e704426 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetFileInputFiles)]
 	[SupportedBy("Chrome")]
-	public class SetFileInputFilesCommand
+	public class SetFileInputFilesCommand: ICommand<SetFileInputFilesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the file input node to set files for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
index 382b261..5a49586 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetInspectedNode)]
 	[SupportedBy("Chrome")]
-	public class SetInspectedNodeCommand
+	public class SetInspectedNodeCommand: ICommand<SetInspectedNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DOM node id to be accessible by means of $x command line API.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
index 71b11a4..3bd4182 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeName)]
 	[SupportedBy("Chrome")]
-	public class SetNodeNameCommand
+	public class SetNodeNameCommand: ICommand<SetNodeNameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set name for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
index f844056..5bda04d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeValue)]
 	[SupportedBy("Chrome")]
-	public class SetNodeValueCommand
+	public class SetNodeValueCommand: ICommand<SetNodeValueCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set value for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
index 1c1fd49..4202760 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetOuterHTML)]
 	[SupportedBy("Chrome")]
-	public class SetOuterHTMLCommand
+	public class SetOuterHTMLCommand: ICommand<SetOuterHTMLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set markup for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
index 0694c1e..e030e1a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Undo)]
 	[SupportedBy("Chrome")]
-	public class UndoCommand
+	public class UndoCommand: ICommand<UndoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
index 353df4c..bc1e9bb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/GetEventListenersCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.GetEventListeners)]
 	[SupportedBy("Chrome")]
-	public class GetEventListenersCommand
+	public class GetEventListenersCommand: ICommand<GetEventListenersCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to return listeners for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
index 3e97412..d9fb68c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class RemoveDOMBreakpointCommand
+	public class RemoveDOMBreakpointCommand: ICommand<RemoveDOMBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the node to remove breakpoint from.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
index 9007ca5..66569c1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class RemoveEventListenerBreakpointCommand
+	public class RemoveEventListenerBreakpointCommand: ICommand<RemoveEventListenerBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Event name.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
index 170fab4..0961571 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class RemoveInstrumentationBreakpointCommand
+	public class RemoveInstrumentationBreakpointCommand: ICommand<RemoveInstrumentationBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Instrumentation name to stop on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
index 6708f25..c44d4c2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class RemoveXHRBreakpointCommand
+	public class RemoveXHRBreakpointCommand: ICommand<RemoveXHRBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Resource URL substring.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
index 7bc2ede..96108d3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class SetDOMBreakpointCommand
+	public class SetDOMBreakpointCommand: ICommand<SetDOMBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the node to set breakpoint on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
index 13e2f38..8950005 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class SetEventListenerBreakpointCommand
+	public class SetEventListenerBreakpointCommand: ICommand<SetEventListenerBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DOM Event name to stop on (any DOM event will do).
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
index 985ca8d..f68cffb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class SetInstrumentationBreakpointCommand
+	public class SetInstrumentationBreakpointCommand: ICommand<SetInstrumentationBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Instrumentation name to stop on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
index f543fbd..aff208c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class SetXHRBreakpointCommand
+	public class SetXHRBreakpointCommand: ICommand<SetXHRBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/ClearCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/ClearCommand.cs
index 55abdde..b1b327c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/ClearCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/ClearCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.Clear)]
 	[SupportedBy("Chrome")]
-	public class ClearCommand
+	public class ClearCommand: ICommand<ClearCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
index 9ba51da..1add3ce 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
index 4a4a2c2..cf1732d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
index 15e3021..606e821 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.GetDOMStorageItems)]
 	[SupportedBy("Chrome")]
-	public class GetDOMStorageItemsCommand
+	public class GetDOMStorageItemsCommand: ICommand<GetDOMStorageItemsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
index 21a1f4b..a39bfd0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
 	[SupportedBy("Chrome")]
-	public class RemoveDOMStorageItemCommand
+	public class RemoveDOMStorageItemCommand: ICommand<RemoveDOMStorageItemCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
index 0ab1798..ebdb11f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.SetDOMStorageItem)]
 	[SupportedBy("Chrome")]
-	public class SetDOMStorageItemCommand
+	public class SetDOMStorageItemCommand: ICommand<SetDOMStorageItemCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
index 8d1cea2..e9cd9fb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
 	/// </summary>
 	[Command(ProtocolName.Database.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
index 01c7d1b..5d3352e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
 	/// </summary>
 	[Command(ProtocolName.Database.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
index 327d6c4..0350d8e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
 {
 	[Command(ProtocolName.Database.ExecuteSQL)]
 	[SupportedBy("Chrome")]
-	public class ExecuteSQLCommand
+	public class ExecuteSQLCommand: ICommand<ExecuteSQLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DatabaseId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
index 37c8bd7..f9049ee 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
 {
 	[Command(ProtocolName.Database.GetDatabaseTableNames)]
 	[SupportedBy("Chrome")]
-	public class GetDatabaseTableNamesCommand
+	public class GetDatabaseTableNamesCommand: ICommand<GetDatabaseTableNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DatabaseId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
index 648ae7d..fd011ce 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.ContinueToLocation)]
 	[SupportedBy("Chrome")]
-	public class ContinueToLocationCommand
+	public class ContinueToLocationCommand: ICommand<ContinueToLocationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Location to continue to.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
index be4789a..3c4f1da 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
index 7303c6d..dd7e1ec 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
index c2baf27..620709e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.EvaluateOnCallFrame)]
 	[SupportedBy("Chrome")]
-	public class EvaluateOnCallFrameCommand
+	public class EvaluateOnCallFrameCommand: ICommand<EvaluateOnCallFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Call frame identifier to evaluate on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
index d716ad4..75c124b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPossibleBreakpointsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetPossibleBreakpoints)]
 	[SupportedBy("Chrome")]
-	public class GetPossibleBreakpointsCommand
+	public class GetPossibleBreakpointsCommand: ICommand<GetPossibleBreakpointsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Start of range to search possible breakpoint locations in.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
index 5873ee4..a031353 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetScriptSource)]
 	[SupportedBy("Chrome")]
-	public class GetScriptSourceCommand
+	public class GetScriptSourceCommand: ICommand<GetScriptSourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to get source for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
index 0370295..ecbab66 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Pause)]
 	[SupportedBy("Chrome")]
-	public class PauseCommand
+	public class PauseCommand: ICommand<PauseCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
index 99a401e..c841b84 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.RemoveBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class RemoveBreakpointCommand
+	public class RemoveBreakpointCommand: ICommand<RemoveBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets BreakpointId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
index bad86b7..c11f5e8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.RestartFrame)]
 	[SupportedBy("Chrome")]
-	public class RestartFrameCommand
+	public class RestartFrameCommand: ICommand<RestartFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Call frame identifier to evaluate on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
index e3a1483..7b48411 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Resume)]
 	[SupportedBy("Chrome")]
-	public class ResumeCommand
+	public class ResumeCommand: ICommand<ResumeCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScheduleStepIntoAsyncCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScheduleStepIntoAsyncCommand.cs
index 2591ad6..2408244 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/ScheduleStepIntoAsyncCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScheduleStepIntoAsyncCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.ScheduleStepIntoAsync)]
 	[SupportedBy("Chrome")]
-	public class ScheduleStepIntoAsyncCommand
+	public class ScheduleStepIntoAsyncCommand: ICommand<ScheduleStepIntoAsyncCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
index f5d7e22..8f12389 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SearchInContent)]
 	[SupportedBy("Chrome")]
-	public class SearchInContentCommand
+	public class SearchInContentCommand: ICommand<SearchInContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to search in.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
index dcdb20d..314240d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetAsyncCallStackDepth)]
 	[SupportedBy("Chrome")]
-	public class SetAsyncCallStackDepthCommand
+	public class SetAsyncCallStackDepthCommand: ICommand<SetAsyncCallStackDepthCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Maximum depth of async call stacks. Setting to <code>0</code> will effectively disable collecting async call stacks (default).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxPatternsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxPatternsCommand.cs
index 4968b88..33de154 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxPatternsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxPatternsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBlackboxPatterns)]
 	[SupportedBy("Chrome")]
-	public class SetBlackboxPatternsCommand
+	public class SetBlackboxPatternsCommand: ICommand<SetBlackboxPatternsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Array of regexps that will be used to check script url for blackbox state.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxedRangesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxedRangesCommand.cs
index f2b39e7..4a662ca 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxedRangesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBlackboxedRangesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBlackboxedRanges)]
 	[SupportedBy("Chrome")]
-	public class SetBlackboxedRangesCommand
+	public class SetBlackboxedRangesCommand: ICommand<SetBlackboxedRangesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
index 5f0c899..da7207f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointByUrl)]
 	[SupportedBy("Chrome")]
-	public class SetBreakpointByUrlCommand
+	public class SetBreakpointByUrlCommand: ICommand<SetBreakpointByUrlCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Line number to set breakpoint at.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
index 5cafedd..09a2dcf 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpoint)]
 	[SupportedBy("Chrome")]
-	public class SetBreakpointCommand
+	public class SetBreakpointCommand: ICommand<SetBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Location to set breakpoint in.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
index acdb2c8..b93daf0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointsActive)]
 	[SupportedBy("Chrome")]
-	public class SetBreakpointsActiveCommand
+	public class SetBreakpointsActiveCommand: ICommand<SetBreakpointsActiveCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets New value for breakpoints active state.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
index 480b053..815e85d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetPauseOnExceptions)]
 	[SupportedBy("Chrome")]
-	public class SetPauseOnExceptionsCommand
+	public class SetPauseOnExceptionsCommand: ICommand<SetPauseOnExceptionsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Pause on exceptions mode.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
index 98677b6..8af5fae 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetScriptSource)]
 	[SupportedBy("Chrome")]
-	public class SetScriptSourceCommand
+	public class SetScriptSourceCommand: ICommand<SetScriptSourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to edit.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
index c5f2138..f8a05b4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetSkipAllPauses)]
 	[SupportedBy("Chrome")]
-	public class SetSkipAllPausesCommand
+	public class SetSkipAllPausesCommand: ICommand<SetSkipAllPausesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets New value for skip pauses state.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
index a85bf64..580406b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetVariableValue)]
 	[SupportedBy("Chrome")]
-	public class SetVariableValueCommand
+	public class SetVariableValueCommand: ICommand<SetVariableValueCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
index f7263b3..607694c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepInto)]
 	[SupportedBy("Chrome")]
-	public class StepIntoCommand
+	public class StepIntoCommand: ICommand<StepIntoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
index 5b65d4a..3e49c2f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOut)]
 	[SupportedBy("Chrome")]
-	public class StepOutCommand
+	public class StepOutCommand: ICommand<StepOutCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
index 65daa3e..bfecf2e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOver)]
 	[SupportedBy("Chrome")]
-	public class StepOverCommand
+	public class StepOverCommand: ICommand<StepOverCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
index 62bf4f5..95bae6a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 	/// </summary>
 	[Command(ProtocolName.DeviceOrientation.ClearDeviceOrientationOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearDeviceOrientationOverrideCommand
+	public class ClearDeviceOrientationOverrideCommand: ICommand<ClearDeviceOrientationOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
index 3af33ab..bb9b4c0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 	/// </summary>
 	[Command(ProtocolName.DeviceOrientation.SetDeviceOrientationOverride)]
 	[SupportedBy("Chrome")]
-	public class SetDeviceOrientationOverrideCommand
+	public class SetDeviceOrientationOverrideCommand: ICommand<SetDeviceOrientationOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Mock alpha
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
index 139ccb7..498e7dd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.CanEmulate)]
 	[SupportedBy("Chrome")]
-	public class CanEmulateCommand
+	public class CanEmulateCommand: ICommand<CanEmulateCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
index 20e690f..e77d07b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.ClearDeviceMetricsOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearDeviceMetricsOverrideCommand
+	public class ClearDeviceMetricsOverrideCommand: ICommand<ClearDeviceMetricsOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
index ce05f83..459febd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.ClearGeolocationOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearGeolocationOverrideCommand
+	public class ClearGeolocationOverrideCommand: ICommand<ClearGeolocationOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ForceViewportCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ForceViewportCommand.cs
index 554f0f0..f33be9c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ForceViewportCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ForceViewportCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.ForceViewport)]
 	[SupportedBy("Chrome")]
-	public class ForceViewportCommand
+	public class ForceViewportCommand: ICommand<ForceViewportCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate of top-left corner of the area (CSS pixels).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetPageScaleFactorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetPageScaleFactorCommand.cs
index 2025d8b..a8658e8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetPageScaleFactorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetPageScaleFactorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.ResetPageScaleFactor)]
 	[SupportedBy("Chrome")]
-	public class ResetPageScaleFactorCommand
+	public class ResetPageScaleFactorCommand: ICommand<ResetPageScaleFactorCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetViewportCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetViewportCommand.cs
index 16f5d7e..551178e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetViewportCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetViewportCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.ResetViewport)]
 	[SupportedBy("Chrome")]
-	public class ResetViewportCommand
+	public class ResetViewportCommand: ICommand<ResetViewportCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetCPUThrottlingRateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetCPUThrottlingRateCommand.cs
index 7d4a571..4effc0b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetCPUThrottlingRateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetCPUThrottlingRateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetCPUThrottlingRate)]
 	[SupportedBy("Chrome")]
-	public class SetCPUThrottlingRateCommand
+	public class SetCPUThrottlingRateCommand: ICommand<SetCPUThrottlingRateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
index 500fe4b..75a4548 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDefaultBackgroundColorOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetDefaultBackgroundColorOverride)]
 	[SupportedBy("Chrome")]
-	public class SetDefaultBackgroundColorOverrideCommand
+	public class SetDefaultBackgroundColorOverrideCommand: ICommand<SetDefaultBackgroundColorOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets RGBA of the default background color. If not specified, any existing override will be cleared.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
index df73e8e..22cc8ae 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetDeviceMetricsOverride)]
 	[SupportedBy("Chrome")]
-	public class SetDeviceMetricsOverrideCommand
+	public class SetDeviceMetricsOverrideCommand: ICommand<SetDeviceMetricsOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
index c59bf52..2b941b6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetEmulatedMedia)]
 	[SupportedBy("Chrome")]
-	public class SetEmulatedMediaCommand
+	public class SetEmulatedMediaCommand: ICommand<SetEmulatedMediaCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Media type to emulate. Empty string disables the override.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
index d1ddbeb..3ce4123 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetGeolocationOverride)]
 	[SupportedBy("Chrome")]
-	public class SetGeolocationOverrideCommand
+	public class SetGeolocationOverrideCommand: ICommand<SetGeolocationOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Mock latitude
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
index bc0b883..f0e57f7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetPageScaleFactor)]
 	[SupportedBy("Chrome")]
-	public class SetPageScaleFactorCommand
+	public class SetPageScaleFactorCommand: ICommand<SetPageScaleFactorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Page scale factor.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
index 8c56471..bad31db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetScriptExecutionDisabled)]
 	[SupportedBy("Chrome")]
-	public class SetScriptExecutionDisabledCommand
+	public class SetScriptExecutionDisabledCommand: ICommand<SetScriptExecutionDisabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether script execution should be disabled in the page.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
index b050c23..cfa269b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetTouchEmulationEnabled)]
 	[SupportedBy("Chrome")]
-	public class SetTouchEmulationEnabledCommand
+	public class SetTouchEmulationEnabledCommand: ICommand<SetTouchEmulationEnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether the touch event emulation should be enabled.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
index 96562f0..5ee5996 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVirtualTimePolicyCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetVirtualTimePolicy)]
 	[SupportedBy("Chrome")]
-	public class SetVirtualTimePolicyCommand
+	public class SetVirtualTimePolicyCommand: ICommand<SetVirtualTimePolicyCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Policy
diff --git a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVisibleSizeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVisibleSizeCommand.cs
index 75209a7..28efd57 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVisibleSizeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetVisibleSizeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetVisibleSize)]
 	[SupportedBy("Chrome")]
-	public class SetVisibleSizeCommand
+	public class SetVisibleSizeCommand: ICommand<SetVisibleSizeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame width (DIP).
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
index 7c1cd1b..61c6750 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 	/// </summary>
 	[Command(ProtocolName.HeapProfiler.AddInspectedHeapObject)]
 	[SupportedBy("Chrome")]
-	public class AddInspectedHeapObjectCommand
+	public class AddInspectedHeapObjectCommand: ICommand<AddInspectedHeapObjectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Heap snapshot object id to be accessible by means of $x command line API.
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
index 8709d0a..cc559b1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.CollectGarbage)]
 	[SupportedBy("Chrome")]
-	public class CollectGarbageCommand
+	public class CollectGarbageCommand: ICommand<CollectGarbageCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
index 8607df5..fdeb4c1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
index a67d1fa..f8ab155 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
index 3a0549f..b2d840e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.GetHeapObjectId)]
 	[SupportedBy("Chrome")]
-	public class GetHeapObjectIdCommand
+	public class GetHeapObjectIdCommand: ICommand<GetHeapObjectIdCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to get heap object id for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
index e94afc8..7b45fdf 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.GetObjectByHeapObjectId)]
 	[SupportedBy("Chrome")]
-	public class GetObjectByHeapObjectIdCommand
+	public class GetObjectByHeapObjectIdCommand: ICommand<GetObjectByHeapObjectIdCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ObjectId
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
index 0f7a69d..0cb0c1d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartSamplingCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StartSampling)]
 	[SupportedBy("Chrome")]
-	public class StartSamplingCommand
+	public class StartSamplingCommand: ICommand<StartSamplingCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes.
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
index c82d34f..c502f7f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StartTrackingHeapObjects)]
 	[SupportedBy("Chrome")]
-	public class StartTrackingHeapObjectsCommand
+	public class StartTrackingHeapObjectsCommand: ICommand<StartTrackingHeapObjectsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TrackAllocations
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopSamplingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopSamplingCommand.cs
index 6cd352b..8ea24df 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopSamplingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopSamplingCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StopSampling)]
 	[SupportedBy("Chrome")]
-	public class StopSamplingCommand
+	public class StopSamplingCommand: ICommand<StopSamplingCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
index a806cb9..a24b215 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StopTrackingHeapObjects)]
 	[SupportedBy("Chrome")]
-	public class StopTrackingHeapObjectsCommand
+	public class StopTrackingHeapObjectsCommand: ICommand<StopTrackingHeapObjectsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped.
diff --git a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
index acfabec..39df4cd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.TakeHeapSnapshot)]
 	[SupportedBy("Chrome")]
-	public class TakeHeapSnapshotCommand
+	public class TakeHeapSnapshotCommand: ICommand<TakeHeapSnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IO/CloseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IO/CloseCommand.cs
index 541e7cb..4d913ad 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IO/CloseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IO/CloseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IO
 	/// </summary>
 	[Command(ProtocolName.IO.Close)]
 	[SupportedBy("Chrome")]
-	public class CloseCommand
+	public class CloseCommand: ICommand<CloseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Handle of the stream to close.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
index 3e0a5eb..bc580ff 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IO/ReadCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IO
 	/// </summary>
 	[Command(ProtocolName.IO.Read)]
 	[SupportedBy("Chrome")]
-	public class ReadCommand
+	public class ReadCommand: ICommand<ReadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Handle of the stream to read.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
index 2284cdd..90ac71a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.ClearObjectStore)]
 	[SupportedBy("Chrome")]
-	public class ClearObjectStoreCommand
+	public class ClearObjectStoreCommand: ICommand<ClearObjectStoreCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DeleteDatabaseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DeleteDatabaseCommand.cs
index c514cbd..c72b7c5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DeleteDatabaseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DeleteDatabaseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.DeleteDatabase)]
 	[SupportedBy("Chrome")]
-	public class DeleteDatabaseCommand
+	public class DeleteDatabaseCommand: ICommand<DeleteDatabaseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
index 91df3b8..34ccea4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
index a2f4656..a799505 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
index 95b5e5b..5cde7b3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestData)]
 	[SupportedBy("Chrome")]
-	public class RequestDataCommand
+	public class RequestDataCommand: ICommand<RequestDataCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
index b836cef..816b801 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabase)]
 	[SupportedBy("Chrome")]
-	public class RequestDatabaseCommand
+	public class RequestDatabaseCommand: ICommand<RequestDatabaseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
index d0a1e5b..4746319 100644
--- a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabaseNames)]
 	[SupportedBy("Chrome")]
-	public class RequestDatabaseNamesCommand
+	public class RequestDatabaseNamesCommand: ICommand<RequestDatabaseNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
index 04ffa56..306544e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchKeyEvent)]
 	[SupportedBy("Chrome")]
-	public class DispatchKeyEventCommand
+	public class DispatchKeyEventCommand: ICommand<DispatchKeyEventCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Type of the key event.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
index 79e6672..4d8b6ec 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchMouseEvent)]
 	[SupportedBy("Chrome")]
-	public class DispatchMouseEventCommand
+	public class DispatchMouseEventCommand: ICommand<DispatchMouseEventCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Type of the mouse event.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
index 3e52eb5..5eb1805 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchTouchEvent)]
 	[SupportedBy("Chrome")]
-	public class DispatchTouchEventCommand
+	public class DispatchTouchEventCommand: ICommand<DispatchTouchEventCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Type of the touch event.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
index 76dd249..a975162 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.EmulateTouchFromMouseEvent)]
 	[SupportedBy("Chrome")]
-	public class EmulateTouchFromMouseEventCommand
+	public class EmulateTouchFromMouseEventCommand: ICommand<EmulateTouchFromMouseEventCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Type of the mouse event.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/SetIgnoreInputEventsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SetIgnoreInputEventsCommand.cs
index 6f86b1a..2b965d4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/SetIgnoreInputEventsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SetIgnoreInputEventsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.SetIgnoreInputEvents)]
 	[SupportedBy("Chrome")]
-	public class SetIgnoreInputEventsCommand
+	public class SetIgnoreInputEventsCommand: ICommand<SetIgnoreInputEventsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Ignores input events processing when set to true.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
index 34cf27e..29321fc 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizePinchGesture)]
 	[SupportedBy("Chrome")]
-	public class SynthesizePinchGestureCommand
+	public class SynthesizePinchGestureCommand: ICommand<SynthesizePinchGestureCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate of the start of the gesture in CSS pixels.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
index b28f8b4..59adc18 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizeScrollGesture)]
 	[SupportedBy("Chrome")]
-	public class SynthesizeScrollGestureCommand
+	public class SynthesizeScrollGestureCommand: ICommand<SynthesizeScrollGestureCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate of the start of the gesture in CSS pixels.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
index 4cab53d..b3d12fd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizeTapGesture)]
 	[SupportedBy("Chrome")]
-	public class SynthesizeTapGestureCommand
+	public class SynthesizeTapGestureCommand: ICommand<SynthesizeTapGestureCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate of the start of the gesture in CSS pixels.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
index e7fdb95..2211082 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
 	/// </summary>
 	[Command(ProtocolName.Inspector.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
index 1f108e7..c890fb9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
 	/// </summary>
 	[Command(ProtocolName.Inspector.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
index 4af8a36..d47ce2b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.CompositingReasons)]
 	[SupportedBy("Chrome")]
-	public class CompositingReasonsCommand
+	public class CompositingReasonsCommand: ICommand<CompositingReasonsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer for which we want to get the reasons it was composited.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
index 0715a03..d9ae03a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
index b2f8123..4c052c2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
index 28b1043..0c456c3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.LoadSnapshot)]
 	[SupportedBy("Chrome")]
-	public class LoadSnapshotCommand
+	public class LoadSnapshotCommand: ICommand<LoadSnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets An array of tiles composing the snapshot.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
index 0fefe9a..e847b34 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.MakeSnapshot)]
 	[SupportedBy("Chrome")]
-	public class MakeSnapshotCommand
+	public class MakeSnapshotCommand: ICommand<MakeSnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
index 771d3b2..7a862e7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	[Command(ProtocolName.LayerTree.ProfileSnapshot)]
 	[SupportedBy("Chrome")]
-	public class ProfileSnapshotCommand
+	public class ProfileSnapshotCommand: ICommand<ProfileSnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer snapshot.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
index 69cdd02..b0e0cea 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.ReleaseSnapshot)]
 	[SupportedBy("Chrome")]
-	public class ReleaseSnapshotCommand
+	public class ReleaseSnapshotCommand: ICommand<ReleaseSnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer snapshot.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
index 81f336f..b8b493c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.ReplaySnapshot)]
 	[SupportedBy("Chrome")]
-	public class ReplaySnapshotCommand
+	public class ReplaySnapshotCommand: ICommand<ReplaySnapshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer snapshot.
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
index 182206a..64d40aa 100644
--- a/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.SnapshotCommandLog)]
 	[SupportedBy("Chrome")]
-	public class SnapshotCommandLogCommand
+	public class SnapshotCommandLogCommand: ICommand<SnapshotCommandLogCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer snapshot.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/ClearCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Log/ClearCommand.cs
index fae6ee8..752bf5a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/ClearCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/ClearCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 	/// </summary>
 	[Command(ProtocolName.Log.Clear)]
 	[SupportedBy("Chrome")]
-	public class ClearCommand
+	public class ClearCommand: ICommand<ClearCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Log/DisableCommand.cs
index 68248f2..efa3400 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 	/// </summary>
 	[Command(ProtocolName.Log.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Log/EnableCommand.cs
index e0d64c1..292da21 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 	/// </summary>
 	[Command(ProtocolName.Log.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/StartViolationsReportCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Log/StartViolationsReportCommand.cs
index fd20354..2d73f97 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/StartViolationsReportCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/StartViolationsReportCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 	/// </summary>
 	[Command(ProtocolName.Log.StartViolationsReport)]
 	[SupportedBy("Chrome")]
-	public class StartViolationsReportCommand
+	public class StartViolationsReportCommand: ICommand<StartViolationsReportCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Configuration for violations.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Log/StopViolationsReportCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Log/StopViolationsReportCommand.cs
index a313385..ad3e5dc 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Log/StopViolationsReportCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Log/StopViolationsReportCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Log
 	/// </summary>
 	[Command(ProtocolName.Log.StopViolationsReport)]
 	[SupportedBy("Chrome")]
-	public class StopViolationsReportCommand
+	public class StopViolationsReportCommand: ICommand<StopViolationsReportCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
index 359354a..d385d1e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Memory
 {
 	[Command(ProtocolName.Memory.GetDOMCounters)]
 	[SupportedBy("Chrome")]
-	public class GetDOMCountersCommand
+	public class GetDOMCountersCommand: ICommand<GetDOMCountersCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Memory/SetPressureNotificationsSuppressedCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Memory/SetPressureNotificationsSuppressedCommand.cs
index 2921165..7f8afe2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Memory/SetPressureNotificationsSuppressedCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Memory/SetPressureNotificationsSuppressedCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Memory
 	/// </summary>
 	[Command(ProtocolName.Memory.SetPressureNotificationsSuppressed)]
 	[SupportedBy("Chrome")]
-	public class SetPressureNotificationsSuppressedCommand
+	public class SetPressureNotificationsSuppressedCommand: ICommand<SetPressureNotificationsSuppressedCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true, memory pressure notifications will be suppressed.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Memory/SimulatePressureNotificationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Memory/SimulatePressureNotificationCommand.cs
index 38d4b6e..359ac31 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Memory/SimulatePressureNotificationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Memory/SimulatePressureNotificationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Memory
 	/// </summary>
 	[Command(ProtocolName.Memory.SimulatePressureNotification)]
 	[SupportedBy("Chrome")]
-	public class SimulatePressureNotificationCommand
+	public class SimulatePressureNotificationCommand: ICommand<SimulatePressureNotificationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Memory pressure level of the notification.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
index 858e48d..6e18fa9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCache)]
 	[SupportedBy("Chrome")]
-	public class CanClearBrowserCacheCommand
+	public class CanClearBrowserCacheCommand: ICommand<CanClearBrowserCacheCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
index d36ee78..44d3688 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCookies)]
 	[SupportedBy("Chrome")]
-	public class CanClearBrowserCookiesCommand
+	public class CanClearBrowserCookiesCommand: ICommand<CanClearBrowserCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
index c0df3a2..608d0cb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.CanEmulateNetworkConditions)]
 	[SupportedBy("Chrome")]
-	public class CanEmulateNetworkConditionsCommand
+	public class CanEmulateNetworkConditionsCommand: ICommand<CanEmulateNetworkConditionsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
index dc704dc..f33db62 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCache)]
 	[SupportedBy("Chrome")]
-	public class ClearBrowserCacheCommand
+	public class ClearBrowserCacheCommand: ICommand<ClearBrowserCacheCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
index d66db9e..173b8bc 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCookies)]
 	[SupportedBy("Chrome")]
-	public class ClearBrowserCookiesCommand
+	public class ClearBrowserCookiesCommand: ICommand<ClearBrowserCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
index eeba45f..3de4c3a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.DeleteCookie)]
 	[SupportedBy("Chrome")]
-	public class DeleteCookieCommand
+	public class DeleteCookieCommand: ICommand<DeleteCookieCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Name of the cookie to remove.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
index f524f7d..e09a09e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
index 5787cbc..f6b65e2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.EmulateNetworkConditions)]
 	[SupportedBy("Chrome")]
-	public class EmulateNetworkConditionsCommand
+	public class EmulateNetworkConditionsCommand: ICommand<EmulateNetworkConditionsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True to emulate internet disconnection.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
index 93921fb..7e5b243 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Buffer size in bytes to use when preserving network payloads (XHRs, etc).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetAllCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetAllCookiesCommand.cs
index abd9829..b68bf19 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/GetAllCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetAllCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.GetAllCookies)]
 	[SupportedBy("Chrome")]
-	public class GetAllCookiesCommand
+	public class GetAllCookiesCommand: ICommand<GetAllCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetCertificateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetCertificateCommand.cs
index 570efa3..0b04047 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/GetCertificateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetCertificateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.GetCertificate)]
 	[SupportedBy("Chrome")]
-	public class GetCertificateCommand
+	public class GetCertificateCommand: ICommand<GetCertificateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Origin to get certificate for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
index 736c9b8..e0fb0d6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.GetCookies)]
 	[SupportedBy("Chrome")]
-	public class GetCookiesCommand
+	public class GetCookiesCommand: ICommand<GetCookiesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The list of URLs for which applicable cookies will be fetched
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
index c997a27..c3d4fc8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.GetResponseBody)]
 	[SupportedBy("Chrome")]
-	public class GetResponseBodyCommand
+	public class GetResponseBodyCommand: ICommand<GetResponseBodyCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the network request to get content for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
index 290f2cb..0ae6737 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.ReplayXHR)]
 	[SupportedBy("Chrome")]
-	public class ReplayXHRCommand
+	public class ReplayXHRCommand: ICommand<ReplayXHRCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of XHR to replay.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetBlockedURLsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetBlockedURLsCommand.cs
index 116b720..be4d14f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetBlockedURLsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetBlockedURLsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetBlockedURLs)]
 	[SupportedBy("Chrome")]
-	public class SetBlockedURLsCommand
+	public class SetBlockedURLsCommand: ICommand<SetBlockedURLsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets URL patterns to block. Wildcards ('*') are allowed.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetBypassServiceWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetBypassServiceWorkerCommand.cs
index d357c2b..d194081 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetBypassServiceWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetBypassServiceWorkerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetBypassServiceWorker)]
 	[SupportedBy("Chrome")]
-	public class SetBypassServiceWorkerCommand
+	public class SetBypassServiceWorkerCommand: ICommand<SetBypassServiceWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Bypass service worker and load from network.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
index 650df4d..cd34ac2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetCacheDisabled)]
 	[SupportedBy("Chrome")]
-	public class SetCacheDisabledCommand
+	public class SetCacheDisabledCommand: ICommand<SetCacheDisabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Cache disabled state.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
index ebd87bb..c06c2d0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetCookieCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetCookie)]
 	[SupportedBy("Chrome")]
-	public class SetCookieCommand
+	public class SetCookieCommand: ICommand<SetCookieCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The request-URI to associate with the setting of the cookie. This value can affect the default domain and path values of the created cookie.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
index ea4d507..61c0d0a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetDataSizeLimitsForTest)]
 	[SupportedBy("Chrome")]
-	public class SetDataSizeLimitsForTestCommand
+	public class SetDataSizeLimitsForTestCommand: ICommand<SetDataSizeLimitsForTestCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Maximum total buffer size.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
index d0a6946..ff46e91 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetExtraHTTPHeaders)]
 	[SupportedBy("Chrome")]
-	public class SetExtraHTTPHeadersCommand
+	public class SetExtraHTTPHeadersCommand: ICommand<SetExtraHTTPHeadersCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Map with extra HTTP headers.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
index 8defc65..72621ec 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetUserAgentOverride)]
 	[SupportedBy("Chrome")]
-	public class SetUserAgentOverrideCommand
+	public class SetUserAgentOverrideCommand: ICommand<SetUserAgentOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets User agent to use.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/DisableCommand.cs
index af8df6d..d00619d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/EnableCommand.cs
index ded889d..b1841c4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/GetHighlightObjectForTestCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/GetHighlightObjectForTestCommand.cs
index a43b6d3..c8ee0b0 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/GetHighlightObjectForTestCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/GetHighlightObjectForTestCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.GetHighlightObjectForTest)]
 	[SupportedBy("Chrome")]
-	public class GetHighlightObjectForTestCommand
+	public class GetHighlightObjectForTestCommand: ICommand<GetHighlightObjectForTestCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get highlight object for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/HideHighlightCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/HideHighlightCommand.cs
index cb6bfd8..b71c3e3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/HideHighlightCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/HideHighlightCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.HideHighlight)]
 	[SupportedBy("Chrome")]
-	public class HideHighlightCommand
+	public class HideHighlightCommand: ICommand<HideHighlightCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightFrameCommand.cs
index 82bc1a7..a053ba2 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.HighlightFrame)]
 	[SupportedBy("Chrome")]
-	public class HighlightFrameCommand
+	public class HighlightFrameCommand: ICommand<HighlightFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame to highlight.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightNodeCommand.cs
index 0908081..629ab4d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.HighlightNode)]
 	[SupportedBy("Chrome")]
-	public class HighlightNodeCommand
+	public class HighlightNodeCommand: ICommand<HighlightNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets A descriptor for the highlight appearance.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightQuadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightQuadCommand.cs
index a3d9ca4..6427362 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightQuadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightQuadCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.HighlightQuad)]
 	[SupportedBy("Chrome")]
-	public class HighlightQuadCommand
+	public class HighlightQuadCommand: ICommand<HighlightQuadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Quad to highlight
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightRectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightRectCommand.cs
index 58fabed..59e83da 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightRectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/HighlightRectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.HighlightRect)]
 	[SupportedBy("Chrome")]
-	public class HighlightRectCommand
+	public class HighlightRectCommand: ICommand<HighlightRectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetInspectModeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetInspectModeCommand.cs
index ec1d8e0..c4f9917 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetInspectModeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetInspectModeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetInspectMode)]
 	[SupportedBy("Chrome")]
-	public class SetInspectModeCommand
+	public class SetInspectModeCommand: ICommand<SetInspectModeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Set an inspection mode.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetPausedInDebuggerMessageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetPausedInDebuggerMessageCommand.cs
index cf4befa..33806cd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetPausedInDebuggerMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetPausedInDebuggerMessageCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 {
 	[Command(ProtocolName.Overlay.SetPausedInDebuggerMessage)]
 	[SupportedBy("Chrome")]
-	public class SetPausedInDebuggerMessageCommand
+	public class SetPausedInDebuggerMessageCommand: ICommand<SetPausedInDebuggerMessageCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The message to display, also triggers resume and step over controls.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowDebugBordersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowDebugBordersCommand.cs
index 8875f6e..b8b0fd9 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowDebugBordersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowDebugBordersCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetShowDebugBorders)]
 	[SupportedBy("Chrome")]
-	public class SetShowDebugBordersCommand
+	public class SetShowDebugBordersCommand: ICommand<SetShowDebugBordersCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing debug borders
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowFPSCounterCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowFPSCounterCommand.cs
index 4a6cda1..1cbef45 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowFPSCounterCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowFPSCounterCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetShowFPSCounter)]
 	[SupportedBy("Chrome")]
-	public class SetShowFPSCounterCommand
+	public class SetShowFPSCounterCommand: ICommand<SetShowFPSCounterCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing the FPS counter
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowPaintRectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowPaintRectsCommand.cs
index 3a9bfe6..0ef2162 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowPaintRectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowPaintRectsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetShowPaintRects)]
 	[SupportedBy("Chrome")]
-	public class SetShowPaintRectsCommand
+	public class SetShowPaintRectsCommand: ICommand<SetShowPaintRectsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing paint rectangles
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowScrollBottleneckRectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowScrollBottleneckRectsCommand.cs
index 651c681..c02953b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowScrollBottleneckRectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowScrollBottleneckRectsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetShowScrollBottleneckRects)]
 	[SupportedBy("Chrome")]
-	public class SetShowScrollBottleneckRectsCommand
+	public class SetShowScrollBottleneckRectsCommand: ICommand<SetShowScrollBottleneckRectsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing scroll bottleneck rects
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowViewportSizeOnResizeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowViewportSizeOnResizeCommand.cs
index 219b805..e1800a3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowViewportSizeOnResizeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetShowViewportSizeOnResizeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 	/// </summary>
 	[Command(ProtocolName.Overlay.SetShowViewportSizeOnResize)]
 	[SupportedBy("Chrome")]
-	public class SetShowViewportSizeOnResizeCommand
+	public class SetShowViewportSizeOnResizeCommand: ICommand<SetShowViewportSizeOnResizeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to paint size or not.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetSuspendedCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetSuspendedCommand.cs
index 6e227e7..f6cee47 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Overlay/SetSuspendedCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Overlay/SetSuspendedCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Overlay
 {
 	[Command(ProtocolName.Overlay.SetSuspended)]
 	[SupportedBy("Chrome")]
-	public class SetSuspendedCommand
+	public class SetSuspendedCommand: ICommand<SetSuspendedCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether overlay should be suspended and not consume any resources until resumed.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
index 4f5ef0b..88d8d19 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	[Command(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
 	[SupportedBy("Chrome")]
-	public class AddScriptToEvaluateOnLoadCommand
+	public class AddScriptToEvaluateOnLoadCommand: ICommand<AddScriptToEvaluateOnLoadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScriptSource
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
index b92575a..361674c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.CaptureScreenshot)]
 	[SupportedBy("Chrome")]
-	public class CaptureScreenshotCommand
+	public class CaptureScreenshotCommand: ICommand<CaptureScreenshotCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Image compression format (defaults to png).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
index 78cbc3a..357a059 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.ClearDeviceMetricsOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearDeviceMetricsOverrideCommand
+	public class ClearDeviceMetricsOverrideCommand: ICommand<ClearDeviceMetricsOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
index d35ef69..4721582 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.ClearDeviceOrientationOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearDeviceOrientationOverrideCommand
+	public class ClearDeviceOrientationOverrideCommand: ICommand<ClearDeviceOrientationOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
index c302f70..426cec6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.ClearGeolocationOverride)]
 	[SupportedBy("Chrome")]
-	public class ClearGeolocationOverrideCommand
+	public class ClearGeolocationOverrideCommand: ICommand<ClearGeolocationOverrideCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/CreateIsolatedWorldCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CreateIsolatedWorldCommand.cs
index d7552f1..98e8788 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/CreateIsolatedWorldCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CreateIsolatedWorldCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.CreateIsolatedWorld)]
 	[SupportedBy("Chrome")]
-	public class CreateIsolatedWorldCommand
+	public class CreateIsolatedWorldCommand: ICommand<CreateIsolatedWorldCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the frame in which the isolated world should be created.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
index db8b70f..4792d16 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.DeleteCookie)]
 	[SupportedBy("Chrome")]
-	public class DeleteCookieCommand
+	public class DeleteCookieCommand: ICommand<DeleteCookieCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Name of the cookie to remove.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
index a9ab201..8f8c612 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
index 20d32ec..863f4f4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommand.cs
index 27a28fd..fc6cb6f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetAppManifestCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	[Command(ProtocolName.Page.GetAppManifest)]
 	[SupportedBy("Chrome")]
-	public class GetAppManifestCommand
+	public class GetAppManifestCommand: ICommand<GetAppManifestCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
index 70c0c84..9f245b3 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetCookies)]
 	[SupportedBy("Chrome")]
-	public class GetCookiesCommand
+	public class GetCookiesCommand: ICommand<GetCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetLayoutMetricsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetLayoutMetricsCommand.cs
index ca30399..76739a4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetLayoutMetricsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetLayoutMetricsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetLayoutMetrics)]
 	[SupportedBy("Chrome")]
-	public class GetLayoutMetricsCommand
+	public class GetLayoutMetricsCommand: ICommand<GetLayoutMetricsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
index 3626896..d2f006c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetNavigationHistory)]
 	[SupportedBy("Chrome")]
-	public class GetNavigationHistoryCommand
+	public class GetNavigationHistoryCommand: ICommand<GetNavigationHistoryCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
index 2636627..2091b1d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceContent)]
 	[SupportedBy("Chrome")]
-	public class GetResourceContentCommand
+	public class GetResourceContentCommand: ICommand<GetResourceContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id to get resource for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
index 37faf82..9e1c676 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceTree)]
 	[SupportedBy("Chrome")]
-	public class GetResourceTreeCommand
+	public class GetResourceTreeCommand: ICommand<GetResourceTreeCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
index 9619ddc..4f02169 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.HandleJavaScriptDialog)]
 	[SupportedBy("Chrome")]
-	public class HandleJavaScriptDialogCommand
+	public class HandleJavaScriptDialogCommand: ICommand<HandleJavaScriptDialogCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to accept or dismiss the dialog.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
index 4b3995c..549dbda 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Navigate)]
 	[SupportedBy("Chrome")]
-	public class NavigateCommand
+	public class NavigateCommand: ICommand<NavigateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets URL to navigate the page to.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
index 28ff156..af9de23 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.NavigateToHistoryEntry)]
 	[SupportedBy("Chrome")]
-	public class NavigateToHistoryEntryCommand
+	public class NavigateToHistoryEntryCommand: ICommand<NavigateToHistoryEntryCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Unique id of the entry to navigate to.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommand.cs
index 98b8be0..3d77153 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/PrintToPDFCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.PrintToPDF)]
 	[SupportedBy("Chrome")]
-	public class PrintToPDFCommand
+	public class PrintToPDFCommand: ICommand<PrintToPDFCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Paper orientation. Defaults to false.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ProcessNavigationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ProcessNavigationCommand.cs
index 089aa2e..6fff07f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ProcessNavigationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ProcessNavigationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.ProcessNavigation)]
 	[SupportedBy("Chrome")]
-	public class ProcessNavigationCommand
+	public class ProcessNavigationCommand: ICommand<ProcessNavigationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Response
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
index 3e98e2b..207ccb8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Reload)]
 	[SupportedBy("Chrome")]
-	public class ReloadCommand
+	public class ReloadCommand: ICommand<ReloadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true, browser cache is ignored (as if the user pressed Shift+refresh).
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
index 11ba706..45320f8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	[Command(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
 	[SupportedBy("Chrome")]
-	public class RemoveScriptToEvaluateOnLoadCommand
+	public class RemoveScriptToEvaluateOnLoadCommand: ICommand<RemoveScriptToEvaluateOnLoadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/RequestAppBannerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/RequestAppBannerCommand.cs
index aa6b0fe..5fa5a2b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/RequestAppBannerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/RequestAppBannerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	[Command(ProtocolName.Page.RequestAppBanner)]
 	[SupportedBy("Chrome")]
-	public class RequestAppBannerCommand
+	public class RequestAppBannerCommand: ICommand<RequestAppBannerCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
index 12aa23d..db0ab49 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.ScreencastFrameAck)]
 	[SupportedBy("Chrome")]
-	public class ScreencastFrameAckCommand
+	public class ScreencastFrameAckCommand: ICommand<ScreencastFrameAckCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame number.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
index 154e7ec..c0cba1e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SearchInResource)]
 	[SupportedBy("Chrome")]
-	public class SearchInResourceCommand
+	public class SearchInResourceCommand: ICommand<SearchInResourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id for resource to search in.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetAutoAttachToCreatedPagesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetAutoAttachToCreatedPagesCommand.cs
index ccca533..f5ea83a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetAutoAttachToCreatedPagesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetAutoAttachToCreatedPagesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetAutoAttachToCreatedPages)]
 	[SupportedBy("Chrome")]
-	public class SetAutoAttachToCreatedPagesCommand
+	public class SetAutoAttachToCreatedPagesCommand: ICommand<SetAutoAttachToCreatedPagesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true, browser will open a new inspector window for every page created from this one.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetControlNavigationsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetControlNavigationsCommand.cs
index 1c42c8f..4746e40 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetControlNavigationsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetControlNavigationsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetControlNavigations)]
 	[SupportedBy("Chrome")]
-	public class SetControlNavigationsCommand
+	public class SetControlNavigationsCommand: ICommand<SetControlNavigationsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Enabled
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
index 9405276..0efb3ab 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetDeviceMetricsOverride)]
 	[SupportedBy("Chrome")]
-	public class SetDeviceMetricsOverrideCommand
+	public class SetDeviceMetricsOverrideCommand: ICommand<SetDeviceMetricsOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
index 0648db9..52eea9e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetDeviceOrientationOverride)]
 	[SupportedBy("Chrome")]
-	public class SetDeviceOrientationOverrideCommand
+	public class SetDeviceOrientationOverrideCommand: ICommand<SetDeviceOrientationOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Mock alpha
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
index ce0c9a9..6586a83 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetDocumentContent)]
 	[SupportedBy("Chrome")]
-	public class SetDocumentContentCommand
+	public class SetDocumentContentCommand: ICommand<SetDocumentContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id to set HTML for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
index fb29096..ccae53f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetGeolocationOverride)]
 	[SupportedBy("Chrome")]
-	public class SetGeolocationOverrideCommand
+	public class SetGeolocationOverrideCommand: ICommand<SetGeolocationOverrideCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Mock latitude
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
index 3c2df78..921e2f5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetTouchEmulationEnabled)]
 	[SupportedBy("Chrome")]
-	public class SetTouchEmulationEnabledCommand
+	public class SetTouchEmulationEnabledCommand: ICommand<SetTouchEmulationEnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether the touch event emulation should be enabled.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
index 67ee4c2..15ccdde 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.StartScreencast)]
 	[SupportedBy("Chrome")]
-	public class StartScreencastCommand
+	public class StartScreencastCommand: ICommand<StartScreencastCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Image compression format.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/StopLoadingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StopLoadingCommand.cs
index 1ed1f86..bcba50a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/StopLoadingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StopLoadingCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.StopLoading)]
 	[SupportedBy("Chrome")]
-	public class StopLoadingCommand
+	public class StopLoadingCommand: ICommand<StopLoadingCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
index 5ad794d..23c4a2c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 	/// </summary>
 	[Command(ProtocolName.Page.StopScreencast)]
 	[SupportedBy("Chrome")]
-	public class StopScreencastCommand
+	public class StopScreencastCommand: ICommand<StopScreencastCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
index c30db8a..aaa28a6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
index a6acb93..16eae40 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/GetBestEffortCoverageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/GetBestEffortCoverageCommand.cs
index 5f1b9e0..35af34f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/GetBestEffortCoverageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/GetBestEffortCoverageCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// </summary>
 	[Command(ProtocolName.Profiler.GetBestEffortCoverage)]
 	[SupportedBy("Chrome")]
-	public class GetBestEffortCoverageCommand
+	public class GetBestEffortCoverageCommand: ICommand<GetBestEffortCoverageCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
index 9710ee9..2b8c688 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// </summary>
 	[Command(ProtocolName.Profiler.SetSamplingInterval)]
 	[SupportedBy("Chrome")]
-	public class SetSamplingIntervalCommand
+	public class SetSamplingIntervalCommand: ICommand<SetSamplingIntervalCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets New sampling interval in microseconds.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
index 9cf4ada..1e103ab 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Start)]
 	[SupportedBy("Chrome")]
-	public class StartCommand
+	public class StartCommand: ICommand<StartCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/StartPreciseCoverageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartPreciseCoverageCommand.cs
index a90297c..6e9153a 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/StartPreciseCoverageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartPreciseCoverageCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// </summary>
 	[Command(ProtocolName.Profiler.StartPreciseCoverage)]
 	[SupportedBy("Chrome")]
-	public class StartPreciseCoverageCommand
+	public class StartPreciseCoverageCommand: ICommand<StartPreciseCoverageCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Collect accurate call counts beyond simple 'covered' or 'not covered'.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
index 1ba1aca..b5fd0c5 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Stop)]
 	[SupportedBy("Chrome")]
-	public class StopCommand
+	public class StopCommand: ICommand<StopCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/StopPreciseCoverageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopPreciseCoverageCommand.cs
index 4b441b3..7072cee 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/StopPreciseCoverageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopPreciseCoverageCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// </summary>
 	[Command(ProtocolName.Profiler.StopPreciseCoverage)]
 	[SupportedBy("Chrome")]
-	public class StopPreciseCoverageCommand
+	public class StopPreciseCoverageCommand: ICommand<StopPreciseCoverageCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Profiler/TakePreciseCoverageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/TakePreciseCoverageCommand.cs
index 177bd67..e2270db 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Profiler/TakePreciseCoverageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/TakePreciseCoverageCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 	/// </summary>
 	[Command(ProtocolName.Profiler.TakePreciseCoverage)]
 	[SupportedBy("Chrome")]
-	public class TakePreciseCoverageCommand
+	public class TakePreciseCoverageCommand: ICommand<TakePreciseCoverageCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
index 3b8dae0..5a9cd91 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/AwaitPromiseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.AwaitPromise)]
 	[SupportedBy("Chrome")]
-	public class AwaitPromiseCommand
+	public class AwaitPromiseCommand: ICommand<AwaitPromiseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the promise.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
index 3be066a..834a399 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.CallFunctionOn)]
 	[SupportedBy("Chrome")]
-	public class CallFunctionOnCommand
+	public class CallFunctionOnCommand: ICommand<CallFunctionOnCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to call function on.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CompileScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CompileScriptCommand.cs
index 670d823..896fc0f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/CompileScriptCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CompileScriptCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.CompileScript)]
 	[SupportedBy("Chrome")]
-	public class CompileScriptCommand
+	public class CompileScriptCommand: ICommand<CompileScriptCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Expression to compile.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
index f846d3c..e6e049c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/DiscardConsoleEntriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/DiscardConsoleEntriesCommand.cs
index f454c3c..9738281 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/DiscardConsoleEntriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/DiscardConsoleEntriesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.DiscardConsoleEntries)]
 	[SupportedBy("Chrome")]
-	public class DiscardConsoleEntriesCommand
+	public class DiscardConsoleEntriesCommand: ICommand<DiscardConsoleEntriesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
index e35efcc..5d14738 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
index 53402a0..0eb6c82 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Evaluate)]
 	[SupportedBy("Chrome")]
-	public class EvaluateCommand
+	public class EvaluateCommand: ICommand<EvaluateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Expression to evaluate.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
index e7634cf..2d20d64 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetProperties)]
 	[SupportedBy("Chrome")]
-	public class GetPropertiesCommand
+	public class GetPropertiesCommand: ICommand<GetPropertiesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to return properties for.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
index 5698930..a9bc1e6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObject)]
 	[SupportedBy("Chrome")]
-	public class ReleaseObjectCommand
+	public class ReleaseObjectCommand: ICommand<ReleaseObjectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to release.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
index f8fa45b..e8f12fd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObjectGroup)]
 	[SupportedBy("Chrome")]
-	public class ReleaseObjectGroupCommand
+	public class ReleaseObjectGroupCommand: ICommand<ReleaseObjectGroupCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Symbolic object group name.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunIfWaitingForDebuggerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunIfWaitingForDebuggerCommand.cs
index 3506a5c..b88249c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunIfWaitingForDebuggerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunIfWaitingForDebuggerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.RunIfWaitingForDebugger)]
 	[SupportedBy("Chrome")]
-	public class RunIfWaitingForDebuggerCommand
+	public class RunIfWaitingForDebuggerCommand: ICommand<RunIfWaitingForDebuggerCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
index 3534bd0..cf0041b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunScriptCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.RunScript)]
 	[SupportedBy("Chrome")]
-	public class RunScriptCommand
+	public class RunScriptCommand: ICommand<RunScriptCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to run.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
index 7997001..ede82b6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	[Command(ProtocolName.Runtime.SetCustomObjectFormatterEnabled)]
 	[SupportedBy("Chrome")]
-	public class SetCustomObjectFormatterEnabledCommand
+	public class SetCustomObjectFormatterEnabledCommand: ICommand<SetCustomObjectFormatterEnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Enabled
diff --git a/source/ChromeDevTools/Protocol/Chrome/Schema/GetDomainsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Schema/GetDomainsCommand.cs
index a5123bf..63266ed 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Schema/GetDomainsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Schema/GetDomainsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Schema
 	/// </summary>
 	[Command(ProtocolName.Schema.GetDomains)]
 	[SupportedBy("Chrome")]
-	public class GetDomainsCommand
+	public class GetDomainsCommand: ICommand<GetDomainsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Security/DisableCommand.cs
index 4de7361..8cf8dff 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 	/// </summary>
 	[Command(ProtocolName.Security.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Security/EnableCommand.cs
index 5ab7eef..308eaf7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 	/// </summary>
 	[Command(ProtocolName.Security.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/HandleCertificateErrorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Security/HandleCertificateErrorCommand.cs
index ba59364..204335b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/HandleCertificateErrorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/HandleCertificateErrorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 	/// </summary>
 	[Command(ProtocolName.Security.HandleCertificateError)]
 	[SupportedBy("Chrome")]
-	public class HandleCertificateErrorCommand
+	public class HandleCertificateErrorCommand: ICommand<HandleCertificateErrorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The ID of the event.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/SetOverrideCertificateErrorsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Security/SetOverrideCertificateErrorsCommand.cs
index d427a8f..809a72b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/SetOverrideCertificateErrorsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/SetOverrideCertificateErrorsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 	/// </summary>
 	[Command(ProtocolName.Security.SetOverrideCertificateErrors)]
 	[SupportedBy("Chrome")]
-	public class SetOverrideCertificateErrorsCommand
+	public class SetOverrideCertificateErrorsCommand: ICommand<SetOverrideCertificateErrorsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true, certificate errors will be overridden.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Security/ShowCertificateViewerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Security/ShowCertificateViewerCommand.cs
index a2e718e..9ca0f7e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Security/ShowCertificateViewerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Security/ShowCertificateViewerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Security
 	/// </summary>
 	[Command(ProtocolName.Security.ShowCertificateViewer)]
 	[SupportedBy("Chrome")]
-	public class ShowCertificateViewerCommand
+	public class ShowCertificateViewerCommand: ICommand<ShowCertificateViewerCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
index 10bd4a5..d3d68d7 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.DeliverPushMessage)]
 	[SupportedBy("Chrome")]
-	public class DeliverPushMessageCommand
+	public class DeliverPushMessageCommand: ICommand<DeliverPushMessageCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Origin
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
index 28617ed..70bee32 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Disable)]
 	[SupportedBy("Chrome")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchSyncEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchSyncEventCommand.cs
index 66c55d3..d042e3e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchSyncEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchSyncEventCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.DispatchSyncEvent)]
 	[SupportedBy("Chrome")]
-	public class DispatchSyncEventCommand
+	public class DispatchSyncEventCommand: ICommand<DispatchSyncEventCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Origin
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
index a9d6087..a6e8b07 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Enable)]
 	[SupportedBy("Chrome")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
index 136dd34..97860a8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.InspectWorker)]
 	[SupportedBy("Chrome")]
-	public class InspectWorkerCommand
+	public class InspectWorkerCommand: ICommand<InspectWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets VersionId
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetForceUpdateOnPageLoadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetForceUpdateOnPageLoadCommand.cs
index 245b8e8..4c3056e 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetForceUpdateOnPageLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetForceUpdateOnPageLoadCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.SetForceUpdateOnPageLoad)]
 	[SupportedBy("Chrome")]
-	public class SetForceUpdateOnPageLoadCommand
+	public class SetForceUpdateOnPageLoadCommand: ICommand<SetForceUpdateOnPageLoadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ForceUpdateOnPageLoad
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SkipWaitingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SkipWaitingCommand.cs
index 7313238..12e9430 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SkipWaitingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SkipWaitingCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.SkipWaiting)]
 	[SupportedBy("Chrome")]
-	public class SkipWaitingCommand
+	public class SkipWaitingCommand: ICommand<SkipWaitingCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScopeURL
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
index 6de67a0..70ddebe 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.StartWorker)]
 	[SupportedBy("Chrome")]
-	public class StartWorkerCommand
+	public class StartWorkerCommand: ICommand<StartWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScopeURL
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
index 95c07ef..b96299c 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.StopWorker)]
 	[SupportedBy("Chrome")]
-	public class StopWorkerCommand
+	public class StopWorkerCommand: ICommand<StopWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets VersionId
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
index d9c379c..c48a4fd 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Unregister)]
 	[SupportedBy("Chrome")]
-	public class UnregisterCommand
+	public class UnregisterCommand: ICommand<UnregisterCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScopeURL
diff --git a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
index 45b1005..14a8fcb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.UpdateRegistration)]
 	[SupportedBy("Chrome")]
-	public class UpdateRegistrationCommand
+	public class UpdateRegistrationCommand: ICommand<UpdateRegistrationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScopeURL
diff --git a/source/ChromeDevTools/Protocol/Chrome/Storage/ClearDataForOriginCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Storage/ClearDataForOriginCommand.cs
index 1977c97..4d3ff77 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Storage/ClearDataForOriginCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Storage/ClearDataForOriginCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Storage
 	/// </summary>
 	[Command(ProtocolName.Storage.ClearDataForOrigin)]
 	[SupportedBy("Chrome")]
-	public class ClearDataForOriginCommand
+	public class ClearDataForOriginCommand: ICommand<ClearDataForOriginCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GetInfoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GetInfoCommand.cs
index eec7a07..0bbf654 100644
--- a/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GetInfoCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/SystemInfo/GetInfoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.SystemInfo
 	/// </summary>
 	[Command(ProtocolName.SystemInfo.GetInfo)]
 	[SupportedBy("Chrome")]
-	public class GetInfoCommand
+	public class GetInfoCommand: ICommand<GetInfoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/ActivateTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/ActivateTargetCommand.cs
index f79b3ca..0b64ed8 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/ActivateTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/ActivateTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.ActivateTarget)]
 	[SupportedBy("Chrome")]
-	public class ActivateTargetCommand
+	public class ActivateTargetCommand: ICommand<ActivateTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/AttachToTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/AttachToTargetCommand.cs
index b814f9a..dee1b73 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/AttachToTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/AttachToTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.AttachToTarget)]
 	[SupportedBy("Chrome")]
-	public class AttachToTargetCommand
+	public class AttachToTargetCommand: ICommand<AttachToTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/CloseTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/CloseTargetCommand.cs
index 8b6d357..a12dfbb 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/CloseTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/CloseTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.CloseTarget)]
 	[SupportedBy("Chrome")]
-	public class CloseTargetCommand
+	public class CloseTargetCommand: ICommand<CloseTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/CreateBrowserContextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/CreateBrowserContextCommand.cs
index 7256885..c5e80c6 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/CreateBrowserContextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/CreateBrowserContextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.CreateBrowserContext)]
 	[SupportedBy("Chrome")]
-	public class CreateBrowserContextCommand
+	public class CreateBrowserContextCommand: ICommand<CreateBrowserContextCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
index 3ebfb8b..6fdf50b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/CreateTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.CreateTarget)]
 	[SupportedBy("Chrome")]
-	public class CreateTargetCommand
+	public class CreateTargetCommand: ICommand<CreateTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The initial URL the page will be navigated to.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/DetachFromTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/DetachFromTargetCommand.cs
index 3abc034..087e57d 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/DetachFromTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/DetachFromTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.DetachFromTarget)]
 	[SupportedBy("Chrome")]
-	public class DetachFromTargetCommand
+	public class DetachFromTargetCommand: ICommand<DetachFromTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/DisposeBrowserContextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/DisposeBrowserContextCommand.cs
index 6541a5a..4cea500 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/DisposeBrowserContextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/DisposeBrowserContextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.DisposeBrowserContext)]
 	[SupportedBy("Chrome")]
-	public class DisposeBrowserContextCommand
+	public class DisposeBrowserContextCommand: ICommand<DisposeBrowserContextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets BrowserContextId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetInfoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetInfoCommand.cs
index f8bad23..ed6ac59 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetInfoCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetInfoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.GetTargetInfo)]
 	[SupportedBy("Chrome")]
-	public class GetTargetInfoCommand
+	public class GetTargetInfoCommand: ICommand<GetTargetInfoCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetsCommand.cs
index bfb40ba..00b00c1 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/GetTargetsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.GetTargets)]
 	[SupportedBy("Chrome")]
-	public class GetTargetsCommand
+	public class GetTargetsCommand: ICommand<GetTargetsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/SendMessageToTargetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/SendMessageToTargetCommand.cs
index 196b9df..036c507 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/SendMessageToTargetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/SendMessageToTargetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.SendMessageToTarget)]
 	[SupportedBy("Chrome")]
-	public class SendMessageToTargetCommand
+	public class SendMessageToTargetCommand: ICommand<SendMessageToTargetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets TargetId
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/SetAttachToFramesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/SetAttachToFramesCommand.cs
index f20cd8c..1a63593 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/SetAttachToFramesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/SetAttachToFramesCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 {
 	[Command(ProtocolName.Target.SetAttachToFrames)]
 	[SupportedBy("Chrome")]
-	public class SetAttachToFramesCommand
+	public class SetAttachToFramesCommand: ICommand<SetAttachToFramesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to attach to frames.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/SetAutoAttachCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/SetAutoAttachCommand.cs
index f431a93..d17ac37 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/SetAutoAttachCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/SetAutoAttachCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.SetAutoAttach)]
 	[SupportedBy("Chrome")]
-	public class SetAutoAttachCommand
+	public class SetAutoAttachCommand: ICommand<SetAutoAttachCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to auto-attach to related targets.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/SetDiscoverTargetsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/SetDiscoverTargetsCommand.cs
index 9c94943..ff6f875 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/SetDiscoverTargetsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/SetDiscoverTargetsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.SetDiscoverTargets)]
 	[SupportedBy("Chrome")]
-	public class SetDiscoverTargetsCommand
+	public class SetDiscoverTargetsCommand: ICommand<SetDiscoverTargetsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to discover available targets.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Target/SetRemoteLocationsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Target/SetRemoteLocationsCommand.cs
index acc030a..db9e29f 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Target/SetRemoteLocationsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Target/SetRemoteLocationsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Target
 	/// </summary>
 	[Command(ProtocolName.Target.SetRemoteLocations)]
 	[SupportedBy("Chrome")]
-	public class SetRemoteLocationsCommand
+	public class SetRemoteLocationsCommand: ICommand<SetRemoteLocationsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets List of remote locations.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tethering/BindCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tethering/BindCommand.cs
index 4ee8b4e..094412b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tethering/BindCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tethering/BindCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tethering
 	/// </summary>
 	[Command(ProtocolName.Tethering.Bind)]
 	[SupportedBy("Chrome")]
-	public class BindCommand
+	public class BindCommand: ICommand<BindCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Port number to bind.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tethering/UnbindCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tethering/UnbindCommand.cs
index f5ecaf2..79c2ef4 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tethering/UnbindCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tethering/UnbindCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tethering
 	/// </summary>
 	[Command(ProtocolName.Tethering.Unbind)]
 	[SupportedBy("Chrome")]
-	public class UnbindCommand
+	public class UnbindCommand: ICommand<UnbindCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Port number to unbind.
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
index 83be0ee..330c5fe 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 	/// </summary>
 	[Command(ProtocolName.Tracing.End)]
 	[SupportedBy("Chrome")]
-	public class EndCommand
+	public class EndCommand: ICommand<EndCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
index e1b65d8..e2bcaab 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 	/// </summary>
 	[Command(ProtocolName.Tracing.GetCategories)]
 	[SupportedBy("Chrome")]
-	public class GetCategoriesCommand
+	public class GetCategoriesCommand: ICommand<GetCategoriesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/RecordClockSyncMarkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/RecordClockSyncMarkerCommand.cs
index 80e4115..35d8d3b 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/RecordClockSyncMarkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/RecordClockSyncMarkerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 	/// </summary>
 	[Command(ProtocolName.Tracing.RecordClockSyncMarker)]
 	[SupportedBy("Chrome")]
-	public class RecordClockSyncMarkerCommand
+	public class RecordClockSyncMarkerCommand: ICommand<RecordClockSyncMarkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The ID of this clock sync marker
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/RequestMemoryDumpCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/RequestMemoryDumpCommand.cs
index f7e43c4..9f78a43 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/RequestMemoryDumpCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/RequestMemoryDumpCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 	/// </summary>
 	[Command(ProtocolName.Tracing.RequestMemoryDump)]
 	[SupportedBy("Chrome")]
-	public class RequestMemoryDumpCommand
+	public class RequestMemoryDumpCommand: ICommand<RequestMemoryDumpCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
index bb959d8..8280732 100644
--- a/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 	/// </summary>
 	[Command(ProtocolName.Tracing.Start)]
 	[SupportedBy("Chrome")]
-	public class StartCommand
+	public class StartCommand: ICommand<StartCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Category/tag filter
diff --git a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
index 6be51f5..44b7633 100644
--- a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
index 02aefa1..a1ab344 100644
--- a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
 	[SupportedBy("iOS")]
-	public class GetApplicationCacheForFrameCommand
+	public class GetApplicationCacheForFrameCommand: ICommand<GetApplicationCacheForFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame containing document whose application cache is retrieved.
diff --git a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
index b353e15..91f349b 100644
--- a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetFramesWithManifests)]
 	[SupportedBy("iOS")]
-	public class GetFramesWithManifestsCommand
+	public class GetFramesWithManifestsCommand: ICommand<GetFramesWithManifestsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
index b614930..cc8f222 100644
--- a/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetManifestForFrame)]
 	[SupportedBy("iOS")]
-	public class GetManifestForFrameCommand
+	public class GetManifestForFrameCommand: ICommand<GetManifestForFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame containing document whose manifest is retrieved.
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
index c53bd83..baeb145 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.AddRule)]
 	[SupportedBy("iOS")]
-	public class AddRuleCommand
+	public class AddRuleCommand: ICommand<AddRuleCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
index 89422ed..794b005 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.CreateStyleSheet)]
 	[SupportedBy("iOS")]
-	public class CreateStyleSheetCommand
+	public class CreateStyleSheetCommand: ICommand<CreateStyleSheetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame where the new "inspector" stylesheet should be created.
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
index 1df505f..b1a884d 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
index 3ff0295..06b97c0 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
index c2aaf5d..54cc23d 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.ForcePseudoState)]
 	[SupportedBy("iOS")]
-	public class ForcePseudoStateCommand
+	public class ForcePseudoStateCommand: ICommand<ForcePseudoStateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The element id for which to force the pseudo state.
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
index 3b790da..d63598d 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetAllStyleSheets)]
 	[SupportedBy("iOS")]
-	public class GetAllStyleSheetsCommand
+	public class GetAllStyleSheetsCommand: ICommand<GetAllStyleSheetsCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
index cd29339..4058868 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetComputedStyleForNode)]
 	[SupportedBy("iOS")]
-	public class GetComputedStyleForNodeCommand
+	public class GetComputedStyleForNodeCommand: ICommand<GetComputedStyleForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
index ac19b72..3ec503b 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetInlineStylesForNode)]
 	[SupportedBy("iOS")]
-	public class GetInlineStylesForNodeCommand
+	public class GetInlineStylesForNodeCommand: ICommand<GetInlineStylesForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
index b2734bd..9746864 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetMatchedStylesForNode)]
 	[SupportedBy("iOS")]
-	public class GetMatchedStylesForNodeCommand
+	public class GetMatchedStylesForNodeCommand: ICommand<GetMatchedStylesForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets NodeId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
index 0eeb004..91ee886 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetNamedFlowCollection)]
 	[SupportedBy("iOS")]
-	public class GetNamedFlowCollectionCommand
+	public class GetNamedFlowCollectionCommand: ICommand<GetNamedFlowCollectionCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The document node id for which to get the Named Flow Collection.
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
index 6b251d1..a055150 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetStyleSheet)]
 	[SupportedBy("iOS")]
-	public class GetStyleSheetCommand
+	public class GetStyleSheetCommand: ICommand<GetStyleSheetCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
index 5b682e8..6f5ec6b 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetStyleSheetText)]
 	[SupportedBy("iOS")]
-	public class GetStyleSheetTextCommand
+	public class GetStyleSheetTextCommand: ICommand<GetStyleSheetTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
index c4222c7..01d71ed 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetSupportedCSSProperties)]
 	[SupportedBy("iOS")]
-	public class GetSupportedCSSPropertiesCommand
+	public class GetSupportedCSSPropertiesCommand: ICommand<GetSupportedCSSPropertiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
index 2815739..4aa2467 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.GetSupportedSystemFontFamilyNames)]
 	[SupportedBy("iOS")]
-	public class GetSupportedSystemFontFamilyNamesCommand
+	public class GetSupportedSystemFontFamilyNamesCommand: ICommand<GetSupportedSystemFontFamilyNamesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
index daea511..8b6de45 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetRuleSelector)]
 	[SupportedBy("iOS")]
-	public class SetRuleSelectorCommand
+	public class SetRuleSelectorCommand: ICommand<SetRuleSelectorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets RuleId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
index 0427a9d..a87ab40 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetStyleSheetText)]
 	[SupportedBy("iOS")]
-	public class SetStyleSheetTextCommand
+	public class SetStyleSheetTextCommand: ICommand<SetStyleSheetTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleSheetId
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
index 9845893..1af16b0 100644
--- a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 	/// </summary>
 	[Command(ProtocolName.CSS.SetStyleText)]
 	[SupportedBy("iOS")]
-	public class SetStyleTextCommand
+	public class SetStyleTextCommand: ICommand<SetStyleTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StyleId
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
index 1570a9b..722e5e3 100644
--- a/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 	/// </summary>
 	[Command(ProtocolName.Console.AddInspectedNode)]
 	[SupportedBy("iOS")]
-	public class AddInspectedNodeCommand
+	public class AddInspectedNodeCommand: ICommand<AddInspectedNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DOM node id to be accessible by means of $0 command line API.
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
index c09e125..f242939 100644
--- a/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 	/// </summary>
 	[Command(ProtocolName.Console.ClearMessages)]
 	[SupportedBy("iOS")]
-	public class ClearMessagesCommand
+	public class ClearMessagesCommand: ICommand<ClearMessagesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
index 03c9476..c0de9be 100644
--- a/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 	/// </summary>
 	[Command(ProtocolName.Console.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
index 9029301..a51e2f7 100644
--- a/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 	/// </summary>
 	[Command(ProtocolName.Console.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
index 9de82a0..b821465 100644
--- a/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 	/// </summary>
 	[Command(ProtocolName.Console.SetMonitoringXHREnabled)]
 	[SupportedBy("iOS")]
-	public class SetMonitoringXHREnabledCommand
+	public class SetMonitoringXHREnabledCommand: ICommand<SetMonitoringXHREnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Monitoring enabled state.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
index d81591f..6e8a3ee 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.DiscardSearchResults)]
 	[SupportedBy("iOS")]
-	public class DiscardSearchResultsCommand
+	public class DiscardSearchResultsCommand: ICommand<DiscardSearchResultsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Unique search session identifier.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
index 0632f5f..ec82e84 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Focus)]
 	[SupportedBy("iOS")]
-	public class FocusCommand
+	public class FocusCommand: ICommand<FocusCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to focus.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
index 988699c..9fe6c7a 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetAccessibilityPropertiesForNode)]
 	[SupportedBy("iOS")]
-	public class GetAccessibilityPropertiesForNodeCommand
+	public class GetAccessibilityPropertiesForNodeCommand: ICommand<GetAccessibilityPropertiesForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node for which to get accessibility properties.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
index 95dfe9e..03adcd0 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetAttributes)]
 	[SupportedBy("iOS")]
-	public class GetAttributesCommand
+	public class GetAttributesCommand: ICommand<GetAttributesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to retrieve attibutes for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
index 27e9e1e..e444760 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetDocument)]
 	[SupportedBy("iOS")]
-	public class GetDocumentCommand
+	public class GetDocumentCommand: ICommand<GetDocumentCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
index e8bfefa..173e705 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetEventListenersForNode)]
 	[SupportedBy("iOS")]
-	public class GetEventListenersForNodeCommand
+	public class GetEventListenersForNodeCommand: ICommand<GetEventListenersForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get listeners for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
index dc1e0c9..7c748f0 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetOuterHTML)]
 	[SupportedBy("iOS")]
-	public class GetOuterHTMLCommand
+	public class GetOuterHTMLCommand: ICommand<GetOuterHTMLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get markup for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
index 4b30ae7..d0451bc 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.GetSearchResults)]
 	[SupportedBy("iOS")]
-	public class GetSearchResultsCommand
+	public class GetSearchResultsCommand: ICommand<GetSearchResultsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Unique search session identifier.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
index 24cf242..35dcc63 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HideHighlight)]
 	[SupportedBy("iOS")]
-	public class HideHighlightCommand
+	public class HideHighlightCommand: ICommand<HideHighlightCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
index 139cc8b..c325633 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightFrame)]
 	[SupportedBy("iOS")]
-	public class HighlightFrameCommand
+	public class HighlightFrameCommand: ICommand<HighlightFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the frame to highlight.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
index 08e1a96..0d45ca2 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightNode)]
 	[SupportedBy("iOS")]
-	public class HighlightNodeCommand
+	public class HighlightNodeCommand: ICommand<HighlightNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets A descriptor for the highlight appearance.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
index 94d92ba..6c63ea4 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightQuad)]
 	[SupportedBy("iOS")]
-	public class HighlightQuadCommand
+	public class HighlightQuadCommand: ICommand<HighlightQuadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Quad to highlight
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
index 9ef25c6..bc4c848 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightRect)]
 	[SupportedBy("iOS")]
-	public class HighlightRectCommand
+	public class HighlightRectCommand: ICommand<HighlightRectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
index e0c496c..d897677 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightSelector)]
 	[SupportedBy("iOS")]
-	public class HighlightSelectorCommand
+	public class HighlightSelectorCommand: ICommand<HighlightSelectorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets A descriptor for the highlight appearance.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
index 49e3e00..f8de1f8 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.MarkUndoableState)]
 	[SupportedBy("iOS")]
-	public class MarkUndoableStateCommand
+	public class MarkUndoableStateCommand: ICommand<MarkUndoableStateCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
index e3777a6..8799238 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.MoveTo)]
 	[SupportedBy("iOS")]
-	public class MoveToCommand
+	public class MoveToCommand: ICommand<MoveToCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to drop.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
index af028ea..527e2f3 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PerformSearch)]
 	[SupportedBy("iOS")]
-	public class PerformSearchCommand
+	public class PerformSearchCommand: ICommand<PerformSearchCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Plain text or query selector or XPath search query.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
index e2cf9c9..96413af 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodeByBackendIdToFrontend)]
 	[SupportedBy("iOS")]
-	public class PushNodeByBackendIdToFrontendCommand
+	public class PushNodeByBackendIdToFrontendCommand: ICommand<PushNodeByBackendIdToFrontendCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The backend node id of the node.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
index 810c9e6..2bc986d 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodeByPathToFrontend)]
 	[SupportedBy("iOS")]
-	public class PushNodeByPathToFrontendCommand
+	public class PushNodeByPathToFrontendCommand: ICommand<PushNodeByPathToFrontendCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Path to node in the proprietary format.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
index f086fe8..828f2a9 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelectorAll)]
 	[SupportedBy("iOS")]
-	public class QuerySelectorAllCommand
+	public class QuerySelectorAllCommand: ICommand<QuerySelectorAllCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to query upon.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
index d40fdd1..387d576 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelector)]
 	[SupportedBy("iOS")]
-	public class QuerySelectorCommand
+	public class QuerySelectorCommand: ICommand<QuerySelectorCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to query upon.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
index 50dabcf..8aad43d 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Redo)]
 	[SupportedBy("iOS")]
-	public class RedoCommand
+	public class RedoCommand: ICommand<RedoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
index 5e64b55..3b65504 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.ReleaseBackendNodeIds)]
 	[SupportedBy("iOS")]
-	public class ReleaseBackendNodeIdsCommand
+	public class ReleaseBackendNodeIdsCommand: ICommand<ReleaseBackendNodeIdsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The backend node ids group name.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
index 5b7990b..a232cb6 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveAttribute)]
 	[SupportedBy("iOS")]
-	public class RemoveAttributeCommand
+	public class RemoveAttributeCommand: ICommand<RemoveAttributeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to remove attribute from.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
index f3681cf..31c6056 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveNode)]
 	[SupportedBy("iOS")]
-	public class RemoveNodeCommand
+	public class RemoveNodeCommand: ICommand<RemoveNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to remove.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
index 02a0c25..f4283d5 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestChildNodes)]
 	[SupportedBy("iOS")]
-	public class RequestChildNodesCommand
+	public class RequestChildNodesCommand: ICommand<RequestChildNodesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to get children for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
index 34ad809..bb2a003 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestNode)]
 	[SupportedBy("iOS")]
-	public class RequestNodeCommand
+	public class RequestNodeCommand: ICommand<RequestNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets JavaScript object id to convert into node.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
index 6df9675..74eafbd 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.ResolveNode)]
 	[SupportedBy("iOS")]
-	public class ResolveNodeCommand
+	public class ResolveNodeCommand: ICommand<ResolveNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to resolve.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
index fcea45b..31b97da 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributeValue)]
 	[SupportedBy("iOS")]
-	public class SetAttributeValueCommand
+	public class SetAttributeValueCommand: ICommand<SetAttributeValueCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to set attribute for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
index c829a1a..89c81ed 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributesAsText)]
 	[SupportedBy("iOS")]
-	public class SetAttributesAsTextCommand
+	public class SetAttributesAsTextCommand: ICommand<SetAttributesAsTextCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the element to set attributes for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
index c916d8e..aed2676 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetInspectModeEnabled)]
 	[SupportedBy("iOS")]
-	public class SetInspectModeEnabledCommand
+	public class SetInspectModeEnabledCommand: ICommand<SetInspectModeEnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True to enable inspection mode, false to disable it.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
index 025a58b..1ce9a9d 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeName)]
 	[SupportedBy("iOS")]
-	public class SetNodeNameCommand
+	public class SetNodeNameCommand: ICommand<SetNodeNameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set name for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
index 13bdaee..b1ca848 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeValue)]
 	[SupportedBy("iOS")]
-	public class SetNodeValueCommand
+	public class SetNodeValueCommand: ICommand<SetNodeValueCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set value for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
index 11c8382..adbb79c 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.SetOuterHTML)]
 	[SupportedBy("iOS")]
-	public class SetOuterHTMLCommand
+	public class SetOuterHTMLCommand: ICommand<SetOuterHTMLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to set markup for.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
index 6241e2b..901d61c 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 	/// </summary>
 	[Command(ProtocolName.DOM.Undo)]
 	[SupportedBy("iOS")]
-	public class UndoCommand
+	public class UndoCommand: ICommand<UndoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
index 17edec4..c58bbfe 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
 	[SupportedBy("iOS")]
-	public class RemoveDOMBreakpointCommand
+	public class RemoveDOMBreakpointCommand: ICommand<RemoveDOMBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the node to remove breakpoint from.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
index 51f470b..5bba664 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
 	[SupportedBy("iOS")]
-	public class RemoveEventListenerBreakpointCommand
+	public class RemoveEventListenerBreakpointCommand: ICommand<RemoveEventListenerBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Event name.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
index 848ea24..255e265 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
 	[SupportedBy("iOS")]
-	public class RemoveInstrumentationBreakpointCommand
+	public class RemoveInstrumentationBreakpointCommand: ICommand<RemoveInstrumentationBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Instrumentation name to stop on.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
index f2c00d1..10db6b6 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
 	[SupportedBy("iOS")]
-	public class RemoveXHRBreakpointCommand
+	public class RemoveXHRBreakpointCommand: ICommand<RemoveXHRBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Resource URL substring.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
index 639467a..fdabcd0 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
 	[SupportedBy("iOS")]
-	public class SetDOMBreakpointCommand
+	public class SetDOMBreakpointCommand: ICommand<SetDOMBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the node to set breakpoint on.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
index deae588..f6a111e 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
 	[SupportedBy("iOS")]
-	public class SetEventListenerBreakpointCommand
+	public class SetEventListenerBreakpointCommand: ICommand<SetEventListenerBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DOM Event name to stop on (any DOM event will do).
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
index ecfe221..94fb34f 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
 	[SupportedBy("iOS")]
-	public class SetInstrumentationBreakpointCommand
+	public class SetInstrumentationBreakpointCommand: ICommand<SetInstrumentationBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Instrumentation name to stop on.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
index 4c8f003..6091414 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
 	[SupportedBy("iOS")]
-	public class SetXHRBreakpointCommand
+	public class SetXHRBreakpointCommand: ICommand<SetXHRBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
index 51d7f77..4efd139 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
index b626dc8..490846f 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
index d72d3c9..800f25a 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.GetDOMStorageItems)]
 	[SupportedBy("iOS")]
-	public class GetDOMStorageItemsCommand
+	public class GetDOMStorageItemsCommand: ICommand<GetDOMStorageItemsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
index abbc806..bfb1444 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
 	[SupportedBy("iOS")]
-	public class RemoveDOMStorageItemCommand
+	public class RemoveDOMStorageItemCommand: ICommand<RemoveDOMStorageItemCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
index aae2c50..d5bfe99 100644
--- a/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.SetDOMStorageItem)]
 	[SupportedBy("iOS")]
-	public class SetDOMStorageItemCommand
+	public class SetDOMStorageItemCommand: ICommand<SetDOMStorageItemCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets StorageId
diff --git a/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
index 09c7bd5..4eb7168 100644
--- a/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 	/// </summary>
 	[Command(ProtocolName.Database.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
index 984fd4b..fb927af 100644
--- a/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 	/// </summary>
 	[Command(ProtocolName.Database.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
index b9e773c..051d0bf 100644
--- a/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[Command(ProtocolName.Database.ExecuteSQL)]
 	[SupportedBy("iOS")]
-	public class ExecuteSQLCommand
+	public class ExecuteSQLCommand: ICommand<ExecuteSQLCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DatabaseId
diff --git a/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
index 915ca70..59370cb 100644
--- a/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[Command(ProtocolName.Database.GetDatabaseTableNames)]
 	[SupportedBy("iOS")]
-	public class GetDatabaseTableNamesCommand
+	public class GetDatabaseTableNamesCommand: ICommand<GetDatabaseTableNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets DatabaseId
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
index d135d9c..28a2a90 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.ContinueToLocation)]
 	[SupportedBy("iOS")]
-	public class ContinueToLocationCommand
+	public class ContinueToLocationCommand: ICommand<ContinueToLocationCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Location to continue to.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
index b72b5ba..41785e1 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
index c90bd38..1312c35 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
index 175c8d2..f073d13 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.EvaluateOnCallFrame)]
 	[SupportedBy("iOS")]
-	public class EvaluateOnCallFrameCommand
+	public class EvaluateOnCallFrameCommand: ICommand<EvaluateOnCallFrameCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Call frame identifier to evaluate on.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
index bbc37f7..e658f4a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetFunctionDetails)]
 	[SupportedBy("iOS")]
-	public class GetFunctionDetailsCommand
+	public class GetFunctionDetailsCommand: ICommand<GetFunctionDetailsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the function to get location for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
index ec5de50..198c957 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetScriptSource)]
 	[SupportedBy("iOS")]
-	public class GetScriptSourceCommand
+	public class GetScriptSourceCommand: ICommand<GetScriptSourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to get source for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
index 8002235..4f0465b 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Pause)]
 	[SupportedBy("iOS")]
-	public class PauseCommand
+	public class PauseCommand: ICommand<PauseCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
index 0816ad4..bbc0512 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.RemoveBreakpoint)]
 	[SupportedBy("iOS")]
-	public class RemoveBreakpointCommand
+	public class RemoveBreakpointCommand: ICommand<RemoveBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets BreakpointId
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
index dc1878b..0201f94 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.Resume)]
 	[SupportedBy("iOS")]
-	public class ResumeCommand
+	public class ResumeCommand: ICommand<ResumeCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
index e0d1593..c241e66 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SearchInContent)]
 	[SupportedBy("iOS")]
-	public class SearchInContentCommand
+	public class SearchInContentCommand: ICommand<SearchInContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the script to search in.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
index b4fb7cb..6e3d2f1 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointByUrl)]
 	[SupportedBy("iOS")]
-	public class SetBreakpointByUrlCommand
+	public class SetBreakpointByUrlCommand: ICommand<SetBreakpointByUrlCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Line number to set breakpoint at.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
index d3a5f28..c19c69a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpoint)]
 	[SupportedBy("iOS")]
-	public class SetBreakpointCommand
+	public class SetBreakpointCommand: ICommand<SetBreakpointCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Location to set breakpoint in.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
index 5c214e5..717e211 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointsActive)]
 	[SupportedBy("iOS")]
-	public class SetBreakpointsActiveCommand
+	public class SetBreakpointsActiveCommand: ICommand<SetBreakpointsActiveCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets New value for breakpoints active state.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
index 267f485..bac986a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetOverlayMessage)]
 	[SupportedBy("iOS")]
-	public class SetOverlayMessageCommand
+	public class SetOverlayMessageCommand: ICommand<SetOverlayMessageCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Overlay message to display when paused in debugger.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
index db5ca39..40b09b3 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetPauseOnExceptions)]
 	[SupportedBy("iOS")]
-	public class SetPauseOnExceptionsCommand
+	public class SetPauseOnExceptionsCommand: ICommand<SetPauseOnExceptionsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Pause on exceptions mode.
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
index 0968ee5..ce5bf21 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepInto)]
 	[SupportedBy("iOS")]
-	public class StepIntoCommand
+	public class StepIntoCommand: ICommand<StepIntoCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
index 0f56703..9927546 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOut)]
 	[SupportedBy("iOS")]
-	public class StepOutCommand
+	public class StepOutCommand: ICommand<StepOutCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
index 98847bb..34aa564 100644
--- a/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOver)]
 	[SupportedBy("iOS")]
-	public class StepOverCommand
+	public class StepOverCommand: ICommand<StepOverCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
index 6f26cbb..5ce57af 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.ClearObjectStore)]
 	[SupportedBy("iOS")]
-	public class ClearObjectStoreCommand
+	public class ClearObjectStoreCommand: ICommand<ClearObjectStoreCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
index 07fdef9..4459331 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
index 68095e2..bc92b7b 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
index 5c06c65..c117efa 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestData)]
 	[SupportedBy("iOS")]
-	public class RequestDataCommand
+	public class RequestDataCommand: ICommand<RequestDataCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
index 9302458..2cdd919 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabase)]
 	[SupportedBy("iOS")]
-	public class RequestDatabaseCommand
+	public class RequestDatabaseCommand: ICommand<RequestDatabaseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
index f3a014a..e83ad4e 100644
--- a/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabaseNames)]
 	[SupportedBy("iOS")]
-	public class RequestDatabaseNamesCommand
+	public class RequestDatabaseNamesCommand: ICommand<RequestDatabaseNamesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Security origin.
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
index aed0c4b..f0605f1 100644
--- a/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 	/// </summary>
 	[Command(ProtocolName.Inspector.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
index f963705..7dc8987 100644
--- a/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 	/// </summary>
 	[Command(ProtocolName.Inspector.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
index c2bb16f..6871c1a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 	/// </summary>
 	[Command(ProtocolName.Inspector.Initialized)]
 	[SupportedBy("iOS")]
-	public class InitializedCommand
+	public class InitializedCommand: ICommand<InitializedCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
index b57d2dd..26f2420 100644
--- a/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
index e506c8d..3cc9d00 100644
--- a/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
index 250e4f3..643ebdb 100644
--- a/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.LayersForNode)]
 	[SupportedBy("iOS")]
-	public class LayersForNodeCommand
+	public class LayersForNodeCommand: ICommand<LayersForNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Root of the subtree for which we want to gather layers.
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
index b3b9ed0..f0060a4 100644
--- a/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 	/// </summary>
 	[Command(ProtocolName.LayerTree.ReasonsForCompositingLayer)]
 	[SupportedBy("iOS")]
-	public class ReasonsForCompositingLayerCommand
+	public class ReasonsForCompositingLayerCommand: ICommand<ReasonsForCompositingLayerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets The id of the layer for which we want to get the reasons it was composited.
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
index 51166bd..4d4fb38 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCache)]
 	[SupportedBy("iOS")]
-	public class CanClearBrowserCacheCommand
+	public class CanClearBrowserCacheCommand: ICommand<CanClearBrowserCacheCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
index 76a3889..d3f67eb 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCookies)]
 	[SupportedBy("iOS")]
-	public class CanClearBrowserCookiesCommand
+	public class CanClearBrowserCookiesCommand: ICommand<CanClearBrowserCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
index 2485481..1956573 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCache)]
 	[SupportedBy("iOS")]
-	public class ClearBrowserCacheCommand
+	public class ClearBrowserCacheCommand: ICommand<ClearBrowserCacheCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
index 2037df2..bf871b5 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCookies)]
 	[SupportedBy("iOS")]
-	public class ClearBrowserCookiesCommand
+	public class ClearBrowserCookiesCommand: ICommand<ClearBrowserCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
index c5bc71e..81fd875 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
index 9c1bed6..9c7a2d3 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
index 793854c..cdc602d 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.GetResponseBody)]
 	[SupportedBy("iOS")]
-	public class GetResponseBodyCommand
+	public class GetResponseBodyCommand: ICommand<GetResponseBodyCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the network request to get content for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
index d5ba136..189fdde 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.LoadResource)]
 	[SupportedBy("iOS")]
-	public class LoadResourceCommand
+	public class LoadResourceCommand: ICommand<LoadResourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame to load the resource from.
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
index df16b70..3000784 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetCacheDisabled)]
 	[SupportedBy("iOS")]
-	public class SetCacheDisabledCommand
+	public class SetCacheDisabledCommand: ICommand<SetCacheDisabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Cache disabled state.
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
index 910d057..18e4a93 100644
--- a/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 	/// </summary>
 	[Command(ProtocolName.Network.SetExtraHTTPHeaders)]
 	[SupportedBy("iOS")]
-	public class SetExtraHTTPHeadersCommand
+	public class SetExtraHTTPHeadersCommand: ICommand<SetExtraHTTPHeadersCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Map with extra HTTP headers.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
index 5de2a5b..1d2b2cf 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Command(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
 	[SupportedBy("iOS")]
-	public class AddScriptToEvaluateOnLoadCommand
+	public class AddScriptToEvaluateOnLoadCommand: ICommand<AddScriptToEvaluateOnLoadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets ScriptSource
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
index c361e3c..64002de 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Archive)]
 	[SupportedBy("iOS")]
-	public class ArchiveCommand
+	public class ArchiveCommand: ICommand<ArchiveCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
index da80c23..ae893cd 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.DeleteCookie)]
 	[SupportedBy("iOS")]
-	public class DeleteCookieCommand
+	public class DeleteCookieCommand: ICommand<DeleteCookieCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Name of the cookie to remove.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
index ad60901..7c7c482 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
index 9201e32..9247529 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
index 07d65d2..09e50eb 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetCompositingBordersVisible)]
 	[SupportedBy("iOS")]
-	public class GetCompositingBordersVisibleCommand
+	public class GetCompositingBordersVisibleCommand: ICommand<GetCompositingBordersVisibleCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
index 2b0aaae..b1992ba 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetCookies)]
 	[SupportedBy("iOS")]
-	public class GetCookiesCommand
+	public class GetCookiesCommand: ICommand<GetCookiesCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
index dd27cd1..e68c17a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceContent)]
 	[SupportedBy("iOS")]
-	public class GetResourceContentCommand
+	public class GetResourceContentCommand: ICommand<GetResourceContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id to get resource for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
index f2c0aa8..304febd 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceTree)]
 	[SupportedBy("iOS")]
-	public class GetResourceTreeCommand
+	public class GetResourceTreeCommand: ICommand<GetResourceTreeCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
index 1173bd5..4e3f289 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.GetScriptExecutionStatus)]
 	[SupportedBy("iOS")]
-	public class GetScriptExecutionStatusCommand
+	public class GetScriptExecutionStatusCommand: ICommand<GetScriptExecutionStatusCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
index e5732bc..c750f78 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.HandleJavaScriptDialog)]
 	[SupportedBy("iOS")]
-	public class HandleJavaScriptDialogCommand
+	public class HandleJavaScriptDialogCommand: ICommand<HandleJavaScriptDialogCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether to accept or dismiss the dialog.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
index 5a4e6d6..790061f 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Navigate)]
 	[SupportedBy("iOS")]
-	public class NavigateCommand
+	public class NavigateCommand: ICommand<NavigateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets URL to navigate the page to.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
index ce965df..a2dceb4 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.Reload)]
 	[SupportedBy("iOS")]
-	public class ReloadCommand
+	public class ReloadCommand: ICommand<ReloadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets If true, browser cache is ignored (as if the user pressed Shift+refresh).
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
index 161af6e..f06abc3 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Command(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
 	[SupportedBy("iOS")]
-	public class RemoveScriptToEvaluateOnLoadCommand
+	public class RemoveScriptToEvaluateOnLoadCommand: ICommand<RemoveScriptToEvaluateOnLoadCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
index ee06d5d..f40f6cd 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SearchInResource)]
 	[SupportedBy("iOS")]
-	public class SearchInResourceCommand
+	public class SearchInResourceCommand: ICommand<SearchInResourceCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id for resource to search in.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
index aa537bb..9662dd4 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SearchInResources)]
 	[SupportedBy("iOS")]
-	public class SearchInResourcesCommand
+	public class SearchInResourcesCommand: ICommand<SearchInResourcesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets String to search for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
index b214a95..9167291 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetCompositingBordersVisible)]
 	[SupportedBy("iOS")]
-	public class SetCompositingBordersVisibleCommand
+	public class SetCompositingBordersVisibleCommand: ICommand<SetCompositingBordersVisibleCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing compositing borders.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
index a455870..d228ab7 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetDocumentContent)]
 	[SupportedBy("iOS")]
-	public class SetDocumentContentCommand
+	public class SetDocumentContentCommand: ICommand<SetDocumentContentCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Frame id to set HTML for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
index d002451..1f3fd90 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetEmulatedMedia)]
 	[SupportedBy("iOS")]
-	public class SetEmulatedMediaCommand
+	public class SetEmulatedMediaCommand: ICommand<SetEmulatedMediaCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Media type to emulate. Empty string disables the override.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
index 4c77645..f3306dc 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetScriptExecutionDisabled)]
 	[SupportedBy("iOS")]
-	public class SetScriptExecutionDisabledCommand
+	public class SetScriptExecutionDisabledCommand: ICommand<SetScriptExecutionDisabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether script execution should be disabled in the page.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
index 6b280bd..1c42969 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetShowPaintRects)]
 	[SupportedBy("iOS")]
-	public class SetShowPaintRectsCommand
+	public class SetShowPaintRectsCommand: ICommand<SetShowPaintRectsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets True for showing paint rectangles
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
index 81089c0..22d1b74 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SetTouchEmulationEnabled)]
 	[SupportedBy("iOS")]
-	public class SetTouchEmulationEnabledCommand
+	public class SetTouchEmulationEnabledCommand: ICommand<SetTouchEmulationEnabledCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Whether the touch event emulation should be enabled.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
index b253834..292c9ca 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SnapshotNode)]
 	[SupportedBy("iOS")]
-	public class SnapshotNodeCommand
+	public class SnapshotNodeCommand: ICommand<SnapshotNodeCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the node to snapshot.
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
index d556477..cde292c 100644
--- a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 	/// </summary>
 	[Command(ProtocolName.Page.SnapshotRect)]
 	[SupportedBy("iOS")]
-	public class SnapshotRectCommand
+	public class SnapshotRectCommand: ICommand<SnapshotRectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets X coordinate
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
index 29b82c2..144825f 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.CallFunctionOn)]
 	[SupportedBy("iOS")]
-	public class CallFunctionOnCommand
+	public class CallFunctionOnCommand: ICommand<CallFunctionOnCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to call function on.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
index 75ccc59..37e9ced 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
index c8a1336..ee67619 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.DisableTypeProfiler)]
 	[SupportedBy("iOS")]
-	public class DisableTypeProfilerCommand
+	public class DisableTypeProfilerCommand: ICommand<DisableTypeProfilerCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
index 6374310..b4e58c7 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
index 3333151..00a7f51 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.EnableTypeProfiler)]
 	[SupportedBy("iOS")]
-	public class EnableTypeProfilerCommand
+	public class EnableTypeProfilerCommand: ICommand<EnableTypeProfilerCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
index a0ac366..bfaed60 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Evaluate)]
 	[SupportedBy("iOS")]
-	public class EvaluateCommand
+	public class EvaluateCommand: ICommand<EvaluateCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Expression to evaluate.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
index 1a0da77..371ac0f 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetBasicBlocks)]
 	[SupportedBy("iOS")]
-	public class GetBasicBlocksCommand
+	public class GetBasicBlocksCommand: ICommand<GetBasicBlocksCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Indicates which sourceID information is requested for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
index c6f656a..d65253f 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetCollectionEntries)]
 	[SupportedBy("iOS")]
-	public class GetCollectionEntriesCommand
+	public class GetCollectionEntriesCommand: ICommand<GetCollectionEntriesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id of the collection to get entries for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
index 0146853..c20aefc 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetDisplayableProperties)]
 	[SupportedBy("iOS")]
-	public class GetDisplayablePropertiesCommand
+	public class GetDisplayablePropertiesCommand: ICommand<GetDisplayablePropertiesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to return properties for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
index 14329f7..b8f87fc 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetProperties)]
 	[SupportedBy("iOS")]
-	public class GetPropertiesCommand
+	public class GetPropertiesCommand: ICommand<GetPropertiesCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to return properties for.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
index 428888a..18195a4 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetRuntimeTypesForVariablesAtOffsets)]
 	[SupportedBy("iOS")]
-	public class GetRuntimeTypesForVariablesAtOffsetsCommand
+	public class GetRuntimeTypesForVariablesAtOffsetsCommand: ICommand<GetRuntimeTypesForVariablesAtOffsetsCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets An array of type locations we're requesting information for. Results are expected in the same order they're sent in.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
index fb07bcf..fadcb33 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Parse)]
 	[SupportedBy("iOS")]
-	public class ParseCommand
+	public class ParseCommand: ICommand<ParseCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Source code to parse.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
index 3708870..2d532f2 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObject)]
 	[SupportedBy("iOS")]
-	public class ReleaseObjectCommand
+	public class ReleaseObjectCommand: ICommand<ReleaseObjectCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Identifier of the object to release.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
index 0b721a1..dbf11db 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObjectGroup)]
 	[SupportedBy("iOS")]
-	public class ReleaseObjectGroupCommand
+	public class ReleaseObjectGroupCommand: ICommand<ReleaseObjectGroupCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Symbolic object group name.
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
index 35d5caa..4400b0d 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.Run)]
 	[SupportedBy("iOS")]
-	public class RunCommand
+	public class RunCommand: ICommand<RunCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
index ae58255..ae6de86 100644
--- a/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 	/// </summary>
 	[Command(ProtocolName.Runtime.SaveResult)]
 	[SupportedBy("iOS")]
-	public class SaveResultCommand
+	public class SaveResultCommand: ICommand<SaveResultCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Id or value of the object to save.
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
index bbb735f..8f1561b 100644
--- a/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
 	/// </summary>
 	[Command(ProtocolName.Timeline.Start)]
 	[SupportedBy("iOS")]
-	public class StartCommand
+	public class StartCommand: ICommand<StartCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5.
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
index 9e958ee..c726f3a 100644
--- a/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
 	/// </summary>
 	[Command(ProtocolName.Timeline.Stop)]
 	[SupportedBy("iOS")]
-	public class StopCommand
+	public class StopCommand: ICommand<StopCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
index 955fd05..5f9d2f1 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
@@ -9,7 +9,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 	/// </summary>
 	[Command(ProtocolName.Worker.CanInspectWorkers)]
 	[SupportedBy("iOS")]
-	public class CanInspectWorkersCommand
+	public class CanInspectWorkersCommand: ICommand<CanInspectWorkersCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
index cf97a6d..8e63493 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.ConnectToWorker)]
 	[SupportedBy("iOS")]
-	public class ConnectToWorkerCommand
+	public class ConnectToWorkerCommand: ICommand<ConnectToWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets WorkerId
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
index 4e9cd81..28999f9 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.Disable)]
 	[SupportedBy("iOS")]
-	public class DisableCommand
+	public class DisableCommand: ICommand<DisableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
index f6e671e..d4e9614 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.DisconnectFromWorker)]
 	[SupportedBy("iOS")]
-	public class DisconnectFromWorkerCommand
+	public class DisconnectFromWorkerCommand: ICommand<DisconnectFromWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets WorkerId
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
index cfaf51b..ce54c39 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.Enable)]
 	[SupportedBy("iOS")]
-	public class EnableCommand
+	public class EnableCommand: ICommand<EnableCommandResponse>
 	{
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
index b590810..791e89f 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.SendMessageToWorker)]
 	[SupportedBy("iOS")]
-	public class SendMessageToWorkerCommand
+	public class SendMessageToWorkerCommand: ICommand<SendMessageToWorkerCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets WorkerId
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
index 3163e97..56f876b 100644
--- a/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
@@ -6,7 +6,7 @@ namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.SetAutoconnectToWorkers)]
 	[SupportedBy("iOS")]
-	public class SetAutoconnectToWorkersCommand
+	public class SetAutoconnectToWorkersCommand: ICommand<SetAutoconnectToWorkersCommandResponse>
 	{
 		/// <summary>
 		/// Gets or sets Value
diff --git a/source/ProtocolGenerator/Program.cs b/source/ProtocolGenerator/Program.cs
index ea412f5..0550241 100644
--- a/source/ProtocolGenerator/Program.cs
+++ b/source/ProtocolGenerator/Program.cs
@@ -298,6 +298,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
         private static void WriteCommand(DirectoryInfo domainDirectoryInfo, string ns, string commandName, string description, IEnumerable<Property> parameters, IEnumerable<string> supportedBy)
         {
             var className = ToCamelCase(commandName) + CommandSubclass;
+            var responseClassName = ToCamelCase(commandName) + CommandResponseSubclass;
             var sb = new StringBuilder();
             sb.AppendFormat("using MasterDevs.ChromeDevTools;");
             sb.AppendLine();
@@ -317,7 +318,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             sb.AppendFormat("\t[{0}({1}.{2}.{3})]", CommandAttribute, ProtocolNameClass, domainDirectoryInfo.Name, ToCamelCase(commandName));
             sb.AppendLine();
             WriteSupportedBy(sb, supportedBy);
-            sb.AppendFormat("\tpublic class {0}", className);
+            sb.AppendFormat("\tpublic class {0}: ICommand<{1}>", className, responseClassName);
             sb.AppendLine();
             sb.AppendLine("\t{");
             foreach (var parameterProperty in parameters)
diff --git a/source/Sample/Program.cs b/source/Sample/Program.cs
index 9c8cf0c..0d7d29f 100644
--- a/source/Sample/Program.cs
+++ b/source/Sample/Program.cs
@@ -58,27 +58,19 @@ namespace MasterDevs.ChromeDevTools.Sample
                         {
                             Console.WriteLine("LoadEventFiredEvent: " + loadEventFired.Timestamp);
 
-                            var documentNodeId =
-                                ((CommandResponse<GetDocumentCommandResponse>)
-                                    await chromeSession.SendAsync(new GetDocumentCommand())).Result.Root.NodeId;
+                            var documentNodeId = (await chromeSession.SendAsync(new GetDocumentCommand(), CancellationToken.None)).Result.Root.NodeId;
                             var bodyNodeId =
-                                ((CommandResponse<QuerySelectorCommandResponse>)
-                                    await chromeSession.SendAsync(new QuerySelectorCommand
-                                    {
-                                        NodeId = documentNodeId,
-                                        Selector = "body"
-                                    })).Result.NodeId;
-                            var height =
-                                ((CommandResponse<GetBoxModelCommandResponse>)
-                                    await chromeSession.SendAsync(new GetBoxModelCommand {NodeId = bodyNodeId})).Result
-                                    .Model.Height;
+                                (await chromeSession.SendAsync(new QuerySelectorCommand
+                                {
+                                    NodeId = documentNodeId,
+                                    Selector = "body"
+                                })).Result.NodeId;
+                            var height = (await chromeSession.SendAsync(new GetBoxModelCommand {NodeId = bodyNodeId})).Result.Model.Height;
 
                             await chromeSession.SendAsync(new SetVisibleSizeCommand {Width = ViewPortWidth, Height = height});
 
                             Console.WriteLine("Taking screenshot");
-                            var screenshot =
-                                (CommandResponse<CaptureScreenshotCommandResponse>)
-                                    await chromeSession.SendAsync(new CaptureScreenshotCommand {Format = "png"});
+                            var screenshot = await chromeSession.SendAsync(new CaptureScreenshotCommand {Format = "png"});
 
                             var data = Convert.FromBase64String(screenshot.Result.Data);
                             File.WriteAllBytes("output.png", data);
-- 
GitLab