diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+#### 0.5.0.2
+
+* Remove dependency on primitive.
+
 #### 0.5.0.1
 
 * Allow `primitive 0.6.*`
diff --git a/rest-client.cabal b/rest-client.cabal
--- a/rest-client.cabal
+++ b/rest-client.cabal
@@ -1,5 +1,5 @@
 name:                rest-client
-version:             0.5.0.1
+version:             0.5.0.2
 description:         Utility library for use in generated API client libraries.
 synopsis:            Utility library for use in generated API client libraries.
 maintainer:          code@silk.co
@@ -36,7 +36,6 @@
     , hxt-pickle-utils == 0.1.*
     , monad-control (>= 0.3.3.1 && < 0.4) || (>= 1.0.0.3 && < 1.1)
     , mtl >= 2.0 && < 2.3
-    , primitive >= 0.5 && < 0.7
     , resourcet >= 1.1.4 && < 1.2
     , rest-types == 1.13.*
     , tostring == 0.2.*
diff --git a/src/Rest/Client/Base.hs b/src/Rest/Client/Base.hs
--- a/src/Rest/Client/Base.hs
+++ b/src/Rest/Client/Base.hs
@@ -31,7 +31,6 @@
 import Control.Monad.Cont hiding (mapM)
 import Control.Monad.Error hiding (mapM)
 import Control.Monad.List hiding (mapM)
-import Control.Monad.Primitive (PrimMonad)
 import Control.Monad.RWS hiding (mapM)
 import Control.Monad.Reader hiding (mapM)
 import Control.Monad.State hiding (mapM)
@@ -63,12 +62,12 @@
 
 type Api = ApiT IO
 
-class (MonadResource m, MonadBaseControl IO m, Monad m, Functor m, MonadBase IO m, PrimMonad IO) => ApiStateC m where
+class (MonadResource m, MonadBaseControl IO m, Monad m, Functor m, MonadBase IO m) => ApiStateC m where
   getApiState     :: m ApiState
   putApiState     :: ApiState -> m ()
   askApiInfo      :: m ApiInfo
 
-instance (MonadBaseControl IO m, Monad m, Functor m, MonadBase IO m, PrimMonad IO, MonadIO m, MonadThrow m) => ApiStateC (ApiT m) where
+instance (MonadBaseControl IO m, Monad m, Functor m, MonadBase IO m, MonadIO m, MonadThrow m) => ApiStateC (ApiT m) where
   getApiState    = ApiT get
   putApiState    = ApiT . put
   askApiInfo     = ApiT (lift ask)
@@ -105,7 +104,7 @@
 
 instance MonadCatch m => MonadCatch (ApiT m) where catch c f = ApiT (unApiT c `catch` (unApiT . f))
 
-instance (MonadIO m, MonadThrow m, MonadBase IO m, PrimMonad IO, Functor m, Applicative m) => MonadResource (ApiT m) where
+instance (MonadIO m, MonadThrow m, MonadBase IO m, Functor m, Applicative m) => MonadResource (ApiT m) where
   liftResourceT = ApiT . lift . lift . transResourceT liftIO
 
 instance ApiStateC m => ApiStateC (ExceptT e m) where
