diff --git a/haskus-binary.cabal b/haskus-binary.cabal
--- a/haskus-binary.cabal
+++ b/haskus-binary.cabal
@@ -1,96 +1,109 @@
-name: haskus-binary
-version: 1.0
-cabal-version: >=1.20
-build-type: Simple
-license: BSD3
-license-file: LICENSE
-copyright: Sylvain Henry 2017
-maintainer: sylvain@haskus.fr
-homepage: http://www.haskus.org/system
-synopsis: Haskus binary format manipulation
+name:                haskus-binary
+version:             1.1
+synopsis:            Haskus binary format manipulation
+license:             BSD3
+license-file:        LICENSE
+author:              Sylvain Henry
+maintainer:          sylvain@haskus.fr
+homepage:            http://www.haskus.org/system
+copyright:           Sylvain Henry 2017
+category:            System
+build-type:          Simple
+cabal-version:       1.20
+
 description:
-    A set of types and tools to manipulate binary data, memory, etc. In
-    particular to interface Haskell data types with foreign data types (C
-    structs, unions, enums, etc.).
-category: System
-author: Sylvain Henry
+   A set of types and tools to manipulate binary data, memory, etc. In
+   particular to interface Haskell data types with foreign data types (C
+   structs, unions, enums, etc.).
 
 source-repository head
-    type: git
-    location: git://github.com/haskus/haskus-binary.git
+  type: git
+  location: git://github.com/haskus/haskus-binary.git
 
 library
-    exposed-modules:
-        Haskus.Format.Binary.Bits
-        Haskus.Format.Binary.Bits.Finite
-        Haskus.Format.Binary.Bits.Index
-        Haskus.Format.Binary.Bits.Bitwise
-        Haskus.Format.Binary.Bits.Reverse
-        Haskus.Format.Binary.Bits.Rotate
-        Haskus.Format.Binary.Bits.Shift
-        Haskus.Format.Binary.Bits.Order
-        Haskus.Format.Binary.Bits.Get
-        Haskus.Format.Binary.Bits.Put
-        Haskus.Format.Binary.BitSet
-        Haskus.Format.Binary.BitField
-        Haskus.Format.Binary.Buffer
-        Haskus.Format.Binary.BufferList
-        Haskus.Format.Binary.BufferBuilder
-        Haskus.Format.Binary.Char
-        Haskus.Format.Binary.Enum
-        Haskus.Format.Binary.Endianness
-        Haskus.Format.Binary.FixedPoint
-        Haskus.Format.Binary.Get
-        Haskus.Format.Binary.Put
-        Haskus.Format.Binary.VariableLength
-        Haskus.Format.Binary.Vector
-        Haskus.Format.Binary.Union
-        Haskus.Format.Binary.Unum
-        Haskus.Format.Binary.Posit
-        Haskus.Format.Binary.Record
-        Haskus.Format.Binary.Storable
-        Haskus.Format.Binary.Word
-        Haskus.Format.Binary.Ptr
-        Haskus.Format.Binary.Layout
-        Haskus.Utils.Memory
-    build-depends:
-        base >=4.9 && <4.12,
-        haskus-utils >=0.6 && <1.1,
-        cereal ==0.5.*,
-        bytestring ==0.10.*,
-        mtl ==2.2.*
-    default-language: Haskell2010
-    hs-source-dirs: src/lib
-    ghc-options: -Wall
+  exposed-modules:
 
-test-suite  tests
-    type: exitcode-stdio-1.0
-    main-is: Main.hs
-    build-depends:
-        base >=4.11.1.0 && <4.12,
-        haskus-binary -any,
-        haskus-utils ==1.0.*,
-        tasty >=0.11 && <1.2,
-        tasty-quickcheck >=0.8 && <0.11,
-        QuickCheck >=2.8 && <2.12,
-        bytestring >=0.10.8.2 && <0.11
-    default-language: Haskell2010
-    hs-source-dirs: src/tests/
-    other-modules:
-        Haskus.Tests.Format.Binary
-        Haskus.Tests.Common
-        Haskus.Tests.Format.Binary.Bits
-        Haskus.Tests.Format.Binary.GetPut
-        Haskus.Tests.Format.Binary.Vector
-    ghc-options: -O2 -Wall -threaded
+    Haskus.Format.Binary.Bits
+    Haskus.Format.Binary.Bits.Finite
+    Haskus.Format.Binary.Bits.Index
+    Haskus.Format.Binary.Bits.Bitwise
+    Haskus.Format.Binary.Bits.Reverse
+    Haskus.Format.Binary.Bits.Rotate
+    Haskus.Format.Binary.Bits.Shift
+    Haskus.Format.Binary.Bits.Order
+    Haskus.Format.Binary.Bits.Get
+    Haskus.Format.Binary.Bits.Put
 
-benchmark  bench-BitReverse
-    type: exitcode-stdio-1.0
-    main-is: BitReverse.hs
-    build-depends:
-        base >=4.11.1.0 && <4.12,
-        haskus-binary -any,
-        criterion >=1.4.1.0 && <1.5
-    default-language: Haskell2010
-    hs-source-dirs: src/bench
-    ghc-options: -Wall -threaded -O3
+    Haskus.Format.Binary.BitSet
+    Haskus.Format.Binary.BitField
+    Haskus.Format.Binary.Buffer
+    Haskus.Format.Binary.BufferList
+    Haskus.Format.Binary.BufferBuilder
+    Haskus.Format.Binary.Char
+    Haskus.Format.Binary.Enum
+    Haskus.Format.Binary.Endianness
+    Haskus.Format.Binary.FixedPoint
+    Haskus.Format.Binary.Get
+    Haskus.Format.Binary.Put
+    Haskus.Format.Binary.VariableLength
+    Haskus.Format.Binary.Vector
+    Haskus.Format.Binary.Union
+    Haskus.Format.Binary.Unum
+    Haskus.Format.Binary.Posit
+    Haskus.Format.Binary.Record
+    Haskus.Format.Binary.Storable
+    Haskus.Format.Binary.Word
+    Haskus.Format.Binary.Ptr
+
+    Haskus.Format.Binary.Layout
+
+    Haskus.Utils.Memory
+
+  other-modules:
+
+  build-depends:       
+         base                      >= 4.9 && <5.0
+      ,  haskus-utils-types        >= 1.3
+      ,  haskus-utils-data         >= 1.1
+      ,  haskus-utils              >= 1.3
+      ,  cereal                    >= 0.5
+      ,  bytestring                >= 0.10
+      ,  mtl                       >= 2.2
+
+  build-tools: 
+  ghc-options:          -Wall
+  default-language:     Haskell2010
+  hs-source-dirs:       src/lib
+
+test-suite tests
+   type:                exitcode-stdio-1.0
+   main-is:             Main.hs
+   hs-source-dirs:      src/tests/
+   ghc-options:         -Wall -threaded
+   default-language:    Haskell2010
+   other-modules:
+         Haskus.Tests.Format.Binary
+      ,  Haskus.Tests.Common
+      ,  Haskus.Tests.Format.Binary.Bits
+      ,  Haskus.Tests.Format.Binary.GetPut
+      ,  Haskus.Tests.Format.Binary.Vector
+
+   build-depends:    
+         base
+      ,  haskus-binary
+      ,  haskus-utils
+      ,  tasty                   >= 0.11
+      ,  tasty-quickcheck        >= 0.8
+      ,  QuickCheck              >= 2.8
+      ,  bytestring
+
+Benchmark bench-BitReverse
+   type:               exitcode-stdio-1.0
+   main-is:            BitReverse.hs
+   hs-source-dirs:     src/bench
+   ghc-options:         -Wall -threaded
+   default-language:     Haskell2010
+   build-depends:
+         base
+      ,  haskus-binary
+      ,  criterion
diff --git a/src/lib/Haskus/Format/Binary/Union.hs b/src/lib/Haskus/Format/Binary/Union.hs
--- a/src/lib/Haskus/Format/Binary/Union.hs
+++ b/src/lib/Haskus/Format/Binary/Union.hs
@@ -78,20 +78,20 @@
 newtype Union (x :: [*]) = Union (ForeignPtr ()) deriving (Show)
 
 -- | Retrieve a union member from its type
-fromUnion :: (Storable a, IsMember a l ~ 'True) => Union l -> a
+fromUnion :: (Storable a, Member a l) => Union l -> a
 fromUnion (Union fp) = unsafePerformIO $ withForeignPtr fp (peek . castPtr)
 
 -- | Create a new union from one of the union types
-toUnion :: forall a l . (Storable (Union l), Storable a, IsMember a l ~ 'True) => a -> Union l
+toUnion :: forall a l . (Storable (Union l), Storable a, Member a l) => a -> Union l
 toUnion = toUnion' False
 
 -- | Like 'toUnion' but set the remaining bytes to 0
-toUnionZero :: forall a l . (Storable (Union l), Storable a, IsMember a l ~ 'True) => a -> Union l
+toUnionZero :: forall a l . (Storable (Union l), Storable a, Member a l) => a -> Union l
 toUnionZero = toUnion' True
 
 
 -- | Create a new union from one of the union types
-toUnion' :: forall a l . (Storable (Union l), Storable a, IsMember a l ~ 'True) => Bool -> a -> Union l
+toUnion' :: forall a l . (Storable (Union l), Storable a, Member a l) => Bool -> a -> Union l
 toUnion' zero v = unsafePerformIO $ do
    let sz = sizeOfT @(Union l)
    fp <- mallocForeignPtrBytes (fromIntegral sz)
