diff --git a/Numeric/Jalla/CVector.hs b/Numeric/Jalla/CVector.hs
--- a/Numeric/Jalla/CVector.hs
+++ b/Numeric/Jalla/CVector.hs
@@ -206,7 +206,7 @@
 
 type VMMMonad vec e a = StateT (vec e) IO a
 
-newtype VMM s vec e a = VMM { unVMM :: VMMMonad vec e a } deriving Monad
+newtype VMM s vec e a = VMM { unVMM :: VMMMonad vec e a } deriving (Applicative, Functor, Monad)
 
 runVMM :: CVector vec e => vec e -> VMM s vec e a -> IO a
 runVMM v action = evalStateT action' v
diff --git a/Numeric/Jalla/Types.hs b/Numeric/Jalla/Types.hs
--- a/Numeric/Jalla/Types.hs
+++ b/Numeric/Jalla/Types.hs
@@ -34,6 +34,7 @@
 ) where
 
 import Data.Complex
+import Data.Orphans ()
 import Foreign.C.Types
 import Foreign.Marshal.Array
 import Foreign
@@ -89,22 +90,6 @@
 
 f :: Complex a -> a
 f _ = undefined
-
-instance (RealFloat a, Storable a) => Storable (Complex a) where
-  -- sizeOf c = s where s = 2 * (sizeOf (f c))
-  sizeOf = (2 *) . sizeOf . f
-  alignment = alignment . f
-
-  peek p = peek p1 >>= \r -> peek p2 >>= \i -> return $ r :+ i
-    where
-      p1 = castPtr p
-      p2 = advancePtr p1 1
-
-  poke p c = poke p' r >> poke (advancePtr p' 1) i
-    where p' = castPtr p
-          r = realPart c
-          i = imagPart c
-
 
 {-| Defines a scalar type for each field type. Those are 'Complex' 'CFloat'
     and 'CFloat', as well as 'Complex' 'CDouble' and 'CDouble'. -}
diff --git a/jalla.cabal b/jalla.cabal
--- a/jalla.cabal
+++ b/jalla.cabal
@@ -1,5 +1,5 @@
 name: jalla
-version: 0.2
+version: 0.2.0.1
 cabal-version: (>=1.8)
 build-type: Simple
 license: GPL
@@ -56,7 +56,7 @@
                    Numeric.Jalla.Types
                    Numeric.Jalla.Test
 
-  build-depends: base > 4.0.0 && < 4.7.1, mtl -any,
+  build-depends: base > 4.0.0 && < 5.0, base-orphans (>= 0.3.2), mtl -any,
                  convertible -any,  random (>=1.0.1), QuickCheck (>= 2.4.2)
 
   buildable: True
