diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+2.3.0.2
+-----
+- Bumping bounds, cleaning code.
+
 2.3.0.1
 -----
 - Enable compilation with GHC `7.8` (`base-4.7`). Only when this version of
diff --git a/microlens-aeson.cabal b/microlens-aeson.cabal
--- a/microlens-aeson.cabal
+++ b/microlens-aeson.cabal
@@ -1,77 +1,52 @@
-cabal-version: 1.12
+cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.31.1.
---
--- see: https://github.com/sol/hpack
---
--- hash: c9fc1021bcd1b90c46c512056ec7718f995cdab18af20c49c265dd1e6615fb7f
+name:         microlens-aeson
+version:      2.3.0.2
+synopsis:     Law-abiding lenses for Aeson, using microlens.
+description:  Law-abiding lenses for Aeson, using microlens.
+category:     Numeric
+homepage:     http://github.com/fosskers/microlens-aeson/
+author:       Colin Woodbury
+maintainer:   Colin Woodbury <colin@fosskers.ca>
+copyright:    Copyright (C) 2012 Paul Wilson, (C) 2013 Edward A. Kmett, (C) 2015 Colin Woodbury
+license:      MIT
+license-file: LICENSE
+build-type:   Simple
 
-name:           microlens-aeson
-version:        2.3.0.1
-synopsis:       Law-abiding lenses for Aeson, using microlens.
-description:    Law-abiding lenses for Aeson, using microlens.
-category:       Numeric
-homepage:       http://github.com/fosskers/microlens-aeson/
-bug-reports:    http://github.com/fosskers/microlens-aeson/issues
-author:         Colin Woodbury
-maintainer:     Colin Woodbury <colingw@gmail.com>
-copyright:      Copyright (C) 2012 Paul Wilson, (C) 2013 Edward A. Kmett, (C) 2015 Colin Woodbury
-license:        MIT
-license-file:   LICENSE
-build-type:     Simple
 extra-source-files:
-    AUTHORS.md
-    README.md
-    CHANGELOG.md
-    microlens-aeson.png
-    lens-aeson.png
+  AUTHORS.md
+  README.md
+  CHANGELOG.md
+  microlens-aeson.png
+  lens-aeson.png
 
-source-repository head
-  type: git
-  location: git://github.com/fosskers/microlens-aeson.git
+common commons
+  default-language: Haskell2010
+  ghc-options: -Wall -Wincomplete-record-updates -Wincomplete-uni-patterns
+  build-depends: base >= 4.7 && < 5
+               , aeson >= 0.7
+               , bytestring
+               , deepseq
+               , hashable
+               , microlens >= 0.3
+               , text >= 0.11
+               , unordered-containers >= 0.2.3
+               , vector >= 0.9
 
 library
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns
-  build-depends:
-      aeson >=0.7.0.5 && <1.5
-    , attoparsec >=0.10 && <0.14
-    , base >=4.7 && <5
-    , bytestring
-    , deepseq
-    , hashable
-    , microlens >=0.3 && <0.5
-    , scientific >=0.3.2 && <0.4
-    , text >=0.11.1.10 && <1.3
-    , unordered-containers >=0.2.3 && <0.3
-    , vector >=0.9 && <0.13
-  exposed-modules:
-      Lens.Micro.Aeson
-  other-modules:
-      Lens.Micro.Aeson.Internal
-      Paths_microlens_aeson
-  default-language: Haskell2010
+  import: commons
+  hs-source-dirs: src
+  exposed-modules: Lens.Micro.Aeson
+  other-modules: Lens.Micro.Aeson.Internal
+  build-depends: attoparsec >= 0.10
+               , scientific >= 0.3.2
 
 test-suite microlens-aeson-test
+  import: commons
   type: exitcode-stdio-1.0
+  hs-source-dirs: test
   main-is: Test.hs
-  hs-source-dirs:
-      test
-  ghc-options: -Wall -fwarn-incomplete-record-updates -fwarn-incomplete-uni-patterns -threaded
-  build-depends:
-      aeson >=0.7.0.5 && <1.5
-    , base >=4.7 && <5
-    , bytestring
-    , deepseq
-    , hashable
-    , microlens >=0.3 && <0.5
-    , microlens-aeson
-    , tasty >=0.10.1.2
-    , tasty-hunit >=0.9.2
-    , text >=0.11.1.10 && <1.3
-    , unordered-containers >=0.2.3 && <0.3
-    , vector >=0.9 && <0.13
-  other-modules:
-      Paths_microlens_aeson
-  default-language: Haskell2010
+  ghc-options: -threaded -with-rtsopts=-N
+  build-depends: microlens-aeson
+               , tasty >=0.10.1.2
+               , tasty-hunit >=0.9.2
diff --git a/src/Lens/Micro/Aeson.hs b/src/Lens/Micro/Aeson.hs
--- a/src/Lens/Micro/Aeson.hs
+++ b/src/Lens/Micro/Aeson.hs
@@ -210,7 +210,7 @@
   -- Nothing
   _Null :: Traversal' t ()
   _Null = _Primitive . trav
-    where trav f NullPrim = const NullPrim <$> f ()
+    where trav f NullPrim = NullPrim <$ f ()
           trav _ x        = pure x
   {-# INLINE _Null #-}
 
@@ -238,7 +238,7 @@
   _Bool _ v        = pure v
   {-# INLINE _Bool #-}
 
-  _Null f Null = const Null <$> f ()
+  _Null f Null = Null <$ f ()
   _Null _ v    = pure v
   {-# INLINE _Null #-}
 
