diff --git a/Source/Arbitrary.hs b/Source/Arbitrary.hs
--- a/Source/Arbitrary.hs
+++ b/Source/Arbitrary.hs
@@ -16,15 +16,10 @@
 import Test.QuickCheck (Arbitrary(..), listOf1, suchThat)
 import Text
 import Time
-import Textual.SepList
 import Data.Time
 import Data.Time.Clock()
 import Data.Time.Calendar()
 import Data.Text (Text)
-
-instance Arbitrary (SepList Char) where
-    arbitrary =
-        foldl1Of folded (<>) ∘  over traversed sepList <$> listOf1 arbitrary
 
 instance Arbitrary Text where
     arbitrary = view packed <$> listOf1 arbitrary
diff --git a/Source/Lawless.hs b/Source/Lawless.hs
--- a/Source/Lawless.hs
+++ b/Source/Lawless.hs
@@ -9,13 +9,14 @@
     module Control.Lens,
     module UNI,
     module Prelude.Unicode,
+    module Control.Applicative.Unicode,
     module Data.Bool,
     module Data.Eq,
     module Data.Ord,
     module Data.Function,
     module Data.Maybe,
     module Data.Either,
-    module Data.Semigroup,
+    module Data.Monoid,
     module Control.Applicative
     ) where
 
@@ -35,14 +36,14 @@
 import Data.Either (Either(..))
 import Control.Applicative
 import Data.Bool hiding (bool)
-import Data.Semigroup
+import Data.Monoid
 
-import Control.Applicative.Unicode as UNI
 import Control.Arrow.Unicode as UNI
 import Control.Monad.Unicode as UNI
+import Control.Applicative.Unicode ((⊛))
 import Data.Bool.Unicode as UNI
 import Data.Eq.Unicode as UNI
-import Data.Foldable.Unicode as UNI
 import Data.Function.Unicode as UNI
+import Data.Monoid.Unicode as UNI
 import Data.Ord.Unicode as UNI
 import Prelude.Unicode ((⋅))
diff --git a/Source/Machine.hs b/Source/Machine.hs
--- a/Source/Machine.hs
+++ b/Source/Machine.hs
@@ -1,6 +1,35 @@
 module Machine (
-    module Data.Machine
-    )
-where
+    module Data.Machine.Concurrent,
+    (⇝),
+    (⇜)
+    ) where
 
-import Data.Machine
+import Lawless hiding ((<~), (~>))
+import Data.Machine.Concurrent
+import Control.Monad
+import Control.Monad.Trans.Control
+
+infixr 9 ⇜
+infixl 9 ⇝
+infixr 7 ↢
+infixl 7 ↣
+infixr 6 ⧻
+infixr 6 ⫴
+
+(⇝) ∷ Monad m ⇒ MachineT m k b → ProcessT m b c → MachineT m k c
+(⇝) = (~>)
+
+(⇜) ∷ Monad m ⇒ ProcessT m b c → MachineT m k b → MachineT m k c
+(⇜) = (<~)
+
+(↣) ∷ MonadBaseControl IO m ⇒ MachineT m k b → ProcessT m b c → MachineT m k c
+(↣) = (>~>)
+
+(↢) ∷ MonadBaseControl IO m ⇒ ProcessT m b c → MachineT m k b → MachineT m k c
+(↢) = (<~<)
+
+(⧻) ∷ ∀ m a b c d. MonadBaseControl IO m ⇒ ProcessT m a b → ProcessT m c d → ProcessT m (Either a c) (Either b d)
+(⧻) = splitSum
+
+(⫴) ∷ ∀ m a b r. MonadBaseControl IO m ⇒ ProcessT m a r -> ProcessT m b r -> ProcessT m (Either a b) r
+(⫴) = mergeSum
diff --git a/Source/Path.hs b/Source/Path.hs
--- a/Source/Path.hs
+++ b/Source/Path.hs
@@ -11,40 +11,33 @@
 -}
 
 module Path (
-    P.toString,
-    P.rootDir,
-    P.currentDir,
-    P.emptyFile,
-    P.splitPath,
-    P.dropExtension,
-    P.dropExtensions,
-    P.dropFileName,
-    P.replaceExtension,
-    P.replaceBaseName,
-    P.replaceDirectory,
-    P.replaceFileName,
     P.addExtension,
     P.combine,
+    P.currentDir,
     P.dropExtension,
     P.dropExtensions,
     P.dropFileName,
-    P.replaceExtension,
+    P.emptyFile,
+    P.mapFileName,
+    P.mapFileNameF,
     P.replaceBaseName,
     P.replaceDirectory,
+    P.replaceExtension,
     P.replaceFileName,
+    P.rootDir,
+    P.splitDirName,
     P.splitExtension,
     P.splitExtensions,
     P.splitFileName,
-    P.splitDirName,
+    P.splitPath,
     P.takeBaseName,
+    P.takeDirName,
     P.takeDirectory,
-    P.takeSuperDirectory,
     P.takeExtension,
     P.takeExtensions,
     P.takeFileName,
-    P.takeDirName,
-    P.mapFileName,
-    P.mapFileNameF,
+    P.takeSuperDirectory,
+    P.toString,
 
     -- * Auxillary Manipulation Functions
     P.equalFilePath,
diff --git a/Source/Set.hs b/Source/Set.hs
--- a/Source/Set.hs
+++ b/Source/Set.hs
@@ -2,9 +2,13 @@
     module Data.Set.Lens,
     module Data.Set.Unicode,
     Set,
-    singleton
+    sing
     ) where
 
+import Control.Lens.Getter
 import Data.Set.Lens
 import Data.Set.Unicode
 import Data.Set (Set, singleton)
+
+sing ∷ Getter a (Set a)
+sing = to singleton
diff --git a/Source/Textual.hs b/Source/Textual.hs
--- a/Source/Textual.hs
+++ b/Source/Textual.hs
@@ -2,11 +2,9 @@
 module Textual
     (
      module Data.Textual,
-     module Text.Printer,
-     module Textual.SepList
+     module Text.Printer
     ) where
 
 
 import Data.Textual
 import Text.Printer hiding ((<>))
-import Textual.SepList
diff --git a/Source/Textual/SepList.hs b/Source/Textual/SepList.hs
deleted file mode 100644
--- a/Source/Textual/SepList.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE DeriveFoldable #-}
-module Textual.SepList
-    (
-     SepList,
-     sepList,
-     slItems
-    ) where
-
-import Lawless
-import Data.Textual
-import Text.Printer (hsep)
-import Data.Binary
-import Data.List.NonEmpty
-import Data.Foldable (Foldable)
-import Data.Binary.Get
-import Control.Monad.Fail
-
-type SepList a = SepList' (NonEmpty a)
-
-sepList ∷ ∀ a. (Ord a, Binary a, Printable a) ⇒ a → SepList a
-sepList a = SepList' $ a :| []
-
--- | A serializable printable separated list.
-data SepList' a where
-  SepList' ∷ ∀ a. (Ord a, Eq a, Binary a, Printable a) ⇒ NonEmpty a → SepList' (NonEmpty a)
-
-deriving instance Foldable SepList'
-deriving instance Eq (SepList a)
-deriving instance Ord (SepList a)
-
-slItems ∷ Lens' (SepList' (NonEmpty a)) (NonEmpty a)
-slItems = lens (\(SepList' i) → i) (\(SepList' _) j → SepList' j)
-
-instance Semigroup (SepList' (NonEmpty a)) where
-  a <> b = a & slItems .~ ((a ^. slItems) <> (b ^. slItems))
-
-instance (Ord a, Binary a, Printable a) ⇒ Binary (SepList' (NonEmpty a)) where
-  put = putList ∘ toList ∘ view slItems
-  get = label "SepList'" $ do
-    (nonEmpty <$> get) >>= \case
-      Nothing → fail "Encountered an empty SepList'"
-      Just l → return ∘ SepList' $ l
-
-instance (Printable a) ⇒ Printable (SepList' (NonEmpty a)) where
-  print = hsep ∘ over traversed print ∘ view slItems
-
-instance (Printable a)⇒ Show (SepList a) where
-  show = toString
diff --git a/Source/Time.hs b/Source/Time.hs
--- a/Source/Time.hs
+++ b/Source/Time.hs
@@ -20,7 +20,6 @@
 
 import qualified Textual as T
 
-
 newtype Time = Time UTCTime deriving (Show, Eq, Ord, ParseTime, FormatTime, Generic)
 makePrisms ''Time
 
diff --git a/Tests/Main.hs b/Tests/Main.hs
--- a/Tests/Main.hs
+++ b/Tests/Main.hs
@@ -4,7 +4,6 @@
 import Test.Framework (defaultMain)
 
 import qualified TestTime as TT
-import qualified TestSepList as TS
 import qualified TestAeson as TJ
 import qualified TestTemporary as TM
 import qualified TestAesonEncoding as TE
@@ -12,7 +11,6 @@
 main :: IO ()
 main = defaultMain [
     TT.properties,
-    TS.properties,
     TJ.properties,
     TM.properties,
     TE.properties]
diff --git a/Tests/TestSepList.hs b/Tests/TestSepList.hs
deleted file mode 100644
--- a/Tests/TestSepList.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-{-# OPTIONS_GHC -Wno-orphans #-}
-
-module TestSepList (properties) where
-
-import Lawless
-import Arbitrary()
-import Textual
-
-import Test.Framework
-import Test.Framework.TH
-import Test.Framework.Providers.QuickCheck2 (testProperty)
-import Test.QuickCheck
-
-import qualified Data.ByteString.Lazy as L
-
-import Data.Binary
-
-prop_Semigroup :: SepList Char -> SepList Char -> Property
-prop_Semigroup (a :: SepList Char) (b :: SepList Char) =
-  (a <> b) ^. slItems === (a ^. slItems) <> (b ^. slItems)
-
-prop_Serialize :: SepList Char -> Property
-prop_Serialize (a :: SepList Char) =
-  let
-    sz = L.toStrict $ encode a
-    de = decode $ L.fromStrict sz
-  in
-    (de ^. slItems) === (a ^. slItems)
-
-properties ∷ Test
-properties = $(testGroupGenerator)
diff --git a/liblawless.cabal b/liblawless.cabal
--- a/liblawless.cabal
+++ b/liblawless.cabal
@@ -1,5 +1,5 @@
 name:                liblawless
-version:             0.17.3
+version:             0.18.0
 synopsis:            Prelude based on protolude for GHC 8 and beyond.
 license:             GPL-3
 license-file:        LICENSE
@@ -27,10 +27,10 @@
 source-repository this
   type:     git
   location:   git@gitlab.com:misandrist/liblawless.git
-  tag: v0.17.2
+  tag: v0.18.0
 
 library
-  ghc-options: -Wall -O2
+  ghc-options: -Wall -Wno-redundant-constraints -O2
   exposed-modules:
                   Aeson
                   Arbitrary
@@ -49,7 +49,6 @@
                   Text
                   Text.IO
                   Textual
-                  Textual.SepList
                   Time
                   Tree
   default-extensions:
@@ -83,6 +82,7 @@
                 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,
                 contravariant              >= 1.4 && < 1.5,
                 data-default               >= 0.7.1.1 && < 0.8,
                 data-textual               >= 0.3.0 && < 0.4,
@@ -91,7 +91,8 @@
                 hjsonschema                >= 1.2.0 && < 1.3,
                 lens                       >= 4.14 && < 4.15,
                 machines                   >= 0.6.1 && < 0.7,
-                managed,
+                managed             >= 1.0.5 && < 1.1,
+                monad-control >= 1.0.1.0 && < 1.1,
                 mtl                        >= 2.2.1 && < 2.3,
                 network                    >= 2.6.3.1 && < 2.7,
                 network-ip                 >= 0.3 && < 0.4,
@@ -123,7 +124,6 @@
   main-is: Main.hs
   other-modules:
                 TestAeson
-                TestSepList
                 TestTemporary
                 TestTime
                 Paths_liblawless
