diff --git a/src/Foreign/Storable/FixedArray.hs b/src/Foreign/Storable/FixedArray.hs
--- a/src/Foreign/Storable/FixedArray.hs
+++ b/src/Foreign/Storable/FixedArray.hs
@@ -1,7 +1,7 @@
 module Foreign.Storable.FixedArray where
 
 import Control.Monad.Trans.State (StateT, evalStateT, get, put, )
-import Control.Monad.Trans (lift, )
+import Control.Monad.Trans.Class (lift, )
 
 import Foreign.Ptr (Ptr, castPtr, )
 import Foreign.Storable (Storable(..))
diff --git a/src/Foreign/Storable/Record.hs b/src/Foreign/Storable/Record.hs
--- a/src/Foreign/Storable/Record.hs
+++ b/src/Foreign/Storable/Record.hs
@@ -66,7 +66,8 @@
           (Writer, writer, runWriter, )
 import Control.Monad.Trans.State
           (State, modify, state, runState, )
-import Control.Applicative (Applicative(..), liftA2, )
+import Control.Applicative (Applicative(pure, (<*>)), )
+import Data.Functor.Compose (Compose(Compose), )
 import Data.Monoid (Monoid(mempty, mappend), )
 
 import Foreign.Storable.FixedArray (roundUp, )
@@ -100,26 +101,6 @@
    {-# INLINE (<*>) #-}
    pure a = Access (pure a)
    Access f <*> Access x = Access (f <*> x)
-
-
-{- |
-See (.:) in TypeCompose library.
-However I find this library too heavy weight
-with respect to type extensions in order to depend on it.
--}
-newtype Compose f g a =
-   Compose (f (g a))
-
-instance (Functor f, Functor g) => Functor (Compose f g) where
-   {-# INLINE fmap #-}
-   fmap f (Compose x) = Compose (fmap (fmap f) x)
-
-instance (Applicative f, Applicative g) => Applicative (Compose f g) where
-   {-# INLINE pure #-}
-   {-# INLINE (<*>) #-}
-   pure x = Compose (pure (pure x))
-   Compose f <*> Compose x =
-      Compose (liftA2 (<*>) f x)
 
 
 data Box r a =
diff --git a/src/Foreign/Storable/Traversable.hs b/src/Foreign/Storable/Traversable.hs
--- a/src/Foreign/Storable/Traversable.hs
+++ b/src/Foreign/Storable/Traversable.hs
@@ -43,7 +43,7 @@
 
 import Control.Monad.Trans.State
           (StateT, evalStateT, get, put, modify, )
-import Control.Monad.Trans (liftIO, )
+import Control.Monad.IO.Class (liftIO, )
 
 import Foreign.Storable.FixedArray (roundUp, )
 import qualified Foreign.Storable as St
diff --git a/src/Foreign/Storable/TraversableUnequalSizes.hs b/src/Foreign/Storable/TraversableUnequalSizes.hs
--- a/src/Foreign/Storable/TraversableUnequalSizes.hs
+++ b/src/Foreign/Storable/TraversableUnequalSizes.hs
@@ -16,7 +16,7 @@
 
 import Control.Monad.Trans.State
           (StateT, evalStateT, gets, modify, )
-import Control.Monad.Trans (liftIO, )
+import Control.Monad.IO.Class (liftIO, )
 
 import Foreign.Storable.FixedArray (roundUp, )
 import qualified Foreign.Storable as St
diff --git a/storable-record.cabal b/storable-record.cabal
--- a/storable-record.cabal
+++ b/storable-record.cabal
@@ -1,5 +1,5 @@
 Name:         storable-record
-Version:      0.0.2
+Version:      0.0.2.1
 Category:     Data, Foreign
 Synopsis:     Elegant definition of Storable instances for records
 Description:
@@ -63,14 +63,14 @@
 Source-Repository this
   Type:     darcs
   Location: http://code.haskell.org/~thielema/storable-record/
-  Tag:      0.0.2
+  Tag:      0.0.2.1
 
 Flag splitBase
   description: Choose the new smaller, split-up base package.
 
 Library
   Build-Depends:
-    transformers >=0.0.1 && <0.2,
+    transformers >=0.0.1 && <0.3,
     utility-ht >=0.0.1 && <0.1
   If flag(splitBase)
     Build-Depends:
