diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for rio
 
+## 0.1.16.0
+
+* Expand the number of `microlens` functions exported by the RIO prelude.
+* Add new module `RIO.Lens` which provides the rest of `microlens`.
+
 ## 0.1.15.1
 
 * Replace `canonicalizePath` with `makeAbsolute` [#217](https://github.com/commercialhaskell/rio/issues/217)
diff --git a/rio.cabal b/rio.cabal
--- a/rio.cabal
+++ b/rio.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.33.0.
+-- This file has been generated from package.yaml by hpack version 0.34.1.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 30ccd150c619c6c6fa96ebc7d3b33d6cb4ea1b2e45228e4cba5c35c1bc64cd63
 
 name:           rio
-version:        0.1.15.1
+version:        0.1.16.0
 synopsis:       A standard library for Haskell
 description:    See README and Haddocks at <https://www.stackage.org/package/rio>
 category:       Control
@@ -42,6 +40,7 @@
       RIO.HashMap
       RIO.HashMap.Partial
       RIO.HashSet
+      RIO.Lens
       RIO.List
       RIO.List.Partial
       RIO.Map
@@ -102,6 +101,7 @@
     , filepath
     , hashable
     , microlens
+    , microlens-mtl
     , mtl
     , primitive
     , process
@@ -150,6 +150,7 @@
     , hashable
     , hspec
     , microlens
+    , microlens-mtl
     , mtl
     , primitive
     , process
diff --git a/src/RIO.hs b/src/RIO.hs
--- a/src/RIO.hs
+++ b/src/RIO.hs
@@ -41,7 +41,8 @@
   , module RIO.Prelude.Logger
     -- * Display
   , module RIO.Prelude.Display
-    -- * Lens
+    -- * Optics
+    -- | @microlens@-based Lenses, Traversals, etc.
   , module RIO.Prelude.Lens
     -- * Concurrency
   , UnliftIO.Concurrent.ThreadId
diff --git a/src/RIO/Lens.hs b/src/RIO/Lens.hs
new file mode 100644
--- /dev/null
+++ b/src/RIO/Lens.hs
@@ -0,0 +1,39 @@
+-- |
+-- Module    : RIO.Lens
+-- License   : MIT
+-- Maintainer: Colin Woodbury <colin@fosskers.ca>
+--
+-- Extra utilities from @microlens@.
+--
+-- @since: 0.1.16.0
+module RIO.Lens
+  ( -- * Fold
+    SimpleFold
+  , toListOf
+  , has
+    -- * Lens
+  , _1, _2, _3, _4, _5
+  , at
+  , lens
+    -- * Iso
+  , non
+    -- * Traversal
+  , singular
+  , failing
+  , filtered
+  , both
+  , traversed
+  , each
+  , ix
+  , _head
+  , _tail
+  , _init
+  , _last
+    -- * Prism
+  , _Left
+  , _Right
+  , _Just
+  , _Nothing
+  ) where
+
+import Lens.Micro
diff --git a/src/RIO/Prelude/Lens.hs b/src/RIO/Prelude/Lens.hs
--- a/src/RIO/Prelude/Lens.hs
+++ b/src/RIO/Prelude/Lens.hs
@@ -1,5 +1,6 @@
 module RIO.Prelude.Lens
   ( view
+  , preview
   , Lens.Micro.ASetter
   , Lens.Micro.ASetter'
   , Lens.Micro.Getting
@@ -12,12 +13,11 @@
   , Lens.Micro.sets
   , Lens.Micro.to
   , (Lens.Micro.^.)
+  , (Lens.Micro.^?)
+  , (Lens.Micro.^..)
+  , (Lens.Micro.%~)
+  , (Lens.Micro..~)
   ) where
 
 import Lens.Micro
-import Control.Monad.Reader (MonadReader, asks)
-import           Lens.Micro.Internal      (( #. ))
-import           Control.Applicative      (Const (..))
-
-view :: MonadReader s m => Getting a s a -> m a
-view l = asks (getConst #. l Const)
+import Lens.Micro.Mtl
