diff --git a/Source/Environment.hs b/Source/Environment.hs
--- a/Source/Environment.hs
+++ b/Source/Environment.hs
@@ -1,3 +1,5 @@
+{-# Language TemplateHaskell #-}
+
 {-|
 Module:             Environment
 Description:        Execution environment, but as Text and lifted to MonadIO.
@@ -8,8 +10,21 @@
 Portability:        POSIX
 -}
 
-module Environment where
+module Environment (
+    EnvName,
+    _EnvName,
 
+    EnvValue,
+    _EnvValue,
+
+    environment,
+    args,
+
+    ProgName,
+    _ProgName,
+    progName
+    )where
+
 import Lawless
 import IO
 import Text
@@ -18,16 +33,20 @@
 import qualified System.Environment as SE
 
 -- | A key in the 'Environment'.
-newtype EnvName = EnvName {unEnvName ∷ Text} deriving (Eq, Ord, Show, Printable)
+newtype EnvName = EnvName Text deriving (Eq, Ord, Show, Printable)
+makePrisms ''EnvName
+
 instance IsText EnvName where
-    packed = iso (EnvName ∘ view packed) (view unpacked ∘ unEnvName)
-    builder = iso (view builder ∘ unEnvName) (EnvName ∘ review builder)
+    packed = iso (EnvName ∘ view packed) (view unpacked ∘ view _EnvName)
+    builder = iso (view builder ∘ view _EnvName) (EnvName ∘ review builder)
 
 -- | A value in the 'Environment'
-newtype EnvValue = EnvValue {unEnvValue ∷ Text} deriving (Eq, Ord, Show, Printable)
+newtype EnvValue = EnvValue Text deriving (Eq, Ord, Show, Printable)
+makePrisms ''EnvValue
+
 instance IsText EnvValue where
-    packed = iso (EnvValue ∘ view packed) (view unpacked ∘ unEnvValue)
-    builder = iso (view builder ∘ unEnvValue) (EnvValue ∘ review builder)
+    packed = iso (EnvValue ∘ view packed) (view unpacked ∘ view _EnvValue)
+    builder = iso (view builder ∘ view _EnvValue) (EnvValue ∘ review builder)
 
 lookupEnv ∷ MonadIO m ⇒ EnvName → m (Maybe EnvValue)
 lookupEnv k =
@@ -58,18 +77,22 @@
 environment ∷ MonadIO m ⇒ Lens EnvName (m ()) (m (Maybe EnvValue)) EnvValue
 environment = lens lookupEnv setEnv
 
-newtype Arg = Arg {unArg ∷ Text} deriving (Eq, Show, Ord, Printable)
+newtype Arg = Arg Text deriving (Eq, Show, Ord, Printable)
+makePrisms ''Arg
+
 instance IsText Arg where
-    packed = iso (Arg ∘ view packed) (view unpacked ∘ unArg)
-    builder = iso (view builder ∘ unArg) (Arg ∘ review builder)
+    packed = iso (Arg ∘ view packed) (view unpacked ∘ view _Arg)
+    builder = iso (view builder ∘ view _Arg) (Arg ∘ review builder)
 
 args ∷ (MonadIO m) ⇒ m [Arg]
 args = liftIO $ over traversed (view packed) <$> SE.getArgs
 
-newtype ProgName = ProgName {unProgName ∷ Text} deriving (Eq, Show, Ord, Printable)
+newtype ProgName = ProgName Text deriving (Eq, Show, Ord, Printable)
+makePrisms ''ProgName
+
 instance IsText ProgName where
-    packed = iso (ProgName ∘ view packed) (view unpacked ∘ unProgName)
-    builder = iso (view builder ∘ unProgName) (ProgName ∘ review builder)
+    packed = iso (ProgName ∘ view packed) (view unpacked ∘ view _ProgName)
+    builder = iso (view builder ∘ view _ProgName) (ProgName ∘ review builder)
 
 progName ∷ (MonadIO m) ⇒ m ProgName
 progName = liftIO $ view packed <$> SE.getProgName
diff --git a/liblawless.cabal b/liblawless.cabal
--- a/liblawless.cabal
+++ b/liblawless.cabal
@@ -1,5 +1,5 @@
 name:                liblawless
-version:             0.21.0
+version:             0.21.1
 synopsis:            Prelude based on protolude for GHC 8 and beyond.
 license:             GPL-3
 license-file:        LICENSE
@@ -28,7 +28,7 @@
 source-repository this
   type:     git
   location:   git@gitlab.com:misandrist/liblawless.git
-  tag: v0.21.0
+  tag: v0.21.1
 
 library
   ghc-options: -Wall -Wno-redundant-constraints -Wno-type-defaults -O2
