diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # bzip-signature
 
+## 0.1.2.0
+
+  * Add `BZip.Lens` module
+
 ## 0.1.1.1
 
   * Documentation improvements
diff --git a/bzip-signature.cabal b/bzip-signature.cabal
--- a/bzip-signature.cabal
+++ b/bzip-signature.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.0
 name:            bzip-signature
-version:         0.1.1.1
+version:         0.1.2.0
 license:         BSD3
 license-file:    LICENSE
 copyright:       Copyright: (c) 2020 Vanessa McHale
@@ -20,7 +20,10 @@
     subdir:   bzip-signature
 
 library
-    exposed-modules:  BZip.File
+    exposed-modules:
+        BZip.File
+        BZip.Lens
+
     signatures:       BZip
     hs-source-dirs:   src
     default-language: Haskell2010
@@ -28,4 +31,5 @@
     build-depends:
         base >=4.10 && <5,
         bytestring -any,
+        lens -any,
         composition-prelude >=2.0.5.0
diff --git a/src/BZip/Lens.hs b/src/BZip/Lens.hs
new file mode 100644
--- /dev/null
+++ b/src/BZip/Lens.hs
@@ -0,0 +1,16 @@
+module BZip.Lens ( bz2 ) where
+
+import           BZip
+import           Control.Lens.Iso     (Iso', iso)
+import qualified Data.ByteString.Lazy as BSL
+
+-- | @'Control.Lens.view' 'bz2' = 'decompress'@
+--
+-- @'Control.Lens.view' ('Control.Lens.from' 'bz2') = 'compress'@
+--
+-- @'Control.Lens.over' 'bz2' f = 'compress' . f . 'decompress'@
+--
+-- @since 0.1.2.0
+bz2 :: Iso' BSL.ByteString BSL.ByteString
+bz2 = iso decompress compress
+-- TODO: I wonder if this is sufficiently lazy?
