diff --git a/hybrid-vectors.cabal b/hybrid-vectors.cabal
--- a/hybrid-vectors.cabal
+++ b/hybrid-vectors.cabal
@@ -1,6 +1,6 @@
 name:          hybrid-vectors
 category:      Data, Vector
-version:       0.1
+version:       0.1.2
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -17,7 +17,7 @@
   .travis.yml
   .gitignore
   .vim.custom
-description:
+description: Hybrid vectors e.g. Mixed Boxed/Unboxed vectors
 
 source-repository head
   type: git
diff --git a/src/Data/Vector/Hybrid/Internal.hs b/src/Data/Vector/Hybrid/Internal.hs
--- a/src/Data/Vector/Hybrid/Internal.hs
+++ b/src/Data/Vector/Hybrid/Internal.hs
@@ -32,6 +32,9 @@
 
 #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
  deriving Typeable
+
+#define Typeable1 Typeable
+
 #else
 
 -- custom Typeable
diff --git a/src/Data/Vector/Hybrid/Mutable.hs b/src/Data/Vector/Hybrid/Mutable.hs
--- a/src/Data/Vector/Hybrid/Mutable.hs
+++ b/src/Data/Vector/Hybrid/Mutable.hs
@@ -183,7 +183,7 @@
 -- ------------------------
 
 -- | Reset all elements of the vector to some undefined value, clearing all
--- references to external objects. This is usually a noop for unboxed vectors. 
+-- references to external objects. This is usually a noop for unboxed vectors.
 clear :: (PrimMonad m, G.MVector u a, G.MVector v b) => MVector u v (PrimState m) (a, b) -> m ()
 clear = G.clear
 {-# INLINE clear #-}
diff --git a/src/Data/Vector/Mixed.hs b/src/Data/Vector/Mixed.hs
--- a/src/Data/Vector/Mixed.hs
+++ b/src/Data/Vector/Mixed.hs
@@ -181,8 +181,6 @@
                         enumFromTo, enumFromThenTo,
                         mapM, mapM_, sequence, sequence_ )
 
-import qualified Prelude
-
 #define BOUNDS_CHECK(f) (Ck.f __FILE__ __LINE__ Ck.Bounds)
 #define UNSAFE_CHECK(f) (Ck.f __FILE__ __LINE__ Ck.Unsafe)
 
@@ -1047,7 +1045,7 @@
 
 infix 4 `notElem`
 -- | /O(n)/ Check if the vector does not contain an element (inverse of 'elem')
-notElem :: (G.Vector v a, Eq a) => a -> Vector a -> Bool
+notElem :: (G.Vector v a, Eq a) => a -> v a -> Bool
 notElem = G.notElem
 {-# INLINE notElem #-}
 
@@ -1270,7 +1268,7 @@
 
 -- | /O(n)/ Monadic fold over non-empty vectors with strict accumulator
 -- that discards the result
-fold1M'_ :: (G.Vector v a, Monad m) => (a -> a -> m a) -> Vector a -> m ()
+fold1M'_ :: (G.Vector v a, Monad m) => (a -> a -> m a) -> v a -> m ()
 fold1M'_ = G.fold1M'_
 {-# INLINE fold1M'_ #-}
 
diff --git a/src/Data/Vector/Mixed/Internal.hs b/src/Data/Vector/Mixed/Internal.hs
--- a/src/Data/Vector/Mixed/Internal.hs
+++ b/src/Data/Vector/Mixed/Internal.hs
@@ -42,6 +42,12 @@
 import Prelude hiding ( length, null, replicate, reverse, map, read, take, drop, init, tail )
 import Text.Read
 
+#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 707
+#define Typeable2 Typeable
+#define Typeable1 Typeable
+#endif
+
+
 -- | Vector doesn't provide a way to recover the type of the immutable vector from the mutable vector type
 --
 -- This would otherwise prevent us from finishing the implementation of 'basicUnsafeFreeze' in 'Vector'
diff --git a/src/Data/Vector/Mixed/Mutable.hs b/src/Data/Vector/Mixed/Mutable.hs
--- a/src/Data/Vector/Mixed/Mutable.hs
+++ b/src/Data/Vector/Mixed/Mutable.hs
@@ -268,7 +268,7 @@
 -- Otherwise, the copying is performed as if the source vector were
 -- copied to a temporary vector and then the temporary vector was copied
 -- to the target vector.
-unsafeMove :: (PrimMonad m, Mixed u v a, Mixed u' v' a)  
+unsafeMove :: (PrimMonad m, Mixed u v a, Mixed u' v' a)
   => u (PrimState m) a   -- ^ target
   -> u' (PrimState m) a   -- ^ source
   -> m ()
