diff --git a/bench/Bench.hs b/bench/Bench.hs
--- a/bench/Bench.hs
+++ b/bench/Bench.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE FlexibleContexts, TypeApplications #-}
-import Interlude hiding (modify', execStateT)
 
 import GHC.IO.Encoding (setLocaleEncoding, utf8)
 import Control.Effects.State
diff --git a/simple-effects.cabal b/simple-effects.cabal
--- a/simple-effects.cabal
+++ b/simple-effects.cabal
@@ -1,5 +1,5 @@
 name:                simple-effects
-version:             0.7.0.0
+version:             0.7.0.1
 synopsis:            A simple effect system that integrates with MTL
 description:         Please see README.md
 homepage:            https://gitlab.com/LukaHorvat/simple-effects
@@ -22,18 +22,19 @@
                      , Control.Effects.Early
                      , Control.Effects.Parallel
                      , Control.Monad.Runnable
+  other-modules:       Import
   hs-source-dirs:      src
   default-language:    Haskell2010
   build-depends:       base >= 4.7 && < 5
                      , transformers
                      , mtl
-                     , interlude-l >= 0.1.0.6
                      , monad-control == 1.0.*
                      , transformers-base == 0.4.*
                      , list-t
-                     , lens
                      , array
-  default-extensions:  NoImplicitPrelude
+                     , MonadRandom
+                     , exceptions
+                     , text
   ghc-options:         -Wall
 
 test-suite tests
@@ -43,9 +44,7 @@
     type:              exitcode-stdio-1.0
     build-depends:     base >= 4.7 && < 5
                      , simple-effects
-                     , interlude-l >= 0.1.0.6
     ghc-options:       -Wall -threaded -with-rtsopts=-N
-    default-extensions:NoImplicitPrelude
 
 benchmark bench-effects
   type:                exitcode-stdio-1.0
@@ -55,7 +54,5 @@
                      , criterion
                      , mtl
                      , transformers
-                     , interlude-l
-                     , lens
                      , simple-effects
   default-language:    Haskell2010
diff --git a/src/Control/Effects.hs b/src/Control/Effects.hs
--- a/src/Control/Effects.hs
+++ b/src/Control/Effects.hs
@@ -3,12 +3,7 @@
            , IncoherentInstances #-}
 module Control.Effects (module Control.Effects, module Control.Effects1) where
 
-import Interlude hiding (msg)
-
-import Control.Monad.Reader
-import Control.Monad.Trans.Control
-import Control.Monad.Base
-
+import Import 
 import Control.Monad.Runnable
 import Control.Effects1
 
diff --git a/src/Control/Effects/Early.hs b/src/Control/Effects/Early.hs
--- a/src/Control/Effects/Early.hs
+++ b/src/Control/Effects/Early.hs
@@ -5,8 +5,7 @@
     , earlyReturn, handleEarly, onlyDo, ifNothingEarlyReturn, ifNothingDo
     , ifLeftEarlyReturn, ifLeftDo ) where
 
-import Interlude
-import Control.Monad.Trans.Except
+import Import
 
 import Control.Effects
 
@@ -24,7 +23,7 @@
 
 -- | Get the result from a computation. Either the early returned one, or the regular result.
 handleEarly :: Monad m => ExceptT (Early a) m a -> m a
-handleEarly = fmap (either getEarlyReturn identity)
+handleEarly = fmap (either getEarlyReturn id)
             . runExceptT
 
 -- | Only do the given action and exit early with it's result.
diff --git a/src/Control/Effects/List.hs b/src/Control/Effects/List.hs
--- a/src/Control/Effects/List.hs
+++ b/src/Control/Effects/List.hs
@@ -3,7 +3,8 @@
     ( module Control.Effects.List
     , module ListT ) where
 
-import Interlude hiding (toList, traverse_, fold, foldMaybe, splitAt, head)
+import Prelude hiding (splitAt, head)
+import Import
 
 import ListT hiding (take)
 
diff --git a/src/Control/Effects/Parallel.hs b/src/Control/Effects/Parallel.hs
--- a/src/Control/Effects/Parallel.hs
+++ b/src/Control/Effects/Parallel.hs
@@ -1,10 +1,12 @@
 {-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-}
 module Control.Effects.Parallel where
 
-import Interlude hiding (toList)
+import Import
 
+import GHC.MVar
 import GHC.IO.Unsafe
 import Data.Array.IO
+import Control.Concurrent
 
 import Control.Monad.Runnable
 import Control.Effects.State
diff --git a/src/Control/Effects/Reader.hs b/src/Control/Effects/Reader.hs
--- a/src/Control/Effects/Reader.hs
+++ b/src/Control/Effects/Reader.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE ScopedTypeVariables, TypeFamilies, FlexibleContexts #-}
 module Control.Effects.Reader (module Control.Effects.Reader, module Control.Effects) where
 
-import Interlude
+import Import
 
 import Control.Effects
 
diff --git a/src/Control/Effects/Signal.hs b/src/Control/Effects/Signal.hs
--- a/src/Control/Effects/Signal.hs
+++ b/src/Control/Effects/Signal.hs
@@ -8,9 +8,8 @@
     , module Control.Monad.Trans.Except, MaybeT(..), discardAllExceptions, showAllExceptions
     , Handles(..), handleToEitherRecursive ) where
 
-import Interlude hiding (TypeError)
+import Import
 import Control.Monad.Trans.Except
-import Control.Monad.Trans.Maybe
 import qualified GHC.TypeLits as TL
 import GHC.TypeLits (TypeError, ErrorMessage(..))
 import Control.Effects
@@ -34,7 +33,7 @@
 instance {-# OVERLAPPABLE #-} Monad m => MonadEffect (Signal e b) (ExceptT e m) where
     effect _ = throwE
 instance (Show e, Monad m) => MonadEffect (Signal e b) (ExceptT SomeSignal m) where
-    effect _ = throwE . SomeSignal . pshow
+    effect _ = throwE . SomeSignal . pack . show
 instance Monad m => MonadEffect (Signal a b) (MaybeT m) where
     effect _ _ = mzero
 instance TypeError (UnhandledError a b)
diff --git a/src/Control/Effects/State.hs b/src/Control/Effects/State.hs
--- a/src/Control/Effects/State.hs
+++ b/src/Control/Effects/State.hs
@@ -1,9 +1,8 @@
 {-# LANGUAGE TypeFamilies, ScopedTypeVariables, FlexibleContexts, Rank2Types, ConstraintKinds #-}
-{-# LANGUAGE MultiParamTypeClasses, GADTs, BangPatterns #-}
+{-# LANGUAGE MultiParamTypeClasses, GADTs #-}
 module Control.Effects.State (module Control.Effects.State, module Control.Effects1) where
 
-import Interlude hiding (Set, State)
-
+import Import hiding (State)
 import Data.IORef
 
 import Control.Effects1
diff --git a/src/Control/Effects1.hs b/src/Control/Effects1.hs
--- a/src/Control/Effects1.hs
+++ b/src/Control/Effects1.hs
@@ -3,11 +3,7 @@
            , IncoherentInstances, RankNTypes, ConstraintKinds #-}
 module Control.Effects1 where
 
-import Interlude hiding (msg)
-
-import Control.Monad.Reader
-import Control.Monad.Trans.Control
-import Control.Monad.Base
+import Import
 
 import Control.Monad.Runnable
 
diff --git a/src/Control/Monad/Runnable.hs b/src/Control/Monad/Runnable.hs
--- a/src/Control/Monad/Runnable.hs
+++ b/src/Control/Monad/Runnable.hs
@@ -3,19 +3,13 @@
 {-# OPTIONS_GHC -Wno-warnings-deprecations #-}
 module Control.Monad.Runnable where
 
-import Interlude hiding (toList, throwError)
-
-import ListT
+import Import
 import qualified Control.Monad.Trans.State.Strict as SS
 import qualified Control.Monad.Trans.State.Lazy as LS
 import qualified Control.Monad.Trans.Writer.Strict as SW
 import qualified Control.Monad.Trans.Writer.Lazy as LW
 import qualified Control.Monad.Trans.RWS.Strict as SR
 import qualified Control.Monad.Trans.RWS.Lazy as LR
-import Control.Monad.Trans.Identity
-import Control.Monad.Trans.Error
-import Control.Monad.Trans.Except
-import Control.Monad.Trans.Maybe
 -- import Control.Monad.Trans.Cont -- may be impossible to write
 
 -- | A class of monads that have a run function.
diff --git a/src/Import.hs b/src/Import.hs
new file mode 100644
--- /dev/null
+++ b/src/Import.hs
@@ -0,0 +1,21 @@
+module Import (module X) where
+
+import Control.Applicative as X
+import Control.Monad.State as X
+import Control.Monad.Catch as X
+import Control.Monad.Random as X
+import Control.Monad.Trans.Identity as X hiding (liftCallCC, liftCatch)
+import Control.Monad.Trans.Error as X hiding (liftListen, liftCallCC, liftPass)
+import Control.Monad.Trans.Except as X hiding (liftListen, liftCallCC, liftPass)
+import Control.Monad.Trans.Maybe as X hiding (liftListen, liftCallCC, liftCatch, liftPass)
+import Control.Monad.Reader as X
+import Data.Functor.Identity as X
+import ListT as X
+import Control.Monad.Trans.Control as X
+import Control.Monad.Base as X
+import GHC.Exts as X hiding (toList, fromList)
+import Data.Proxy as X
+import Data.Function as X
+import Data.Semigroup as X hiding (Any)
+import Data.Void as X
+import Data.Text as X (Text, pack, unpack)
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -1,12 +1,13 @@
 {-# LANGUAGE NoMonomorphismRestriction, FlexibleContexts, ScopedTypeVariables, BangPatterns #-}
 module Main where
 
-import Interlude
-
+import Control.Monad.IO.Class
+import Control.Monad
 import Control.Effects.Signal
 import Control.Effects.State
 import Control.Effects.Parallel
 import Control.Effects.Early
+import Data.Function
 
 -- Should infer
 ex1 = signal True
@@ -44,7 +45,7 @@
         void $ throwSignal True
         setState (3 :: Int)
     st :: Int <- getState
-    print st
+    liftIO (print st)
 
 inc :: Int -> Int
 inc !x = x + 1
@@ -67,5 +68,5 @@
     putStrLn "Starting parallel test"
     handleStateT (0 :: Int) $ do
         res <- parallelWithSequence (replicate 8 task)
-        mapM_ print res
+        mapM_ (liftIO . print) res
     putStrLn "Parallel test done"
