diff --git a/simpleconfig.cabal b/simpleconfig.cabal
--- a/simpleconfig.cabal
+++ b/simpleconfig.cabal
@@ -2,22 +2,22 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c67d10d1eb1bf920ba6216f194f8ebecca2f446b5969afddc4dcac33138a7283
+-- hash: 3f050daea80c2a4761388510e8f040afc3d6da8bcd373506b06e534380dbfb43
 
-name:                simpleconfig
-version:             0.0.5
-synopsis:            Short description of your package
-homepage:            https://github.com/koterpillar/simpleconfig#readme
-bug-reports:         https://github.com/koterpillar/simpleconfig/issues
-license:             BSD3
-license-file:        LICENSE
-author:              Alexey Kotlyarov
-maintainer:          a@koterpillar.com
-copyright:           2017 Alexey Kotlyarov
-category:            Web
-build-type:          Simple
-cabal-version:       >= 1.10
-description:         Please see the README on Github at <https://github.com/koterpillar/simpleconfig#readme>
+name:           simpleconfig
+version:        0.0.7
+synopsis:       Short description of your package
+description:    Please see the README on Github at <https://github.com/koterpillar/simpleconfig#readme>
+category:       Web
+homepage:       https://github.com/koterpillar/simpleconfig#readme
+bug-reports:    https://github.com/koterpillar/simpleconfig/issues
+author:         Alexey Kotlyarov
+maintainer:     a@koterpillar.com
+copyright:      2017 Alexey Kotlyarov
+license:        BSD3
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >= 1.10
 
 extra-source-files:
     README.md
@@ -29,21 +29,22 @@
 library
   hs-source-dirs:
       src
-  exposed-modules:
-      Config.Simple
-  other-modules:
-      Paths_simpleconfig
   build-depends:
       base >=4.7 && <5
     , containers
     , lens
+  exposed-modules:
+      Config.Simple
+  other-modules:
+      Paths_simpleconfig
   default-language: Haskell2010
 
 test-suite simpleconfig-test
   type: exitcode-stdio-1.0
+  main-is: Spec.hs
   hs-source-dirs:
       test
-  main-is: Spec.hs
+  ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       base
     , containers
@@ -53,5 +54,4 @@
     , text
   other-modules:
       Paths_simpleconfig
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N
   default-language: Haskell2010
diff --git a/src/Config/Simple.hs b/src/Config/Simple.hs
--- a/src/Config/Simple.hs
+++ b/src/Config/Simple.hs
@@ -49,20 +49,17 @@
 type family ConfigLast a k where
   ConfigLast a CPartial = Last a
   ConfigLast a CComplete = a
-  ConfigLast a (CLensFor CPartial root) = LensFor root (Last a)
-  ConfigLast a (CLensFor CComplete root) = LensFor root a
+  ConfigLast a (CLensFor k root) = LensFor root (ConfigLast a k)
 
 type family ConfigBool k where
   ConfigBool CPartial = Any
   ConfigBool CComplete = Bool
-  ConfigBool (CLensFor CPartial root) = LensFor root Bool
-  ConfigBool (CLensFor CComplete root) = LensFor root Bool
+  ConfigBool (CLensFor k root) = LensFor root (ConfigBool k)
 
 type family ConfigSet a k where
   ConfigSet a CPartial = Set a
   ConfigSet a CComplete = Set a
-  ConfigSet a (CLensFor CPartial root) = LensFor root (Set a)
-  ConfigSet a (CLensFor CComplete root) = LensFor root (Set a)
+  ConfigSet a (CLensFor k root) = LensFor root (ConfigSet a k)
 
 type Partial config = config CPartial
 
@@ -151,21 +148,5 @@
   gToLensFor pk rootLens =
     gToLensFor pk (rootLens . _1) :*: gToLensFor pk (rootLens . _2)
 
-instance GLensForMember k x y =>
-         GLensFor k root (Rec0 x) (Rec0 (LensFor root y)) where
-  gToLensFor pk rootLens = K1 $ LensFor $ rootLens . G._K1 . gLensLeaf pk
-
-class GLensForMember k x y where
-  gLensLeaf :: proxy k -> Lens' x y
-
-instance GLensForMember CPartial (Last a) (Last a) where
-  gLensLeaf _ = id
-
-instance GLensForMember CPartial Any Bool where
-  gLensLeaf _ = iso getAny Any
-
-instance GLensForMember CPartial (Set a) (Set a) where
-  gLensLeaf _ = id
-
-instance GLensForMember CComplete a a where
-  gLensLeaf _ = id
+instance GLensFor k root (Rec0 x) (Rec0 (LensFor root x)) where
+  gToLensFor pk rootLens = K1 $ LensFor $ rootLens . G._K1
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -55,7 +55,7 @@
 main :: IO ()
 main = do
   let config' =
-        mempty & (address' <>~ Last (Just "Silverpond")) & (dryRun' .~ True) &
+        mempty & (address' <>~ Last (Just "Silverpond")) & (dryRun' <>~ Any True) &
         (widgets' <>~ Set.singleton "blah") &
         (address' <>~ Last (Just "SEEK"))
   print config'
