diff --git a/.gitIgnore b/.gitIgnore
index 75853ff..47fc7c9 100644
--- a/.gitIgnore
+++ b/.gitIgnore
@@ -1,2 +1,3 @@
 *.mof
-!*.schema.mof
\ No newline at end of file
+!*.schema.mof
+TestsResults.xml
\ No newline at end of file
diff --git a/DSCResources/cChocoFeature/cChocoFeature.psm1 b/DSCResources/cChocoFeature/cChocoFeature.psm1
new file mode 100644
index 0000000..21513ba
--- /dev/null
+++ b/DSCResources/cChocoFeature/cChocoFeature.psm1
@@ -0,0 +1,148 @@
+# Copyright (c) 2017 Chocolatey Software, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+<#
+.Description
+Returns the configuration for cChocoFeature.
+
+.Example
+Get-TargetResource -FeatureName allowGlobalConfirmation -Ensure 'Present'
+#>
+function Get-TargetResource
+{
+    [CmdletBinding()]
+    [OutputType([System.Collections.Hashtable])]
+    param
+    (
+        [parameter(Mandatory = $true)]
+        [System.String]
+        $FeatureName,
+
+        [ValidateSet('Present','Absent')]
+        [System.String]
+        $Ensure='Present'
+    )
+
+    Write-Verbose "Starting cChocoFeature Get-TargetResource - Feature Name: $FeatureName, Ensure: $Ensure"
+
+    $returnValue = @{
+        FeatureName = $FeatureName
+        Ensure = $Ensure
+    }
+
+    $returnValue
+
+}
+
+<#
+.Description
+Performs the set for the cChocoFeature resource.
+
+.Example
+Get-TargetResource -FeatureName allowGlobalConfirmation -Ensure 'Present'
+
+#>
+function Set-TargetResource
+{
+    [CmdletBinding(SupportsShouldProcess=$true)]
+    param
+    (
+        [parameter(Mandatory = $true)]
+        [System.String]
+        $FeatureName,
+
+        [ValidateSet('Present','Absent')]
+        [string]
+        $Ensure='Present'
+    )
+
+
+    Write-Verbose "Starting cChocoFeature Set-TargetResource - Feature Name: $FeatureName, Ensure: $Ensure."
+
+    if ($pscmdlet.ShouldProcess("Choco feature $FeatureName will be ensured $Ensure."))
+    {
+        if ($Ensure -eq 'Present')
+        {
+            Write-Verbose "Enabling choco feature $FeatureName."
+            choco feature enable -n $FeatureName
+        }
+        else 
+        {
+            Write-Verbose "Disabling choco feature $FeatureName."
+            choco feature disable -n $FeatureName
+        }
+    }
+
+}
+
+<#
+.Description
+Performs the test for cChocoFeature.
+
+.Example
+Test-TargetResource -FeatureName allowGlobalConfirmation -Ensure 'Present'
+#>
+function Test-TargetResource
+{
+    [CmdletBinding()]
+    [OutputType([System.Boolean])]
+    param
+    (
+        [parameter(Mandatory = $true)]
+        [System.String]
+        $FeatureName,
+
+        [ValidateSet('Present','Absent')]
+        [System.String]
+        $Ensure='Present'
+    )
+
+    Write-Verbose "Starting cChocoFeature Test-TargetResource - Feature Name: $FeatureName, Ensure: $Ensure."
+
+    $result = $false
+    $feature = Get-ChocoFeature -FeatureName $FeatureName | Where-Object {$_.State -eq "Enabled"}
+
+    if (($Ensure -eq 'Present' -and ([bool]$feature)) -or ($Ensure -eq 'Absent' -and !([bool]$feature)))
+    {
+        Write-Verbose "Test-TargetResource is true, $FeatureName is $Ensure."
+        $result = $true
+    }
+    else
+    {
+        Write-Verbose "Test-TargetResource is false, $FeatureName is not $Ensure."
+    }
+
+    return $result
+
+}
+
+<#
+.Description
+Query chocolatey features.
+#>
+function Get-ChocoFeature 
+{
+    [OutputType([PSCustomObject])]
+    param(
+        [string]
+        $FeatureName
+    )
+    choco feature  -r | ConvertFrom-Csv -Delimiter "|" -Header Name, State, Description | Where-Object {$_.Name -eq $FeatureName}
+}
+
+
+
+
+Export-ModuleMember -Function *-TargetResource
+
diff --git a/DSCResources/cChocoFeature/cChocoFeature.schema.mof b/DSCResources/cChocoFeature/cChocoFeature.schema.mof
new file mode 100644
index 0000000..6b1c53a
--- /dev/null
+++ b/DSCResources/cChocoFeature/cChocoFeature.schema.mof
@@ -0,0 +1,8 @@
+
+[ClassVersion("1.0.0.0"), FriendlyName("cChocoFeature")]
+class cChocoFeature : OMI_BaseResource
+{
+    [Key] String FeatureName;
+    [Write,ValueMap{"Present", "Absent"},Values{"Present", "Absent"}] String Ensure;
+};
+
diff --git a/Examples/cChocoFeatureExample.ps1 b/Examples/cChocoFeatureExample.ps1
new file mode 100644
index 0000000..8cd1b70
--- /dev/null
+++ b/Examples/cChocoFeatureExample.ps1
@@ -0,0 +1,41 @@
+# Copyright (c) 2017 Chocolatey Software, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+configuration ChocoFeatures {
+
+    Import-DscResource -ModuleName cChoco
+
+    Node 'localhost' {
+
+        cChocoFeature allowGlobalConfirmation {
+
+            FeatureName = "allowGlobalConfirmation"
+            Ensure = 'Present'
+
+        }
+
+        cChocoFeature powershellHost {
+            
+            FeatureName = "powershellHost"
+            Ensure = 'Absent'
+        }
+    }
+
+}
+
+
+$config = ChocoFeatures
+
+Start-DscConfiguration -Path $config.psparentpath -Wait -Verbose -Force
diff --git a/Tests/cChocoFeature_Tests.ps1 b/Tests/cChocoFeature_Tests.ps1
new file mode 100644
index 0000000..4c67253
--- /dev/null
+++ b/Tests/cChocoFeature_Tests.ps1
@@ -0,0 +1,87 @@
+# Copyright (c) 2017 Chocolatey Software, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+$ResourceName = ((Split-Path $MyInvocation.MyCommand.Path -Leaf) -split '_')[0]
+$ResourceFile = (Get-DscResource -Name $ResourceName).Path
+
+$TestsPath    = (split-path -path $MyInvocation.MyCommand.Path -Parent)
+$ResourceFile = Get-ChildItem -Recurse $TestsPath\.. -File | Where-Object {$_.name -eq "$ResourceName.psm1"}
+
+Import-Module -Name $ResourceFile.FullName
+
+
+#---------------------------------#
+# Pester tests for cChocoInstall  #
+#---------------------------------#
+Describe "Testing cChocoFeature" {
+
+    Context "Test-TargetResource" {
+
+        mock -ModuleName cChocoFeature -CommandName Get-ChocoFeature -MockWith {
+            @([pscustomobject]@{
+                Name = "allowGlobalConfirmation"
+                State = "Enabled"
+                Description = "blah"
+            },
+            [pscustomobject]@{
+                Name = "powershellhost"
+                State = "Disabled"
+                Description = "blah"
+            } )| Where-Object { $_.Name -eq $FeatureName }
+        } -Verifiable
+
+
+        it 'Test-TargetResource returns true when Present and Enabled.' {
+            Test-TargetResource -FeatureName 'allowGlobalConfirmation' -Ensure 'Present' | should be $true
+        }
+
+        it 'Test-TargetResource returns false when Present and Disabled' {
+            Test-TargetResource -FeatureName 'powershellhost' -Ensure 'Present' | should be $false
+        }
+
+        it 'Test-TargetResource returns false when Absent and Enabled' {
+            Test-TargetResource -FeatureName 'allowGlobalConfirmation' -Ensure 'Absent' | Should be $false
+        }
+
+        it 'Test-TargetResource returns true when Absent and Disabled' {
+            Test-TargetResource -FeatureName 'powershellhost' -Ensure 'Absent' | should be $true
+        }
+
+    }
+
+    Context "Set-TargetResource" {
+
+        InModuleScope -ModuleName cChocoFeature -ScriptBlock {
+            function choco {}
+            mock choco {} 
+        }
+
+        Set-TargetResource -FeatureName "TestFeature" -Ensure "Present"
+
+        it "Present - Should have called choco, with enable" { 
+            Assert-MockCalled -CommandName choco -ModuleName cChocoFeature -ParameterFilter {
+                $args -contains "enable"
+            }
+        }
+
+        Set-TargetResource -FeatureName "TestFeature" -Ensure "Absent"
+
+        it "Absent - Should have called choco, with disable" {
+            Assert-MockCalled -CommandName choco -ModuleName cChocoFeature -ParameterFilter {
+                $args -contains "disable"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Tests/cChoco_ScriptAnalyzerTests.ps1 b/Tests/cChoco_ScriptAnalyzerTests.ps1
index 89c3441..699758b 100644
--- a/Tests/cChoco_ScriptAnalyzerTests.ps1
+++ b/Tests/cChoco_ScriptAnalyzerTests.ps1
@@ -19,7 +19,7 @@
 $Rules   = Get-ScriptAnalyzerRule
 
 #Only run on cChocoInstaller.psm1 for now as this is the only resource that has had code adjustments for PSScriptAnalyzer rules.
-$Modules = Get-ChildItem “$PSScriptRoot\..\” -Filter ‘*.psm1’ -Recurse | Where-Object {$_.FullName -match '(cChocoInstaller|cChocoPackageInstall)\.psm1$'}
+$Modules = Get-ChildItem “$PSScriptRoot\..\” -Filter ‘*.psm1’ -Recurse | Where-Object {$_.FullName -match '(cChocoInstaller|cChocoPackageInstall|cChocoFeature)\.psm1$'}
 
 #---------------------------------#
 # Run Module tests (psm1)         #