diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
--- a/CHANGELOG
+++ /dev/null
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,22 @@
+2016-12-16  Evan Cofsky  <evan@theunixman.com>
+
+	* Examples/ZFS/zpools.yaml: Rename from zpool.yaml.
+
+	* liblawless.cabal: Uncomment ZFS example build.
+
+	* Source/Yaml.hs: Import and export Generics here, too.
+
+	* Examples/ZFS: Create Types, use optics, add Main.hs.
+
+	* Source/Aeson.hs: Rename molude to lawless.
+
+	* Tests/TestAeson.hs: Rename molude to lawless.
+
+	* liblawless.cabal (0.14.0): Adding Networking library, clearing
+	up NFC Text, focusing more on examples and tests.
+
+	* Source/Text.hs: Clearer notion of NFC optics vs regular Lens
+	optics.
+
+	* Source/Networking.hs: Created this file to start composing
+	various network libraries together.
diff --git a/Examples/ZFS/Main.hs b/Examples/ZFS/Main.hs
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/Main.hs
@@ -0,0 +1,16 @@
+{-|
+Module:             Main
+Description:        Demonstration of Boomerang and Yaml for parsing.
+Copyright:          © 2016 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+module Main where
+
+import Lawless
+import Types
+
+main = putStrLn "Hello"
diff --git a/Examples/ZFS/Types.hs b/Examples/ZFS/Types.hs
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/Types.hs
@@ -0,0 +1,19 @@
+{-|
+Module:             Types
+Description:        ZFS and ZPool types
+Copyright:          © 2016 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+module Types (
+    module Types.ZPools,
+    module Types.ZPool,
+    module Types.ZName
+    ) where
+
+import Types.ZPools
+import Types.ZPool
+import Types.ZName
diff --git a/Examples/ZFS/Types/ZName.hs b/Examples/ZFS/Types/ZName.hs
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/Types/ZName.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-|
+Module:             Types.ZName
+Description:        Builder for a ZPool name.
+Copyright:          © 2016 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+module Types.ZName where
+
+import Lawless
+import Yaml
+import Text
+
+data ZNDateTime = ISO8601 deriving (Show, Eq, Ord, Generic)
+makePrisms ''ZNDateTime
+
+instance FromJSON ZNDateTime where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZNDateTime where
+    toEncoding = lawlessToJSONEncoding
+
+data ZNComponent =
+    String Text |
+    Datetime ZNDateTime
+    deriving (Eq, Show, Ord, Generic)
+makePrisms ''ZNComponent
+
+instance FromJSON ZNComponent where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZNComponent where
+    toEncoding = lawlessToJSONEncoding
+
+newtype ZNComponents = ZNComponents [ZNComponent]
+    deriving (Eq, Show, Ord, Monoid, Generic)
+makePrisms ''ZNComponents
+
+instance FromJSON ZNComponents where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZNComponents where
+    toEncoding = lawlessToJSONEncoding
+
+data ZName = ZName {
+    _znSeparator ∷ Char,
+    _znComponents ∷ ZNComponents
+    } deriving (Eq, Show, Ord, Generic)
+makePrisms ''ZName
+
+instance FromJSON ZName where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZName where
+    toEncoding = lawlessToJSONEncoding
diff --git a/Examples/ZFS/Types/ZPool.hs b/Examples/ZFS/Types/ZPool.hs
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/Types/ZPool.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-|
+Module:             Types.ZPool
+Description:        Description of a single ZPool
+Copyright:          © 2016 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+module Types.ZPool where
+
+import Lawless
+import Yaml
+import Types.ZName
+
+data ZPool = ZPool {
+    _zpName ∷ ZName
+    } deriving (Eq, Show, Ord, Generic)
+makePrisms ''ZPool
+
+instance FromJSON ZPool where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZPool where
+    toEncoding = lawlessToJSONEncoding
diff --git a/Examples/ZFS/Types/ZPools.hs b/Examples/ZFS/Types/ZPools.hs
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/Types/ZPools.hs
@@ -0,0 +1,28 @@
+{-|
+Module:             Types.ZPools
+Description:        Representation of a collection of ZPools
+Copyright:          © 2016 All rights reserved.
+License:            GPL-3
+Maintainer:         Evan Cofsky <>
+Stability:          experimental
+Portability:        POSIX
+-}
+
+{-# LANGUAGE TemplateHaskell #-}
+
+module Types.ZPools where
+
+import Lawless
+import Yaml
+import Set
+import Types.ZPool
+
+newtype ZPools = ZPools (Set ZPool)
+    deriving (Eq, Show, Generic, Monoid)
+makePrisms ''ZPools
+
+instance FromJSON ZPools where
+    parseJSON = lawlessParseJSON
+
+instance ToJSON ZPools where
+    toEncoding = lawlessToJSONEncoding
diff --git a/Examples/ZFS/zpools.yaml b/Examples/ZFS/zpools.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/ZFS/zpools.yaml
@@ -0,0 +1,18 @@
+zpools:
+  - name:
+      separator: _
+      components:
+        - string: zpool
+        - datetime: iso8601
+    options:
+      - atime: false
+      - compression: lz4
+      - normalization: formD
+      - mountpount: null
+      - acltype: posixacl
+      - xattr: sa
+      - checksum: sha256
+      - devices: false
+      - setuid: false
+      - exec: off
+      - redundant_metadata: all
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
-# Molude, a Prelude Replacement
+# Lawless, a Prelude Replacement
 
-Welcome to [Molude, a Prelude Replacement][Molude]. It focuses on a few core ideas:
+Welcome to [Lawless, a Prelude Replacement][Lawless]. It focuses on a
+few core ideas:
 
 - Support for GHC 8 and later
 - Yaml configuration
@@ -9,11 +10,19 @@
 - Lenses and default Aeson encodings for generated datastructures.
 - Easy Generic and Typeable deriving.
 
-It's based on [protolude][protolude], [lenses][lenses], and tries to
-extend on them as much as possible.
+It's based on [protolude][protolude], [lenses][lenses],
+and [machines][machines], and tries to extend on them as much as
+possible.
 
-[Molude]: https://gitlab.com/misandrist/libmolude
+[Lawless]: https://gitlab.com/misandrist/liblawless
 
 [protolude]: https://github.com/sdiehl/protolude
 
 [lenses]: https://hackage.haskell.org/package/lens
+
+[machines]: https://hackage.haskell.org/package/machines
+
+# Why Lawless?
+
+1. It was started essentially by a rogue spinoff Haskell community
+   that rapidly expanded into its own organization.
diff --git a/Source/Aeson.hs b/Source/Aeson.hs
--- a/Source/Aeson.hs
+++ b/Source/Aeson.hs
@@ -2,9 +2,9 @@
     module Data.Aeson,
     module Data.Aeson.Types,
     module Data.JsonSchema.Draft4,
-    moludeJSONOptions,
-    moludeToJSONEncoding,
-    moludeParseJSON
+    lawlessJSONOptions,
+    lawlessToJSONEncoding,
+    lawlessParseJSON
     ) where
 
 import Lawless
@@ -21,8 +21,8 @@
     in
         toListOf (droppingWhile p folded)
 
-moludeJSONOptions ∷ Options
-moludeJSONOptions = defaultOptions {
+lawlessJSONOptions ∷ Options
+lawlessJSONOptions = defaultOptions {
     fieldLabelModifier = camelTo2 '_' ∘ dropLensPrefix,
     constructorTagModifier = camelTo2 '_' ∘ dropLensPrefix,
     allNullaryToStringTag = False,
@@ -30,8 +30,8 @@
     unwrapUnaryRecords = True,
     sumEncoding = ObjectWithSingleField}
 
-moludeToJSONEncoding ∷ ∀ a. (GToEncoding (Rep a), Generic a) ⇒ a → Encoding
-moludeToJSONEncoding = genericToEncoding moludeJSONOptions
+lawlessToJSONEncoding ∷ ∀ a. (GToEncoding (Rep a), Generic a) ⇒ a → Encoding
+lawlessToJSONEncoding = genericToEncoding lawlessJSONOptions
 
-moludeParseJSON ∷ ∀ a. (GFromJSON (Rep a), Generic a) ⇒ Value → Parser a
-moludeParseJSON = genericParseJSON moludeJSONOptions
+lawlessParseJSON ∷ ∀ a. (GFromJSON (Rep a), Generic a) ⇒ Value → Parser a
+lawlessParseJSON = genericParseJSON lawlessJSONOptions
diff --git a/Source/Boomerang.hs b/Source/Boomerang.hs
new file mode 100644
--- /dev/null
+++ b/Source/Boomerang.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# Language TypeOperators, PolyKinds, MultiWayIf #-}
+
+module Boomerang (
+    module Text.Boomerang,
+    module Text.Boomerang.TH,
+    module Text.Boomerang.Texts,
+    module Control.Category,
+    TextsBoomerang,
+    (∘)
+    ) where
+
+import Text (Text)
+import Text.Boomerang
+import Text.Boomerang.TH
+import Text.Boomerang.Texts
+import Control.Category ((.), id, Category)
+
+type TextsBoomerang a b = Boomerang TextsError [Text] a b
+
+(∘) ∷ ∀ (b ∷ k) (c ∷ k) (a ∷ k) (cat ∷ k → k → *).
+    Category cat ⇒ cat b c → cat a b → cat a c
+(∘) = (.)
+infix 9 ∘
diff --git a/Source/Lawless.hs b/Source/Lawless.hs
--- a/Source/Lawless.hs
+++ b/Source/Lawless.hs
@@ -26,7 +26,7 @@
 import Functor
 import List
 import Monad
-import Control.Lens
+import Control.Lens hiding (strict)
 import Data.Eq (Eq(..))
 import Data.Ord (Ord(..))
 
diff --git a/Source/Map.hs b/Source/Map.hs
new file mode 100644
--- /dev/null
+++ b/Source/Map.hs
@@ -0,0 +1,10 @@
+module Map (
+    module Data.Map.Lens,
+    module Data.Map.Unicode,
+    Map,
+    singleton
+    ) where
+
+import Data.Map.Lens
+import Data.Map.Unicode
+import Data.Map (Map, singleton)
diff --git a/Source/Networking.hs b/Source/Networking.hs
new file mode 100644
--- /dev/null
+++ b/Source/Networking.hs
@@ -0,0 +1,14 @@
+-- | Network type library
+
+module Networking (
+    module Network.IP.Addr,
+    module Network.Socket,
+    module Network.Socket.ByteString,
+    module Network.DNS
+    ) where
+
+import Lawless
+import Network.IP.Addr
+import Network.Socket hiding (send, sendTo, recv, recvFrom)
+import Network.Socket.ByteString
+import Network.DNS
diff --git a/Source/Paths.hs b/Source/Paths.hs
deleted file mode 100644
--- a/Source/Paths.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# Language NoMonomorphismRestriction #-}
-
-module Paths
-    (
-      module Path,
-      module Path.IO,
-      module System.FilePath,
-      AbsDir,
-      AbsFile,
-      RelDir,
-      RelFile,
-      filePath
-    ) where
-
-
-import Control.Lens (Getter, to)
-import Path
-import Path.IO
-import System.FilePath hiding ((</>), makeRelative)
-
-type AbsDir = Path Abs Dir
-type AbsFile = Path Abs File
-type RelDir = Path Rel Dir
-type RelFile = Path Rel File
-
-filePath ∷ Getter (Path b t) FilePath
-filePath = to (toFilePath)
diff --git a/Source/Temporary.hs b/Source/Temporary.hs
--- a/Source/Temporary.hs
+++ b/Source/Temporary.hs
@@ -12,16 +12,16 @@
 
 import Lawless hiding ((<.>))
 import qualified System.IO.Temp as T
-import Paths
 import Control.Monad.IO.Class
 import System.IO
 import Control.Monad.Catch
+import System.FilePath
 
 -- | Run a function with a temporary file handle named after the
 -- passed name. Ensures the handle is unbuffered and in binary mode.
-withTempHandle ∷ (MonadIO m, MonadMask m) ⇒ RelFile → (Handle → m a) → m a
+withTempHandle ∷ (MonadIO m, MonadMask m) ⇒ FilePath → (Handle → m a) → m a
 withTempHandle name f =
-    T.withSystemTempFile (name ^. filePath <> "XXXXXXXXXXXXXXXX")
+    T.withSystemTempFile (name <> "XXXXXXXXXXXXXXXX")
     $ \_ h →
           -- Make sure the handle is strictly binary with no buffering.
           liftIO (hSetBuffering h NoBuffering) >>
diff --git a/Source/Text.hs b/Source/Text.hs
--- a/Source/Text.hs
+++ b/Source/Text.hs
@@ -1,10 +1,23 @@
+{-# Language NoMonomorphismRestriction #-}
+
 module Text
     (
-     module Data.Text.ICU.Normalized.NFC,
      module Data.Text,
-     module Data.Text.Lens
+     module Data.Text.Lens,
+     nfcText,
+     nfcUtf8ByteString,
+     nfcUtf8
     ) where
 
-import Data.Text.ICU.Normalized.NFC
-import Data.Text (Text)
+import qualified Data.Text.ICU.Normalized.NFC as NFC
+import Data.Text (Text, null, empty)
 import Data.Text.Lens
+
+-- | Converts between 'Text' and 'NFCText'
+nfcText = NFC.strict
+
+-- | Converts between a UTF-8 ByteString and an NFCText
+nfcUtf8ByteString = NFC.utf8ByteString
+
+-- | Converts between a String and an NFCText
+nfcUtf8 = NFC.utf8
diff --git a/Source/Yaml.hs b/Source/Yaml.hs
--- a/Source/Yaml.hs
+++ b/Source/Yaml.hs
@@ -2,8 +2,10 @@
 
 module Yaml (
     module Data.Yaml,
-    module Aeson
+    module Aeson,
+    module Generics
     ) where
 
+import Generics
 import Data.Yaml
 import Aeson hiding (decode, encode)
diff --git a/TODO.org b/TODO.org
new file mode 100644
--- /dev/null
+++ b/TODO.org
@@ -0,0 +1,10 @@
+* What's Next
+This file describes the current and proposed changes to liblawless
+over the next few release cycles.
+* 0.14
+** Networking Support
+- Adaptors for [[http://hackage.haskell.org/package/network-ip][network-ip]], [[http://hackage.haskell.org/package/dns][DNS]], [[http://hackage.haskell.org/package/network-ip][network]].
+** Improved Text Support
+- Avoid collisions with [[http://hackage.haskell.org/package/lens-4.15.1/docs/Data-Text-Lens.html][Data.Text.Lens]]
+** Boomerang
+- Use [[http://hackage.haskell.org/package/boomerang][Boomerang]] as the primary parsing library.
diff --git a/Tests/TestAeson.hs b/Tests/TestAeson.hs
--- a/Tests/TestAeson.hs
+++ b/Tests/TestAeson.hs
@@ -28,9 +28,9 @@
     } deriving (Show, Eq, Ord, Generic)
 makeLenses ''TestData
 instance ToJSON TestData where
-    toEncoding = moludeToJSONEncoding
+    toEncoding = lawlessToJSONEncoding
 instance FromJSON TestData where
-    parseJSON = moludeParseJSON
+    parseJSON = lawlessParseJSON
 
 instance Arbitrary Text where
     arbitrary = pack <$> arbitrary
@@ -54,9 +54,9 @@
         _clRegion ∷ Text
     } deriving (Show, Eq, Ord, Generic)
 instance ToJSON Cluster where
-    toEncoding = moludeToJSONEncoding
+    toEncoding = lawlessToJSONEncoding
 instance FromJSON Cluster where
-    parseJSON = moludeParseJSON
+    parseJSON = lawlessParseJSON
 
 data Schema1 = Schema1
     {
@@ -64,9 +64,9 @@
         _sc1Cluster ∷ Cluster
     } deriving (Show, Eq, Ord, Generic)
 instance ToJSON Schema1 where
-    toEncoding = moludeToJSONEncoding
+    toEncoding = lawlessToJSONEncoding
 instance FromJSON Schema1 where
-    parseJSON = moludeParseJSON
+    parseJSON = lawlessParseJSON
 
 properties ∷ Test
 properties = $(testGroupGenerator)
diff --git a/Tests/TestTemporary.hs b/Tests/TestTemporary.hs
--- a/Tests/TestTemporary.hs
+++ b/Tests/TestTemporary.hs
@@ -19,7 +19,6 @@
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.QuickCheck
 import Text
-import Paths
 import Temporary
 import qualified Data.ByteString as B
 import System.IO hiding (utf8)
@@ -31,7 +30,7 @@
 
 prop_CheckBuffering (line ∷ Text) = monadicIO $ do
     let l = encodeUtf8 line
-    m ← run $ withTempHandle $(mkRelFile "testTemp") $ \h → do
+    m ← run $ withTempHandle "testTemp" $ \h → do
         B.hPut h l
         hSeek h AbsoluteSeek 0
         B.hGetContents h
diff --git a/liblawless.cabal b/liblawless.cabal
--- a/liblawless.cabal
+++ b/liblawless.cabal
@@ -1,5 +1,5 @@
 name:                liblawless
-version:             0.13.3
+version:             0.14.0.1
 synopsis:            Prelude based on protolude for GHC 8 and beyond.
 license:             GPL-3
 license-file:        LICENSE
@@ -9,96 +9,104 @@
 category:            Prelude
 build-type:          Simple
 extra-source-files:
-                   CHANGELOG
+                   ChangeLog
                    README.md
+                   TODO.org
                    Tests/*.hs
 cabal-version:       >=1.24
+data-files:
+           Examples/ZFS/zpools.yaml
 description:
     A Prelude relpacement for GHC 8 with a focus on building
     applications with Lenses, Machines, and Applicatives.
 
 source-repository head
   type:     git
-  location: https://gitlab.com/misandrist/liblawless.git
+  location: git+ssh://lambdanow.us/projects/haskellnow/liblawless.git
 
-source-repository this
-  type:     git
-  location: https://gitlab.com/misandrist/liblawless.git
-  tag: v0.13.3
+-- source-repository this
+--   type:     git
+--   location:   location: git+ssh://lambdanow.us/projects/haskellnow/liblawless.git
+--   tag: v0.13.1
 
 library
   exposed-modules:
-    Aeson
-    Exception
-    Generics
-    Machine
-    Parser
-    Paths
-    Lawless
-    Set
-    Temporary
-    Text
-    Textual
-    Textual.SepList
-    Time
-    Tree
-    Yaml
+                  Aeson
+                  Boomerang
+                  Exception
+                  Generics
+                  Lawless
+                  Machine
+                  Map
+                  Networking
+                  Parser
+                  Set
+                  Temporary
+                  Text
+                  Textual
+                  Textual.SepList
+                  Time
+                  Tree
+                  Yaml
   default-extensions:
-    NoImplicitPrelude
-    UnicodeSyntax
-    LambdaCase
-    ConstraintKinds
-    DefaultSignatures
-    FlexibleContexts
-    FlexibleInstances
-    FunctionalDependencies
-    GADTs
-    DeriveGeneric
-    DeriveDataTypeable
-    GeneralizedNewtypeDeriving
-    KindSignatures
-    MultiParamTypeClasses
-    OverloadedStrings
-    PartialTypeSignatures
-    RankNTypes
-    ScopedTypeVariables
-    StandaloneDeriving
-    TypeFamilies
-    TypeSynonymInstances
+                     NoImplicitPrelude
+                     UnicodeSyntax
+                     LambdaCase
+                     ConstraintKinds
+                     DefaultSignatures
+                     FlexibleContexts
+                     FlexibleInstances
+                     FunctionalDependencies
+                     GADTs
+                     DeriveGeneric
+                     DeriveDataTypeable
+                     GeneralizedNewtypeDeriving
+                     KindSignatures
+                     MultiParamTypeClasses
+                     OverloadedStrings
+                     PartialTypeSignatures
+                     RankNTypes
+                     ScopedTypeVariables
+                     StandaloneDeriving
+                     TypeFamilies
+                     TypeSynonymInstances
   build-depends:
-    base >=4.9 && <4.10,
-    aeson                      >= 0.11.2 && < 0.12,
-    bytestring                 >= 0.10.8 && < 0.11,
-    containers                 >= 0.5.7 && < 0.6,
-    binary                     >= 0.8.3 && < 0.9,
-    text                       >= 1.2.2 && < 1.3,
-    transformers               >= 0.5.2 && < 0.6,
-    mtl                        >= 2.2.1 && < 2.3,
-    time                       >= 1.6.0 && < 1.7,
-    base-unicode-symbols       >= 0.2.2 && < 0.3,
-    stm                        >= 2.4.4 && < 2.5,
-    machines                   >= 0.6.1 && < 0.7,
-    contravariant              >= 1.4 && < 1.5,
-    semigroups                 >= 0.18.2 && < 0.19,
-    exceptions                 >= 0.8.3 && < 0.9,
-    containers-unicode-symbols >= 0.3.1 && < 0.4,
-    data-textual               >= 0.3.0 && < 0.4,
-    parsers                    >= 0.12.4 && < 0.13,
-    text-printer               >= 0.4 && < 0.5,
-    directory                  >= 1.2.6 && < 1.3,
-    filepath                   >= 1.4.1 && < 1.5,
-    hjsonschema                >= 1.2.0 && < 1.3,
-    random                     >= 1.1 && < 1.2,
-    lens                       >= 4.14 && < 4.15,
-    path                       >= 0.5.9 && < 0.6,
-    path-io                    >= 1.2.0 && < 1.3,
-    temporary                  >= 1.2.0 && < 1.3,
-    protolude                  >= 0.1.10 && < 0.2,
-    stm-containers             >= 0.2.15 && < 0.3,
-    text-icu                   >= 0.7.0 && < 0.8,
-    text-icu-normalized        >= 0.1.6 && < 0.2,
-    yaml                       >= 0.8.20 && < 0.9,
-    zippers                    >= 0.2.2 && < 0.3
+                aeson                      >= 0.11.2 && < 0.12,
+                base >=4.9 && <4.10,
+                base-unicode-symbols       >= 0.2.2 && < 0.3,
+                binary                     >= 0.8.3 && < 0.9,
+                boomerang,
+                bytestring                 >= 0.10.8 && < 0.11,
+                containers                 >= 0.5.7 && < 0.6,
+                containers-unicode-symbols >= 0.3.1 && < 0.4,
+                contravariant              >= 1.4 && < 1.5,
+                data-default               >= 0.7.1.1 && < 0.8,
+                data-textual               >= 0.3.0 && < 0.4,
+                directory                  >= 1.2.6 && < 1.3,
+                dns                        >= 2.0.10 && < 2.1,
+                exceptions                 >= 0.8.3 && < 0.9,
+                filepath                   >= 1.4.1 && < 1.5,
+                hjsonschema                >= 1.2.0 && < 1.3,
+                lens                       >= 4.14 && < 4.15,
+                machines                   >= 0.6.1 && < 0.7,
+                mtl                        >= 2.2.1 && < 2.3,
+                network >= 2.6.3.1,
+                network-ip                 >= 0.3 && < 0.4,
+                parsers                    >= 0.12.4 && < 0.13,
+                protolude                  >= 0.1.10 && < 0.2,
+                random                     >= 1.1 && < 1.2,
+                semigroups                 >= 0.18.2 && < 0.19,
+                stm                        >= 2.4.4 && < 2.5,
+                stm-containers             >= 0.2.15 && < 0.3,
+                temporary                  >= 1.2.0 && < 1.3,
+                text                       >= 1.2.2 && < 1.3,
+                text-icu                   >= 0.7.0 && < 0.8,
+                text-icu-normalized        >= 0.1.6 && < 0.2,
+                text-printer               >= 0.4 && < 0.5,
+                time                       >= 1.6.0 && < 1.7,
+                transformers               >= 0.5.2 && < 0.6,
+                yaml                       >= 0.8.20 && < 0.9,
+                zippers                    >= 0.2.2 && < 0.3
   hs-source-dirs:      Source
   default-language:    Haskell2010
 
@@ -107,40 +115,82 @@
   type: exitcode-stdio-1.0
   hs-source-dirs: Tests
   main-is: Main.hs
+  other-modules:
+                TestAeson
+                TestSepList
+                TestTemporary
+                TestTime
+                Paths_liblawless
   build-depends:
-    QuickCheck,
-    base >= 4.9 && < 4.10,
-    binary >= 0.7.5.0,
-    bytestring,
-    exceptions >= 0.8.3,
-    filepath >= 1.4.0.0,
-    liblawless,
-    semigroups >= 0.18.2,
-    temporary >= 1.2.0.4,
-    test-framework,
-    test-framework-quickcheck2,
-    test-framework-th,
-    text,
-    time,
-    transformers >= 0.4.2.0
+                QuickCheck,
+                base >= 4.9 && < 4.10,
+                binary >= 0.7.5.0,
+                dns >= 2.0.10 && < 2.1,
+                bytestring,
+                exceptions >= 0.8.3,
+                filepath >= 1.4.0.0,
+                liblawless,
+                network >= 2.6.3.1,
+                semigroups >= 0.18.2,
+                temporary >= 1.2.0.4,
+                test-framework,
+                test-framework-quickcheck2,
+                test-framework-th,
+                text,
+                time,
+                transformers >= 0.4.2.0
   default-extensions:
-    NoImplicitPrelude
-    UnicodeSyntax
-    LambdaCase
-    ConstraintKinds
-    DefaultSignatures
-    FlexibleContexts
-    FlexibleInstances
-    FunctionalDependencies
-    GADTs
-    DeriveGeneric
-    DeriveDataTypeable
-    GeneralizedNewtypeDeriving
-    KindSignatures
-    MultiParamTypeClasses
-    OverloadedStrings
-    PartialTypeSignatures
-    RankNTypes
-    ScopedTypeVariables
-    TypeFamilies
-    TypeSynonymInstances
+                     NoImplicitPrelude
+                     UnicodeSyntax
+                     LambdaCase
+                     ConstraintKinds
+                     DefaultSignatures
+                     FlexibleContexts
+                     FlexibleInstances
+                     FunctionalDependencies
+                     GADTs
+                     DeriveGeneric
+                     DeriveDataTypeable
+                     GeneralizedNewtypeDeriving
+                     KindSignatures
+                     MultiParamTypeClasses
+                     OverloadedStrings
+                     PartialTypeSignatures
+                     RankNTypes
+                     ScopedTypeVariables
+                     TypeFamilies
+                     TypeSynonymInstances
+
+executable ZFS
+  main-is: Main.hs
+  other-modules:
+                Types
+                Types.ZPools
+                Types.ZPool
+                Types.ZName
+  hs-source-dirs:
+                 Examples/ZFS
+  build-depends:
+                 liblawless
+  default-language: Haskell2010
+  default-extensions:
+                     NoImplicitPrelude
+                     UnicodeSyntax
+                     LambdaCase
+                     ConstraintKinds
+                     DefaultSignatures
+                     FlexibleContexts
+                     FlexibleInstances
+                     FunctionalDependencies
+                     GADTs
+                     DeriveGeneric
+                     DeriveDataTypeable
+                     GeneralizedNewtypeDeriving
+                     KindSignatures
+                     MultiParamTypeClasses
+                     OverloadedStrings
+                     PartialTypeSignatures
+                     RankNTypes
+                     ScopedTypeVariables
+                     TypeFamilies
+                     TypeSynonymInstances
