diff --git a/Source/Arbitrary.hs b/Source/Arbitrary.hs
--- a/Source/Arbitrary.hs
+++ b/Source/Arbitrary.hs
@@ -14,7 +14,6 @@
 
 import Lawless
 import Test.QuickCheck (Arbitrary(..), listOf1, suchThat)
-import Text
 import Time
 import Data.Time
 import Data.Time.Clock()
diff --git a/Source/Environment.hs b/Source/Environment.hs
--- a/Source/Environment.hs
+++ b/Source/Environment.hs
@@ -29,9 +29,6 @@
     )where
 
 import Lawless
-import IO
-import Text
-import Textual
 
 import qualified System.Environment as SE
 
diff --git a/Source/IO.hs b/Source/IO.hs
--- a/Source/IO.hs
+++ b/Source/IO.hs
@@ -10,6 +10,7 @@
 -}
 
 module IO (
+    IO,
     getLine,
     hGetLine,
     putStr,
@@ -58,19 +59,17 @@
 
 import Lawless
 -- import IO.Base
-import Control.Monad.IO.Class
 import qualified System.Path.Directory as D
 import qualified System.Path.IO as PIO
 import qualified Text.IO as TIO
-import Text
 import Textual
+import Printer
 import Path
 import qualified System.Path.PartClass as PC
-import Exception
 import qualified System.IO as SIO
 import System.IO (Handle, stdin, stdout, stderr, SeekMode(..), IOMode(..))
-import Data.Typeable
 import Data.Text.Lazy.Builder (Builder)
+import Exception
 
 default (Text)
 
diff --git a/Source/IO/Base.hs b/Source/IO/Base.hs
--- a/Source/IO/Base.hs
+++ b/Source/IO/Base.hs
@@ -10,8 +10,11 @@
 
 module IO.Base (
     module Control.Monad.Base,
-        module Control.Monad.Trans.Control
+    module Control.Monad.Trans.Control,
+    IO
     ) where
 
 import Control.Monad.Base
 import Control.Monad.Trans.Control
+
+import System.IO (IO)
diff --git a/Source/Lawless.hs b/Source/Lawless.hs
--- a/Source/Lawless.hs
+++ b/Source/Lawless.hs
@@ -1,7 +1,4 @@
 module Lawless (
-    module Applicative,
-    module Base,
-    module Bool,
     module Control.Applicative,
     module Control.Lens,
     module Data.Bool,
@@ -12,26 +9,55 @@
     module Data.Maybe,
     module Data.Monoid,
     module Data.Ord,
-    module Data.String,
+    module Data.Text.Lens,
     module Data.Traversable,
-    module Either,
-    module Functor,
-    module List,
-    module Monad,
+    module Prelude,
+    module Protolude,
+    module Text,
+    module Textual,
     module Unicode
     ) where
 
-import Applicative
-import Base hiding (print, putStr, putStrLn)
-import Bool
-import Either
-import Functor
-import List hiding (sum, product)
-import Monad
-import Control.Lens hiding (strict)
+import Prelude (
+    Integer,
+    Num(..),
+    Bounded(..),
+    Enum(..),
+    Num(..),
+    Integral(..),
+    Real(..),
+    Show(..),
+    fromIntegral)
+
+import Protolude hiding(
+    print,
+    putStr,
+    putStrLn,
+    getLine,
+    hPutStr,
+    hPutStrLn,
+    readFile,
+    writeFile,
+    appendFile,
+    sum,
+    product,
+    show,
+    (<&>),
+    to,
+    from,
+    unsnoc,
+    uncons,
+    (<.>),
+    Strict,
+    atomically,
+    async,
+    bracket,
+    bracket_,
+    try,
+    finally)
+import Control.Lens
 import Data.Eq (Eq(..))
 import Data.Ord (Ord(..))
-import Data.String (IsString(..))
 
 import Data.Function
 import Data.Maybe
@@ -41,5 +67,9 @@
 import Data.Foldable hiding (sum, product)
 import Data.Monoid
 import Data.Traversable
+
+import Text (Text, packed, unpacked, IsText(..), IsString(..), Read(..))
+import Data.Text.Lens
+import Textual (Textual(..), Printable(..))
 
 import Unicode
diff --git a/Source/Path.hs b/Source/Path.hs
--- a/Source/Path.hs
+++ b/Source/Path.hs
@@ -102,7 +102,6 @@
     ) where
 
 import Lawless hiding ((<.>))
-import Text
 import System.Path (
     AbsFile,
     RelFile,
diff --git a/Source/Printer.hs b/Source/Printer.hs
new file mode 100644
--- /dev/null
+++ b/Source/Printer.hs
@@ -0,0 +1,11 @@
+module Printer
+    (
+     module Text.Printer,
+     module Text.Printer.Integral,
+     module Text.Printer.Fractional
+    ) where
+
+
+import Text.Printer
+import Text.Printer.Integral
+import Text.Printer.Fractional
diff --git a/Source/Random.hs b/Source/Random.hs
new file mode 100644
--- /dev/null
+++ b/Source/Random.hs
@@ -0,0 +1,25 @@
+{-|
+Module:             Random
+Description:        Lifted random value functions using the system random number generator.
+Copyright:          © 2017 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <evan@theunixman.com>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+module Random (randomR, random) where
+
+import Unicode
+import System.IO (IO)
+import IO.Base
+import qualified System.Random as R
+
+-- | Generate an endless range of random numbers between @[a, a]@
+-- inclusive. (This is 'R.randomRIO' lifted.)
+randomR ∷ (R.Random a, MonadBase IO m) ⇒ (a, a) → m a
+randomR = liftBase ∘ R.randomRIO
+
+-- | Generate an endless stream of values. (This is 'R.randomIO' lifted.)
+random ∷ (R.Random a, MonadBase IO m) ⇒ m a
+random = liftBase R.randomIO
diff --git a/Source/STM/Base.hs b/Source/STM/Base.hs
--- a/Source/STM/Base.hs
+++ b/Source/STM/Base.hs
@@ -13,7 +13,6 @@
     module Control.Concurrent.STM.TVar,
     module Control.Concurrent.STM.TMVar,
     module Control.Concurrent.STM.TBChan,
-    IO,
     STM,
     atomically,
     newTVarIO,
@@ -35,7 +34,6 @@
 import Control.Concurrent.STM.TBChan (
     TBChan, readTBChan, writeTBChan, isEmptyTBChan
     )
-import Data.Word
 
 -- | 'STM.atomically' lifted to 'MonadBase' 'IO'.
 atomically :: MonadBase IO m => STM α -> m α
diff --git a/Source/STM/Hub.hs b/Source/STM/Hub.hs
--- a/Source/STM/Hub.hs
+++ b/Source/STM/Hub.hs
@@ -23,7 +23,6 @@
 
 import Lawless
 import STM.Base
-import Data.Word
 
 -- * The 'Hub'
 
diff --git a/Source/Text.hs b/Source/Text.hs
--- a/Source/Text.hs
+++ b/Source/Text.hs
@@ -1,9 +1,11 @@
 module Text (
      module Data.Text,
      module Data.Text.Lens,
-     module Data.Text.ICU.Normalized.NFC
+     module Data.String,
+     module Text.Read
      ) where
 
-import Data.Text.ICU.Normalized.NFC
 import Data.Text (Text, null, empty)
 import Data.Text.Lens
+import Data.String (IsString(..))
+import Text.Read (Read(..))
diff --git a/Source/Text/IO.hs b/Source/Text/IO.hs
--- a/Source/Text/IO.hs
+++ b/Source/Text/IO.hs
@@ -27,7 +27,6 @@
 import qualified Data.Text.IO as TIO
 import Data.Text (Text)
 import System.Path
-import Control.Monad.IO.Class
 import System.Path.IO (Handle, hIsEOF)
 import Machine
 
diff --git a/Source/Textual.hs b/Source/Textual.hs
--- a/Source/Textual.hs
+++ b/Source/Textual.hs
@@ -1,10 +1,11 @@
-{-# LANGUAGE DeriveFoldable #-}
 module Textual
     (
      module Data.Textual,
-     module Text.Printer
+     module Data.Textual.Integral,
+     module Data.Textual.Fractional
     ) where
 
 
 import Data.Textual
-import Text.Printer hiding ((<>))
+import Data.Textual.Integral
+import Data.Textual.Fractional
diff --git a/Source/Time.hs b/Source/Time.hs
--- a/Source/Time.hs
+++ b/Source/Time.hs
@@ -21,8 +21,7 @@
 import Data.Time.Format
 import Generics
 import IO (MonadIO, liftIO)
-import Lawless
-import Text
+import Lawless hiding (put, get)
 import qualified Textual as T
 import qualified Parser as P
 import Aeson
diff --git a/Tests/TestTextMachine.hs b/Tests/TestTextMachine.hs
--- a/Tests/TestTextMachine.hs
+++ b/Tests/TestTextMachine.hs
@@ -14,7 +14,6 @@
 module TestTextMachine where
 
 import Lawless
-import Text hiding (text)
 
 import Arbitrary()
 import Test.Framework
diff --git a/liblawless.cabal b/liblawless.cabal
--- a/liblawless.cabal
+++ b/liblawless.cabal
@@ -1,11 +1,11 @@
 name:                liblawless
-version:             0.23.1
+version:             0.26.0
 synopsis:            Prelude based on protolude for GHC 8 and beyond.
 license:             GPL-3
 license-file:        LICENSE
 author:              Evan Cofsky
 maintainer:          evan@theunixman.com
-copyright:           © 2016 Evan Cofsky
+copyright:           © 2017 Evan Cofsky
 homepage:            https://gitlab.com/theunixman/liblawless
 category:            Prelude
 build-type:          Simple
@@ -29,10 +29,10 @@
 source-repository this
   type:     git
   location:   https://gitlab.com/theunixman/liblawless.git
-  tag: v0.23.1
+  tag: v0.26.0
 
 library
-  ghc-options: -Wall -Wno-redundant-constraints -Wno-type-defaults -O2
+  ghc-options: -Wall -Wno-redundant-constraints -Wno-type-defaults
   exposed-modules:
                   Aeson
                   Arbitrary
@@ -48,7 +48,9 @@
                   Map
                   Networking
                   Parser
+                  Printer
                   Path
+                  Random
                   Set
                   STM
                   STM.Base
@@ -88,21 +90,22 @@
                      TypeSynonymInstances
   build-depends:
                 aeson                      >= 0.11.2 && < 0.12,
-                base                       >=4.9 && <4.10,
+                base                       >= 4.9 && < 5,
                 base-unicode-symbols       >= 0.2.2 && < 0.3,
                 binary                     >= 0.8.3 && < 0.9,
                 boomerang                  >= 1.4.5.2 && < 1.5,
                 bytestring                 >= 0.10.8 && < 0.11,
                 containers                 >= 0.5.7 && < 0.6,
                 containers-unicode-symbols >= 0.3.1 && < 0.4,
-                concurrent-machines >= 0.2.3.3 && < 0.3,
+                lawless-concurrent-machines >= 0.2.3.3 && < 0.5,
                 contravariant              >= 1.4 && < 1.5,
                 data-textual               >= 0.3.0 && < 0.4,
                 dns                        >= 2.0.8 && < 2.1,
                 exceptions                 >= 0.8.3 && < 0.9,
-                hjsonschema                >= 1.6.2 && < 1.7,
+                hjsonschema                >= 1.6.2 && < 1.9,
                 lens                       >= 4.14 && < 4.16,
                 lifted-async  >= 0.9.1.1 && < 0.10,
+                lifted-base  >= 0.2.3 && < 0.3,
                 machines                   >= 0.6.1 && < 0.7,
                 managed             >= 1.0.5 && < 1.1,
                 monad-control >= 1.0.1.0 && < 1.1,
@@ -111,7 +114,7 @@
                 network-ip                 >= 0.3 && < 0.4,
                 parsers                    >= 0.12.4 && < 0.13,
                 pathtype                   >= 0.8 && < 0.9,
-                protolude                  >= 0.1.10 && < 0.2,
+                protolude                  >= 0.1.10 && < 0.4,
                 random                     >= 1.1 && < 1.2,
                 semigroups                 >= 0.18.2 && < 0.19,
                 stm                        >= 2.4.4 && < 2.5,
@@ -120,10 +123,8 @@
                 QuickCheck                 >= 2.8 && < 2.10,
                 temporary                  >= 1.2.0 && < 1.3,
                 text                       >= 1.2.2 && < 1.3,
-                text-icu                   >= 0.7.0 && < 0.8,
-                text-icu-normalized        >= 0.4.0 && < 0.5,
                 text-printer               >= 0.4 && < 0.5,
-                time                       >= 1.6.0 && < 1.7,
+                time                       >= 1.6.0 && < 1.9,
                 transformers               >= 0.5.2 && < 0.6,
                 transformers-base >= 0.4.4 && < 0.5,
                 zippers                    >= 0.2.2 && < 0.3
@@ -146,14 +147,17 @@
   ghc-options: -threaded
   main-is: Main.hs
   other-modules:
+                Line
                 TestAeson
+                TestAesonEncoding
                 TestTemporary
+                TestTextMachine
                 TestTime
                 Paths_liblawless
   build-depends:
                 QuickCheck                 >= 2.8 && < 2.10,
                 aeson < 1.0,
-                base >= 4.9 && < 4.10,
+                base >= 4.9 && < 5,
                 binary >= 0.7.5.0,
                 bytestring,
                 exceptions >= 0.8.3,
