diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+0.2.0
+
+* More reorganisation.
+
 0.1.0
 
 * Reorganisation of all `papa` packages.
diff --git a/papa-base.cabal b/papa-base.cabal
--- a/papa-base.cabal
+++ b/papa-base.cabal
@@ -1,5 +1,5 @@
 name:               papa-base
-version:            0.1.0
+version:            0.2.0
 license:            BSD3
 license-file:       LICENSE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -27,6 +27,8 @@
 
   build-depends:
                     base >= 4.8 && < 5
+                    , papa-base-export >= 0.2.0
+                    , papa-base-implement >= 0.2.0
                     
   ghc-options:
                     -Wall
@@ -39,13 +41,6 @@
 
   exposed-modules:
                     Papa.Base
-                    Papa.Control.Applicative
-                    Papa.Control.Category
-                    Papa.Data.Foldable
-                    Papa.Data.Functor
-                    Papa.Data.List
-                    Papa.Data.Monoid
-                    Papa.Data.Traversable
                     
 test-suite doctests
   type:
diff --git a/src/Papa/Base.hs b/src/Papa/Base.hs
--- a/src/Papa/Base.hs
+++ b/src/Papa/Base.hs
@@ -4,10 +4,5 @@
   module P
 ) where
 
-import Papa.Control.Applicative as P
-import Papa.Control.Category as P
-import Papa.Data.Foldable as P
-import Papa.Data.Functor as P
-import Papa.Data.List as P
-import Papa.Data.Monoid as P
-import Papa.Data.Traversable as P
+import Papa.Base.Export as P
+import Papa.Base.Implement as P
diff --git a/src/Papa/Control/Applicative.hs b/src/Papa/Control/Applicative.hs
deleted file mode 100644
--- a/src/Papa/Control/Applicative.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Control.Applicative(
-  const
-, return
-) where
-
-import Control.Applicative(Applicative(pure))
-
-const ::
-  Applicative f =>
-  a
-  -> f a
-const =
-  pure
-
-return ::
-  Applicative f =>
-  a
-  -> f a
-return =
-  pure
-
diff --git a/src/Papa/Control/Category.hs b/src/Papa/Control/Category.hs
deleted file mode 100644
--- a/src/Papa/Control/Category.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Control.Category(
-  id
-) where
-
-import Control.Category(Category)
-import qualified Control.Category as Category(id)
-
-id ::
-  Category cat =>
-  cat a a
-id =
-  Category.id
diff --git a/src/Papa/Data/Foldable.hs b/src/Papa/Data/Foldable.hs
deleted file mode 100644
--- a/src/Papa/Data/Foldable.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Data.Foldable(
-  mapM_
-, sequence_
-) where
-
-import Control.Applicative(Applicative)
-import Data.Foldable(Foldable, traverse_, sequenceA_)
-
-mapM_ ::
-  (Foldable t, Applicative f) =>
-  (a -> f b)
-  -> t a
-  -> f ()
-mapM_ =
-  traverse_
-  
-sequence_ ::
-  (Foldable t, Applicative f) =>
-  t (f a)
-  -> f ()
-sequence_ =
-  sequenceA_
diff --git a/src/Papa/Data/Functor.hs b/src/Papa/Data/Functor.hs
deleted file mode 100644
--- a/src/Papa/Data/Functor.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Data.Functor(
-  map
-, flip
-, unzip
-) where
-
-import Data.Functor(Functor(fmap), (<$>))
-
-map ::
-  Functor f =>
-  (a -> b)
-  -> f a
-  -> f b
-map =
-  fmap
-
-flip ::
-  Functor f =>
-  f (a -> b)
-  -> a
-  -> f b
-flip f a =
-  (\k -> k a) <$> f
-
-unzip ::
-  Functor f =>
-  f (a, b)
-  -> (f a, f b)
-unzip x =
-  ((\(a, _) -> a) <$> x, (\(_, b) -> b) <$> x)
diff --git a/src/Papa/Data/List.hs b/src/Papa/Data/List.hs
deleted file mode 100644
--- a/src/Papa/Data/List.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Data.List(
-  reverse
-, lookup
-) where
-
-import Data.Eq(Eq((==)))
-import Data.Maybe(Maybe(Nothing, Just))
-import Control.Applicative((<|>))
-import Data.Foldable(Foldable(foldr))
-import qualified Data.List as List(reverse)
-
-reverse ::
-  [a]
-  -> [a]
-reverse x =
-  let go (_:xs) ~(y:ys) =
-        y : go xs ys
-      go [] ~[] =
-        []
-  in go x (List.reverse x)
-
-lookup ::
-  (Eq a, Foldable f) =>
-  a
-  -> f (a, b)
-  -> Maybe b
-lookup a =
-  foldr (\(x, y) b -> b <|> if x == a then Just y else Nothing) Nothing
diff --git a/src/Papa/Data/Monoid.hs b/src/Papa/Data/Monoid.hs
deleted file mode 100644
--- a/src/Papa/Data/Monoid.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Data.Monoid(
-  mconcat  
-) where
-
-import Data.Foldable(Foldable, fold)
-import Data.Monoid(Monoid)
-
-mconcat ::
-  (Monoid a, Foldable f) =>
-  f a
-  -> a
-mconcat =
-  fold
diff --git a/src/Papa/Data/Traversable.hs b/src/Papa/Data/Traversable.hs
deleted file mode 100644
--- a/src/Papa/Data/Traversable.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Papa.Data.Traversable(
-  mapM
-, sequence
-) where
-
-import Control.Applicative(Applicative)
-import Data.Traversable(Traversable(traverse, sequenceA))
-
-mapM ::
-  (Traversable t, Applicative f) =>
-  (a -> f b)
-  -> t a
-  -> f (t b)
-mapM =
-  traverse
-  
-sequence ::
-  (Traversable t, Applicative f) =>
-  t (f a)
-  -> f (t a)
-sequence =
-  sequenceA
