diff --git a/polysemy-kvstore.cabal b/polysemy-kvstore.cabal
--- a/polysemy-kvstore.cabal
+++ b/polysemy-kvstore.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.34.7.
 --
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-kvstore
-version:        0.1.2.0
+version:        0.1.3.0
 synopsis:       KVStore effect for polysemy.
 description:    KVStore effect for polysemy.
 category:       Polysemy
@@ -21,7 +21,7 @@
 
 source-repository head
   type: git
-  location: https://gitlab.com/homotopic-tech/polysemy-kvstore
+  location: https://gitlab.homotopic.tech/haskell/polysemy-kvstore
 
 library
   exposed-modules:
@@ -30,9 +30,9 @@
       Paths_polysemy_kvstore
   hs-source-dirs:
       src
-  ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
+  ghc-options: -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude -Wno-monomorphism-restriction -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-prepositive-qualified-module -Wno-orphans -Wno-safe -Wno-unsafe
   build-depends:
-      base >=4.7 && <5
-    , containers
-    , polysemy >=1.3.0.0 && <1.7
+      base >=4.9 && <5
+    , containers >=0.5 && <0.7
+    , polysemy >=1.3.0.0 && <1.8
   default-language: Haskell2010
diff --git a/src/Polysemy/KVStore.hs b/src/Polysemy/KVStore.hs
--- a/src/Polysemy/KVStore.hs
+++ b/src/Polysemy/KVStore.hs
@@ -1,15 +1,15 @@
-{-# LANGUAGE AllowAmbiguousTypes #-}
-{-# LANGUAGE BlockArguments #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE ExplicitForAll #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE PolyKinds #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE AllowAmbiguousTypes      #-}
+{-# LANGUAGE BlockArguments           #-}
+{-# LANGUAGE DataKinds                #-}
+{-# LANGUAGE FlexibleContexts         #-}
+{-# LANGUAGE GADTs                    #-}
+{-# LANGUAGE LambdaCase               #-}
+{-# LANGUAGE PolyKinds                #-}
+{-# LANGUAGE ScopedTypeVariables      #-}
+{-# LANGUAGE StandaloneKindSignatures #-}
+{-# LANGUAGE TemplateHaskell          #-}
+{-# LANGUAGE TypeApplications         #-}
+{-# LANGUAGE TypeOperators            #-}
 
 module Polysemy.KVStore
   ( -- * Effect
@@ -24,7 +24,7 @@
     updateKV,
     modifyKV,
 
-    -- * Interpretations
+    -- * Interpreters
     runKVStoreAsState,
     runKVStorePure,
     runKVStoreAsKVStore,
@@ -32,14 +32,17 @@
   )
 where
 
-import qualified Data.Map as M
-import Data.Maybe (isJust)
-import Polysemy
-import Polysemy.Error
-import Polysemy.State
+import           Data.Kind      (Type)
+import qualified Data.Map       as M
+import           Data.Maybe     (isJust)
+import           Polysemy       (Member, Members, Sem, interpret, makeSem,
+                                 reinterpret)
+import           Polysemy.Error (Error, fromEither)
+import           Polysemy.State (State, gets, modify, runState)
 
 -- | Models things like Redis, HTTP GET/POST, etc. Things that are keyed, have
 -- a value, and may or may not be there.
+type KVStore :: Type -> Type -> (Type -> Type) -> Type -> Type
 data KVStore k v m a where
   LookupKV :: k -> KVStore k v m (Maybe v)
   UpdateKV :: k -> Maybe v -> KVStore k v m ()
@@ -93,7 +96,7 @@
   Sem r ()
 modifyKV d f k =
   lookupKV k >>= \case
-    Just v -> writeKV k $ f v
+    Just v  -> writeKV k $ f v
     Nothing -> writeKV k $ f d
 
 -- | Run a `KVStore` as a `State` effect containing a `Map`.
@@ -101,7 +104,7 @@
 -- @since 0.1.0.0
 runKVStoreAsState :: Ord k => Sem (KVStore k v ': r) a -> Sem (State (M.Map k v) ': r) a
 runKVStoreAsState = reinterpret $ \case
-  LookupKV k -> gets $ M.lookup k
+  LookupKV k   -> gets $ M.lookup k
   UpdateKV k v -> modify $ M.alter (const v) k
 {-# INLINE runKVStoreAsState #-}
 
@@ -131,7 +134,7 @@
   Sem (KVStore k v ': r) a ->
   Sem (KVStore k' v' ': r) a
 runKVStoreAsKVStore f g h = reinterpret \case
-  LookupKV k -> fmap h <$> lookupKV @k' @v' (f k)
+  LookupKV k   -> fmap h <$> lookupKV @k' @v' (f k)
   UpdateKV k x -> updateKV @k' @v' (f k) (fmap g x)
 {-# INLINE runKVStoreAsKVStore #-}
 
