diff --git a/Control/Monad/RWS/CPS.hs b/Control/Monad/RWS/CPS.hs
deleted file mode 100644
--- a/Control/Monad/RWS/CPS.hs
+++ /dev/null
@@ -1,79 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE UndecidableInstances #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Control.Monad.RWS.CPS
--- Copyright   :  (c) Daniel Mendler 2016,
---                (c) Andy Gill 2001,
---                (c) Oregon Graduate Institute of Science and Technology, 2001
--- License     :  BSD-style (see the file LICENSE)
---
--- Maintainer  :  mail@daniel-mendler.de
--- Stability   :  experimental
--- Portability :  non-portable (multi-param classes, functional dependencies)
---
--- Stricter RWS monad using continuation-passing-style for the
--- writer output.
---
---      Inspired by the paper
---      /Functional Programming with Overloading and Higher-Order Polymorphism/,
---        Mark P Jones (<http://web.cecs.pdx.edu/~mpj/>)
---          Advanced School of Functional Programming, 1995.
------------------------------------------------------------------------------
-
-module Control.Monad.RWS.CPS (
-  -- * The RWS monad
-  RWS,
-  rws,
-  runRWS,
-  evalRWS,
-  execRWS,
-  mapRWS,
-  withRWS,
-  -- * The RWST monad transformer
-  RWST,
-  runRWST,
-  evalRWST,
-  execRWST,
-  mapRWST,
-  withRWST,
-  module X
-) where
-
-import Control.Monad as X
-import Control.Monad.Fix as X
-import Control.Monad.RWS.Class as X
-import Control.Monad.Trans as X
-import Data.Monoid as X
-
-import Control.Monad.Cont.Class
-import Control.Monad.Error.Class
-import Control.Monad.Trans.RWS.CPS
-import qualified Control.Monad.Trans.RWS.CPS as CPS
-
--- Orphan instances
-
-instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m) where
-  writer = CPS.writer
-  tell = CPS.tell
-  listen = CPS.listen
-  pass = CPS.pass
-
-instance Monad m => MonadReader r (RWST r w s m) where
-  ask = CPS.ask
-  local = CPS.local
-  reader = CPS.reader
-
-instance Monad m => MonadState s (RWST r w s m) where
-  get = CPS.get
-  put = CPS.put
-  state = CPS.state
-
-instance MonadError e m => MonadError e (RWST r w s m) where
-  throwError = lift . throwError
-  catchError = CPS.liftCatch catchError
-
-instance MonadCont m => MonadCont (RWST r w s m) where
-  callCC = CPS.liftCallCC callCC
diff --git a/Control/Monad/Writer/CPS.hs b/Control/Monad/Writer/CPS.hs
deleted file mode 100644
--- a/Control/Monad/Writer/CPS.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE UndecidableInstances #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Control.Monad.Writer.CPS
--- Copyright   :  (c) Daniel Mendler 2016,
---                (c) Andy Gill 2001,
---                (c) Oregon Graduate Institute of Science and Technology, 2001
--- License     :  BSD-style (see the file LICENSE)
---
--- Maintainer  :  mail@daniel-mendler.de
--- Stability   :  experimental
--- Portability :  non-portable (multi-param classes, functional dependencies)
---
--- Stricter writer monad using continuation-passing-style for the
--- writer output.
---
---      Inspired by the paper
---      /Functional Programming with Overloading and Higher-Order Polymorphism/,
---        Mark P Jones (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>)
---          Advanced School of Functional Programming, 1995.
------------------------------------------------------------------------------
-
-module Control.Monad.Writer.CPS (
-  -- * The Writer monad
-  Writer,
-  runWriter,
-  execWriter,
-  mapWriter,
-  -- * The WriterT monad transformer
-  WriterT,
-  runWriterT,
-  execWriterT,
-  mapWriterT,
-  module X
-) where
-
-import Control.Monad as X
-import Control.Monad.Fix as X
-import Control.Monad.Trans as X
-import Control.Monad.Writer.Class as X
-import Data.Monoid as X
-
-import Control.Monad.Cont.Class
-import Control.Monad.Error.Class
-import Control.Monad.Trans.Writer.CPS
-import qualified Control.Monad.Trans.Writer.CPS as CPS
-
--- Orphan instances
-
-instance (Monoid w, Monad m) => MonadWriter w (WriterT w m) where
-  writer = CPS.writer
-  tell = CPS.tell
-  listen = CPS.listen
-  pass = CPS.pass
-
-instance MonadError e m => MonadError e (WriterT w m) where
-  throwError = lift . throwError
-  catchError = CPS.liftCatch catchError
-
-instance MonadCont m => MonadCont (WriterT w m) where
-  callCC = CPS.liftCallCC callCC
diff --git a/src/Control/Monad/RWS/CPS.hs b/src/Control/Monad/RWS/CPS.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Monad/RWS/CPS.hs
@@ -0,0 +1,79 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE UndecidableInstances #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Monad.RWS.CPS
+-- Copyright   :  (c) Daniel Mendler 2016,
+--                (c) Andy Gill 2001,
+--                (c) Oregon Graduate Institute of Science and Technology, 2001
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  mail@daniel-mendler.de
+-- Stability   :  experimental
+-- Portability :  non-portable (multi-param classes, functional dependencies)
+--
+-- Stricter RWS monad using continuation-passing-style for the
+-- writer output.
+--
+--      Inspired by the paper
+--      /Functional Programming with Overloading and Higher-Order Polymorphism/,
+--        Mark P Jones (<http://web.cecs.pdx.edu/~mpj/>)
+--          Advanced School of Functional Programming, 1995.
+-----------------------------------------------------------------------------
+
+module Control.Monad.RWS.CPS (
+  -- * The RWS monad
+  RWS,
+  rws,
+  runRWS,
+  evalRWS,
+  execRWS,
+  mapRWS,
+  withRWS,
+  -- * The RWST monad transformer
+  RWST,
+  runRWST,
+  evalRWST,
+  execRWST,
+  mapRWST,
+  withRWST,
+  module X
+) where
+
+import Control.Monad as X
+import Control.Monad.Fix as X
+import Control.Monad.RWS.Class as X
+import Control.Monad.Trans as X
+import Data.Monoid as X
+
+import Control.Monad.Cont.Class
+import Control.Monad.Error.Class
+import Control.Monad.Trans.RWS.CPS
+import qualified Control.Monad.Trans.RWS.CPS as CPS
+
+-- Orphan instances
+
+instance (Monoid w, Monad m) => MonadWriter w (RWST r w s m) where
+  writer = CPS.writer
+  tell = CPS.tell
+  listen = CPS.listen
+  pass = CPS.pass
+
+instance Monad m => MonadReader r (RWST r w s m) where
+  ask = CPS.ask
+  local = CPS.local
+  reader = CPS.reader
+
+instance Monad m => MonadState s (RWST r w s m) where
+  get = CPS.get
+  put = CPS.put
+  state = CPS.state
+
+instance MonadError e m => MonadError e (RWST r w s m) where
+  throwError = lift . throwError
+  catchError = CPS.liftCatch catchError
+
+instance MonadCont m => MonadCont (RWST r w s m) where
+  callCC = CPS.liftCallCC callCC
diff --git a/src/Control/Monad/Writer/CPS.hs b/src/Control/Monad/Writer/CPS.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Monad/Writer/CPS.hs
@@ -0,0 +1,76 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE UndecidableInstances #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Control.Monad.Writer.CPS
+-- Copyright   :  (c) Daniel Mendler 2016,
+--                (c) Andy Gill 2001,
+--                (c) Oregon Graduate Institute of Science and Technology, 2001
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  mail@daniel-mendler.de
+-- Stability   :  experimental
+-- Portability :  non-portable (multi-param classes, functional dependencies)
+--
+-- Stricter writer monad using continuation-passing-style for the
+-- writer output.
+--
+--      Inspired by the paper
+--      /Functional Programming with Overloading and Higher-Order Polymorphism/,
+--        Mark P Jones (<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>)
+--          Advanced School of Functional Programming, 1995.
+-----------------------------------------------------------------------------
+
+module Control.Monad.Writer.CPS (
+  -- * The Writer monad
+  Writer,
+  runWriter,
+  execWriter,
+  mapWriter,
+  -- * The WriterT monad transformer
+  WriterT,
+  runWriterT,
+  execWriterT,
+  mapWriterT,
+  module X
+) where
+
+import Control.Monad as X
+import Control.Monad.Fix as X
+import Control.Monad.Trans as X
+import Control.Monad.Writer.Class as X
+import Data.Monoid as X
+
+import Control.Monad.State.Class
+import Control.Monad.Reader.Class
+import Control.Monad.Cont.Class
+import Control.Monad.Error.Class
+import Control.Monad.Trans.Writer.CPS
+import qualified Control.Monad.Trans.Writer.CPS as CPS
+
+-- Orphan instances
+
+instance (Monad m, Monoid w) => MonadWriter w (WriterT w m) where
+  writer = CPS.writer
+  tell = CPS.tell
+  listen = CPS.listen
+  pass = CPS.pass
+
+instance MonadError e m => MonadError e (WriterT w m) where
+  throwError = lift . throwError
+  catchError = CPS.liftCatch catchError
+
+instance MonadCont m => MonadCont (WriterT w m) where
+  callCC = CPS.liftCallCC callCC
+
+instance (MonadReader r m, Monoid w) => MonadReader r (WriterT w m) where
+  ask    = lift ask
+  local  = CPS.mapWriterT . local
+  reader = lift . reader
+
+instance MonadState s m => MonadState s (WriterT w m) where
+  get = lift get
+  put = lift . put
+  state = lift . state
diff --git a/writer-cps-mtl.cabal b/writer-cps-mtl.cabal
--- a/writer-cps-mtl.cabal
+++ b/writer-cps-mtl.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           writer-cps-mtl
-version:        0.1.1.0
+version:        0.1.1.1
 cabal-version:  >= 1.10
 license:        BSD3
 license-file:   LICENSE
@@ -24,7 +24,7 @@
 
 library
   hs-source-dirs:
-      .
+      src
   ghc-options: -Wall
   build-depends:
       base < 6
