diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,8 @@
+# Version 0.1.1
+
+* Remove upper dependency bounds.
+
+
+# Version 0.1
+
+* Initial release.
diff --git a/Data/Vector/Serial.hs b/Data/Vector/Serial.hs
deleted file mode 100644
--- a/Data/Vector/Serial.hs
+++ /dev/null
@@ -1,94 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-module Data.Vector.Serial
-  ( genericDeserializeVector
-  , genericDeserializeVectorWith
-  , genericSerializeVector
-  , genericSerializeVectorWith
-  ) where
-
-import Data.Bytes.Serial as Bytes
-import Data.Bytes.Get as Bytes
-import Data.Bytes.Put as Bytes
-import qualified Data.Vector.Generic as G
-import qualified Data.Vector.Generic.Mutable as GM
-import qualified Data.Vector.Unboxed as U
-import qualified Data.Vector.Storable as S
-import qualified Data.Vector.Primitive as P
-import Data.Vector (Vector)
-import Foreign.Storable (Storable)
-import System.IO.Unsafe
-
---------------------------------------------------------------------------------
-
--- | Orphan in "Data.Vector.Serial". Boxed, generic vectors.
-instance Bytes.Serial a => Bytes.Serial (Vector a) where
-    serialize = genericSerializeVector
-    deserialize = genericDeserializeVector
-    {-# INLINE deserialize #-}
-
--- | Orphan in "Data.Vector.Serial". Unboxed vectors
-instance (U.Unbox a, Bytes.Serial a) => Bytes.Serial (U.Vector a) where
-    serialize = genericSerializeVector
-    deserialize = genericDeserializeVector
-    {-# INLINE deserialize #-}
-
--- | Orphan in "Data.Vector.Serial". Primitive vectors
-instance (P.Prim a, Bytes.Serial a) => Bytes.Serial (P.Vector a) where
-    serialize = genericSerializeVector
-    deserialize = genericDeserializeVector
-    {-# INLINE deserialize #-}
-
--- | Orphan in "Data.Vector.Serial". Storable vectors
-instance (Storable a, Bytes.Serial a) => Bytes.Serial (S.Vector a) where
-    serialize = genericSerializeVector
-    deserialize = genericDeserializeVector
-    {-# INLINE deserialize #-}
-
-------------------------------------------------------------------------
-
--- | Deserialize vector using custom parsers.
-genericDeserializeVectorWith
-    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadGet m)
-    => m Int       -- ^ Parser for vector size
-    -> m a         -- ^ Parser for vector's element
-    -> m (v a)
-{-# INLINE genericDeserializeVectorWith #-}
-genericDeserializeVectorWith deserializeN deserializeA = do
-    n <- deserializeN
-    v <- return $ unsafePerformIO $ GM.unsafeNew n
-    let go 0 = return ()
-        go i = do x <- deserializeA
-                  () <- return $ unsafePerformIO $ GM.unsafeWrite v (n-i) x
-                  go (i-1)
-    () <- go n
-    return $ unsafePerformIO $ G.unsafeFreeze v
-
--- | Generic serialize for anything in the 'G.Vector' class which uses custom
---   encoders.
-genericSerializeVectorWith
-    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadPut m)
-    => (Int -> m ())  -- ^ Encoder for vector size
-    -> (a   -> m ())  -- ^ Encoder for vector's element
-    -> v a
-    -> m ()
-{-# INLINE genericSerializeVectorWith #-}
-genericSerializeVectorWith serializeN serializeA v = do
-    serializeN (G.length v)
-    G.mapM_ serializeA v
-
--- | Generic function for vector deserialization.
-genericDeserializeVector
-    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadGet m)
-    => m (v a)
-{-# INLINE genericDeserializeVector #-}
-genericDeserializeVector = genericDeserializeVectorWith deserialize deserialize
-
--- | Generic serialize for anything in the 'G.Vector' class.
-genericSerializeVector
-    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadPut m)
-    => v a
-    -> m ()
-{-# INLINE genericSerializeVector #-}
-genericSerializeVector = genericSerializeVectorWith serialize serialize
-
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright Renzo Carbonara (c) 2016
+Copyright Renzo Carbonara (c) 2016-2018
 
 All rights reserved.
 
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,4 @@
+#! /usr/bin/env nix-shell
+#! nix-shell ./shell.nix -i runghc
 import Distribution.Simple
 main = defaultMain
diff --git a/lib/Data/Vector/Serial.hs b/lib/Data/Vector/Serial.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/Vector/Serial.hs
@@ -0,0 +1,94 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module Data.Vector.Serial
+  ( genericDeserializeVector
+  , genericDeserializeVectorWith
+  , genericSerializeVector
+  , genericSerializeVectorWith
+  ) where
+
+import Data.Bytes.Serial as Bytes
+import Data.Bytes.Get as Bytes
+import Data.Bytes.Put as Bytes
+import qualified Data.Vector.Generic as G
+import qualified Data.Vector.Generic.Mutable as GM
+import qualified Data.Vector.Unboxed as U
+import qualified Data.Vector.Storable as S
+import qualified Data.Vector.Primitive as P
+import Data.Vector (Vector)
+import Foreign.Storable (Storable)
+import System.IO.Unsafe
+
+--------------------------------------------------------------------------------
+
+-- | Orphan in "Data.Vector.Serial". Boxed, generic vectors.
+instance Bytes.Serial a => Bytes.Serial (Vector a) where
+    serialize = genericSerializeVector
+    deserialize = genericDeserializeVector
+    {-# INLINE deserialize #-}
+
+-- | Orphan in "Data.Vector.Serial". Unboxed vectors
+instance (U.Unbox a, Bytes.Serial a) => Bytes.Serial (U.Vector a) where
+    serialize = genericSerializeVector
+    deserialize = genericDeserializeVector
+    {-# INLINE deserialize #-}
+
+-- | Orphan in "Data.Vector.Serial". Primitive vectors
+instance (P.Prim a, Bytes.Serial a) => Bytes.Serial (P.Vector a) where
+    serialize = genericSerializeVector
+    deserialize = genericDeserializeVector
+    {-# INLINE deserialize #-}
+
+-- | Orphan in "Data.Vector.Serial". Storable vectors
+instance (Storable a, Bytes.Serial a) => Bytes.Serial (S.Vector a) where
+    serialize = genericSerializeVector
+    deserialize = genericDeserializeVector
+    {-# INLINE deserialize #-}
+
+------------------------------------------------------------------------
+
+-- | Deserialize vector using custom parsers.
+genericDeserializeVectorWith
+    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadGet m)
+    => m Int       -- ^ Parser for vector size
+    -> m a         -- ^ Parser for vector's element
+    -> m (v a)
+{-# INLINE genericDeserializeVectorWith #-}
+genericDeserializeVectorWith deserializeN deserializeA = do
+    n <- deserializeN
+    v <- return $ unsafePerformIO $ GM.unsafeNew n
+    let go 0 = return ()
+        go i = do x <- deserializeA
+                  () <- return $ unsafePerformIO $ GM.unsafeWrite v (n-i) x
+                  go (i-1)
+    () <- go n
+    return $ unsafePerformIO $ G.unsafeFreeze v
+
+-- | Generic serialize for anything in the 'G.Vector' class which uses custom
+--   encoders.
+genericSerializeVectorWith
+    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadPut m)
+    => (Int -> m ())  -- ^ Encoder for vector size
+    -> (a   -> m ())  -- ^ Encoder for vector's element
+    -> v a
+    -> m ()
+{-# INLINE genericSerializeVectorWith #-}
+genericSerializeVectorWith serializeN serializeA v = do
+    serializeN (G.length v)
+    G.mapM_ serializeA v
+
+-- | Generic function for vector deserialization.
+genericDeserializeVector
+    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadGet m)
+    => m (v a)
+{-# INLINE genericDeserializeVector #-}
+genericDeserializeVector = genericDeserializeVectorWith deserialize deserialize
+
+-- | Generic serialize for anything in the 'G.Vector' class.
+genericSerializeVector
+    :: (G.Vector v a, Bytes.Serial a, Bytes.MonadPut m)
+    => v a
+    -> m ()
+{-# INLINE genericSerializeVector #-}
+genericSerializeVector = genericSerializeVectorWith serialize serialize
+
diff --git a/vector-bytes-instances.cabal b/vector-bytes-instances.cabal
--- a/vector-bytes-instances.cabal
+++ b/vector-bytes-instances.cabal
@@ -1,5 +1,5 @@
 name: vector-bytes-instances
-version: 0.1
+version: 0.1.1
 synopsis: Serial (from the bytes package) for Vector (from the vector package)
 description:
   Serial (from the bytes package) for Vector (from the vector package)
@@ -10,8 +10,10 @@
 bug-reports: https://github.com/k0001/vector-bytes-instances/issues
 license: BSD3
 license-file: LICENSE
+extra-source-files: CHANGELOG.md
 author: Renzo Carbonara
-maintainer: renzocarbonara¡gmail!com
+copyright: Renzo Carbonara 2017-2018
+maintainer: ren¡ren!zone
 stability: Experimental
 category: Data
 build-type: Simple
@@ -19,15 +21,17 @@
 
 library
   ghc-options: -Wall -O2
+  hs-source-dirs: lib
   exposed-modules: Data.Vector.Serial
   build-depends:
-    base > 3 && < 4.10,
-    vector >= 0.6 && < 0.12,
-    bytes >= 0.13 && < 0.16
+    base > 3 && < 5,
+    vector >= 0.6,
+    bytes >= 0.13
 
 test-suite tests
   type: exitcode-stdio-1.0
-  main-is: test/Main.hs
+  hs-source-dirs: test
+  main-is: Main.hs
   build-depends:
       base
     , vector-bytes-instances
