diff --git a/core-program/lib/Core/Everything.hs b/core-program/lib/Core/Everything.hs
new file mode 100644
--- /dev/null
+++ b/core-program/lib/Core/Everything.hs
@@ -0,0 +1,26 @@
+{-# OPTIONS_HADDOCK not-home, hide #-}
+
+{-|
+Meta package re-exporting all the modules in the collection, which is only
+here so the top level __unbeliever__ package shows dependencies on
+__core-text__, __core-data__, and __core-program__.
+-}
+--
+-- This module is not exposed. Should it be? At first seems like a nice
+-- idea, but caused more problems than anything; you try to actually use
+-- e.g. Rope and you get a "hidden package core-text" errors.
+--
+module Core.Everything
+    (
+        module Core.Text
+      , module Core.Program
+      , module Core.Data
+      , module Core.Encoding
+      , module Core.System
+    ) where
+
+import Core.Text
+import Core.Data
+import Core.Program
+import Core.System
+import Core.Encoding
diff --git a/unbeliever.cabal b/unbeliever.cabal
--- a/unbeliever.cabal
+++ b/unbeliever.cabal
@@ -1,79 +1,110 @@
 cabal-version: 1.12
-name: unbeliever
-version: 0.10.0.0
-license: BSD3
-license-file: LICENCE
-copyright: © 2018-2019 Operational Dynamics Consulting Pty Ltd, and Others
-maintainer: Andrew Cowie <andrew@operationaldynamics.com>
-author: Andrew Cowie <andrew@operationaldynamics.com>
-stability: experimental
-tested-with: ghc ==8.6.5
-homepage: https://github.com/oprdyn/unbeliever#readme
-bug-reports: https://github.com/oprdyn/unbeliever/issues
-synopsis: Opinionated Haskell Interoperability
-description:
-    A library to help build command-line programs, both tools and
-    longer-running daemons.
-    .
-    A description of this package, a list of features, and some background
-    to its design is contained in the
-    <https://github.com/oprdyn/unbeliever/blob/master/README.markdown README>
-    on GitHub.
-    .
-    An ancillary aim of this library is to facilitate interoperability. A
-    single batteries-included package would make this easier, but the resulting
-    dependency footprint would be considerable. The code is thus spread across
-    several packages:
-    .
-    * __core-text__
-    * __core-data__
-    * __core-program__
-    .
-    Useful starting points in the documentation are "Core.Program.Execute"
-    and "Core.Text.Rope".
-category: System
-build-type: Simple
 
+-- This file has been generated from package.yaml by hpack version 0.31.1.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 6489b8ffb937697cdd90b22aee666d473cb87db11ec7470fe21f9a1b8ed26689
+
+name:           unbeliever
+version:        0.10.0.1
+synopsis:       Opinionated Haskell Interoperability
+description:    A library to help build command-line programs, both tools and
+                longer-running daemons. Its @Program@ type provides unified ouptut &
+                logging, command-line option parsing, exception handling, and a place to
+                put top-level application state. There's also an underlying @Rope@ text
+                type built on a finger tree of UTF-8 fragments along with conveniences
+                for pretty printing and colourizing terminal output.
+                .
+                A description of this package, a list of features, and some background
+                to its design is contained in the
+                <https://github.com/oprdyn/unbeliever/blob/master/README.markdown README>
+                on GitHub.
+                .
+                Useful starting points in the documentation are
+                <../core-program/docs/Core-Program-Execute.html Core.Program.Execute> and
+                <../core-text/docs/Core-Text-Rope.html Core.Text.Rope>.
+                .
+                An ancillary purpose of this library is to facilitate interoperability
+                between different package families and ecosystems. Having a single
+                batteries-included package (as was originally the case) made using it
+                easier, but the resulting dependency footprint was considerable and
+                growing. The code is thus now spread across several packages:
+                .
+                * __core-text__
+                * __core-data__
+                * __core-program__
+                .
+                with more forthcoming as we continue to add convenince and
+                interoperability wrappers around streaming, webservers, and database
+                access patterns.
+category:       System
+stability:      experimental
+homepage:       https://github.com/oprdyn/unbeliever#readme
+bug-reports:    https://github.com/oprdyn/unbeliever/issues
+author:         Andrew Cowie <andrew@operationaldynamics.com>
+maintainer:     Andrew Cowie <andrew@operationaldynamics.com>
+copyright:      © 2018-2019 Operational Dynamics Consulting Pty Ltd, and Others
+license:        BSD3
+license-file:   LICENCE
+tested-with:    GHC == 8.6.5
+build-type:     Simple
+
 source-repository head
-    type: git
-    location: https://github.com/oprdyn/unbeliever
+  type: git
+  location: https://github.com/oprdyn/unbeliever
 
+library
+  other-modules:
+      Core.Everything
+  hs-source-dirs:
+      core-program/lib
+  ghc-options: -Wall -Wwarn -fwarn-tabs
+  build-depends:
+      base >=4.11 && <5
+    , core-data >=0.2.0.0
+    , core-program >=0.2.0.0
+    , core-text >=0.2.0.0
+  default-language: Haskell2010
+
 test-suite check
-    type: exitcode-stdio-1.0
-    main-is: TestSuite.hs
-    hs-source-dirs: tests
-    other-modules:
-        CheckArgumentsParsing
-        CheckBytesBehaviour
-        CheckContainerBehaviour
-        CheckJsonWrapper
-        CheckProgramMonad
-        CheckRopeBehaviour
-    default-language: Haskell2010
-    ghc-options: -Wall -Wwarn -fwarn-tabs -threaded
-    build-depends:
-        base >=4.11 && <5,
-        bytestring >=0.10.8.2 && <0.11,
-        core-data ==0.2.*,
-        core-program ==0.2.*,
-        core-text ==0.2.*,
-        fingertree >=0.1.4.2 && <0.2,
-        hspec >=2.6.1 && <2.7,
-        safe-exceptions >=0.1.7.0 && <0.2,
-        text >=1.2.3.1 && <1.3,
-        text-short >=0.1.2 && <0.2
+  type: exitcode-stdio-1.0
+  main-is: TestSuite.hs
+  other-modules:
+      CheckArgumentsParsing
+      CheckBytesBehaviour
+      CheckContainerBehaviour
+      CheckJsonWrapper
+      CheckProgramMonad
+      CheckRopeBehaviour
+  hs-source-dirs:
+      tests
+  ghc-options: -Wall -Wwarn -fwarn-tabs -threaded
+  build-depends:
+      base >=4.11 && <5
+    , bytestring
+    , core-data >=0.2.0.0
+    , core-program >=0.2.0.0
+    , core-text >=0.2.0.0
+    , fingertree
+    , hspec
+    , safe-exceptions
+    , text
+    , text-short
+  default-language: Haskell2010
 
 benchmark performance
-    type: exitcode-stdio-1.0
-    main-is: GeneralPerformance.hs
-    hs-source-dirs: bench
-    default-language: Haskell2010
-    ghc-options: -Wall -Wwarn -fwarn-tabs -threaded
-    build-depends:
-        base >=4.11 && <5,
-        bytestring >=0.10.8.2 && <0.11,
-        core-data ==0.2.*,
-        core-program ==0.2.*,
-        core-text ==0.2.*,
-        gauge >=0.2.4 && <0.3,
-        text >=1.2.3.1 && <1.3
+  type: exitcode-stdio-1.0
+  main-is: GeneralPerformance.hs
+  hs-source-dirs:
+      bench
+  ghc-options: -Wall -Wwarn -fwarn-tabs -threaded
+  build-depends:
+      base >=4.11 && <5
+    , bytestring
+    , core-data >=0.2.0.0
+    , core-program >=0.2.0.0
+    , core-text >=0.2.0.0
+    , gauge
+    , text
+  default-language: Haskell2010
