diff --git a/hw-ip.cabal b/hw-ip.cabal
--- a/hw-ip.cabal
+++ b/hw-ip.cabal
@@ -1,9 +1,9 @@
 cabal-version: 2.2
 name: hw-ip
-version: 2.3.1.1
+version: 2.3.1.2
 license: BSD-3-Clause
 license-file: LICENSE
-copyright: 2018 John Ky, David Turnbull, Jian Wan
+copyright: 2018-2019 John Ky, David Turnbull, Jian Wan
 maintainer: newhoggy@gmail.com
 author: John Ky,
         David Turnbull,
@@ -21,7 +21,6 @@
     type: git
     location: https://github.com/haskell-works/hw-ip
 
-
 common base                 { build-depends: base                 >= 4          && < 5      }
 
 common appar                { build-depends: appar                >= 0.1.8      && < 0.2    }
@@ -29,7 +28,7 @@
 common bytestring           { build-depends: bytestring           >= 0.10.6     && < 0.11   }
 common containers           { build-depends: containers           >= 0.6.0.1    && < 0.7    }
 common generic-lens         { build-depends: generic-lens         >= 1.1.0.0    && < 1.2    }
-common hedgehog             { build-depends: hedgehog             >= 0.5.3      && < 0.7    }
+common hedgehog             { build-depends: hedgehog             >= 0.6        && < 1.1    }
 common hspec                { build-depends: hspec                >= 2.4.4      && < 2.6    }
 common hw-bits              { build-depends: hw-bits              >= 0.7        && < 0.8    }
 common hw-hspec-hedgehog    { build-depends: hw-hspec-hedgehog    >= 0.1.0.2    && < 0.2    }
@@ -41,38 +40,30 @@
 common semigroups   { if impl(ghc <  8    ) { build-depends: semigroups     >= 0.16     && < 0.19 } }
 
 common config
-  default-language: Haskell2010
-  ghc-options: -Wall
+  default-language:   Haskell2010
+  ghc-options:        -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
 
 library
-    import:   base, config
-            , appar
-            , containers
-            , generic-lens
-            , hw-bits
-            , iproute
-            , text
-    exposed-modules:
-      HaskellWorks.Data.Network.Ip
-      HaskellWorks.Data.Network.Ip.Internal
-      HaskellWorks.Data.Network.Ip.Ip
-      HaskellWorks.Data.Network.Ip.Ipv4
-      HaskellWorks.Data.Network.Ip.Ipv6
-      HaskellWorks.Data.Network.Ip.Range
-      HaskellWorks.Data.Network.Ip.SafeEnum
-      HaskellWorks.Data.Network.Ip.Validity
-      HaskellWorks.Data.Network.Ip.Word128
-    hs-source-dirs: src
-    other-modules:
-    default-language: Haskell2010
-    ghc-options:
-      -Wall
-      -Wcompat
-      -Wincomplete-record-updates
-      -Wincomplete-uni-patterns
-      -Wredundant-constraints
-      -O2
-      -msse4.2
+  import:   base, config
+          , appar
+          , containers
+          , generic-lens
+          , hw-bits
+          , iproute
+          , text
+  exposed-modules:
+    HaskellWorks.Data.Network.Ip
+    HaskellWorks.Data.Network.Ip.Internal
+    HaskellWorks.Data.Network.Ip.Ip
+    HaskellWorks.Data.Network.Ip.Ipv4
+    HaskellWorks.Data.Network.Ip.Ipv6
+    HaskellWorks.Data.Network.Ip.Range
+    HaskellWorks.Data.Network.Ip.SafeEnum
+    HaskellWorks.Data.Network.Ip.Validity
+    HaskellWorks.Data.Network.Ip.Word128
+  hs-source-dirs:     src
+  other-modules:      Paths_hw_ip
+  autogen-modules:    Paths_hw_ip
 
 executable hw-ip
   import:   base, config
@@ -84,45 +75,34 @@
           , optparse-applicative
           , semigroups
           , text
-  main-is:        Main.hs
-  hs-source-dirs: app
-  ghc-options:    -threaded -rtsopts -with-rtsopts=-N -O2 -msse4.2
-  build-depends:  hw-ip
   other-modules:
-      App.Commands
-      App.Commands.TextToWord
-      App.Commands.Types
+    App.Commands
+    App.Commands.TextToWord
+    App.Commands.Types
+  main-is:            Main.hs
+  hs-source-dirs:     app
+  ghc-options:        -threaded -rtsopts -with-rtsopts=-N
+  build-depends:      hw-ip
 
 test-suite hw-ip-test
-    import:   base, config
-            , appar
-            , generic-lens
-            , hedgehog
-            , hspec
-            , hw-bits
-            , hw-hspec-hedgehog
-            , text
-    type: exitcode-stdio-1.0
-    main-is: Spec.hs
-    hs-source-dirs: test
-    other-modules:
-        HaskellWorks.Data.Network.Gen
-        HaskellWorks.Data.Network.IpBlockSpec
-        HaskellWorks.Data.Network.Ipv4Spec
-        HaskellWorks.Data.Network.Ipv6Spec
-        HaskellWorks.Data.Network.RangeSpec
-        HaskellWorks.Data.Network.Word128Spec
-    default-language: Haskell2010
-    ghc-options:
-      -Wall
-      -Wcompat
-      -Wincomplete-record-updates
-      -Wincomplete-uni-patterns
-      -Wredundant-constraints
-      -O2
-      -msse4.2
-      -threaded
-      -rtsopts
-      -with-rtsopts=-N
-    build-depends:  hw-ip
-    build-tools:    hspec-discover
+  import:   base, config
+          , appar
+          , generic-lens
+          , hedgehog
+          , hspec
+          , hw-bits
+          , hw-hspec-hedgehog
+          , text
+  other-modules:
+    HaskellWorks.Data.Network.Gen
+    HaskellWorks.Data.Network.IpBlockSpec
+    HaskellWorks.Data.Network.Ipv4Spec
+    HaskellWorks.Data.Network.Ipv6Spec
+    HaskellWorks.Data.Network.RangeSpec
+    HaskellWorks.Data.Network.Word128Spec
+  type:               exitcode-stdio-1.0
+  main-is:            Spec.hs
+  hs-source-dirs:     test
+  ghc-options:        -threaded -rtsopts -with-rtsopts=-N
+  build-depends:      hw-ip
+  build-tools:        hspec-discover
diff --git a/src/HaskellWorks/Data/Network/Ip/Ipv4.hs b/src/HaskellWorks/Data/Network/Ip/Ipv4.hs
--- a/src/HaskellWorks/Data/Network/Ip/Ipv4.hs
+++ b/src/HaskellWorks/Data/Network/Ip/Ipv4.hs
@@ -34,6 +34,7 @@
 import Data.Foldable
 import Data.Semigroup                        ((<>))
 import Data.Word
+import Foreign.Storable
 import GHC.Generics
 import HaskellWorks.Data.Bits.BitWise
 import HaskellWorks.Data.Network.Ip.Range
@@ -48,7 +49,7 @@
 
 newtype IpAddress = IpAddress
   { word :: Word32
-  } deriving (Enum, Bounded, Eq, Ord, Generic, SafeEnum)
+  } deriving (Enum, Bounded, Eq, Ord, Generic, SafeEnum, Storable)
 
 instance Show IpAddress where
   showsPrec _ = showsIpAddress
