diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+0.1.1
+-----
+* Added `zoomAt`.
+
 0.1
 ---
 Initial release.
diff --git a/polysemy-keyed-state.cabal b/polysemy-keyed-state.cabal
--- a/polysemy-keyed-state.cabal
+++ b/polysemy-keyed-state.cabal
@@ -5,10 +5,11 @@
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-keyed-state
-version:        0.1
+version:        0.1.1
 synopsis:       Effect for a set of stateful values indexed by a type of keys
 description:    The @KeyedState k@ effect provides access to a set of stateful values indexed by some key type @k :: Type -> Type@, where a key of type @k a@ can be used to access a stateful value of type @a@.
 category:       BSD3, Library
+stability:      experimental
 homepage:       https://github.com/kcsmnt0/polysemy-keyed-state#readme
 bug-reports:    https://github.com/kcsmnt0/polysemy-keyed-state/issues
 maintainer:     Katie Casamento <kcsmnt0@gmail.com>
@@ -16,7 +17,9 @@
 license-file:   LICENSE
 build-type:     Simple
 tested-with:
-    GHC == 8.10.5
+    GHC == 8.6.5
+  , GHC == 8.8.4
+  , GHC == 8.10.5
 extra-source-files:
     README.md
     CHANGELOG.md
diff --git a/src/Polysemy/State/Keyed.hs b/src/Polysemy/State/Keyed.hs
--- a/src/Polysemy/State/Keyed.hs
+++ b/src/Polysemy/State/Keyed.hs
@@ -5,6 +5,7 @@
   , putAt
   , modifyAt
   , rename
+  , zoomAt
   -- * @State@ interpreters
   , runKeyedStates
   , KeyedStore(..)
@@ -65,6 +66,16 @@
   transform $ \case
     GetAt k -> GetAt $ h k
     PutAt k x -> PutAt (h k) x
+
+-- |Interpret a @State@ effect as a single variable in a @KeyedState@ effect.
+zoomAt ::
+  forall k a r.
+  Member (KeyedState k) r =>
+  k a -> InterpreterFor (State a) r
+zoomAt k =
+  interpret $ \case
+    Get -> getAt k
+    Put x -> putAt k x
 
 {-|
 Distribute a @KeyedState@ effect across multiple @State@ effects by mapping each key to an effect.
