diff --git a/Control/Comonad/Store/Class.hs b/Control/Comonad/Store/Class.hs
--- a/Control/Comonad/Store/Class.hs
+++ b/Control/Comonad/Store/Class.hs
@@ -11,9 +11,8 @@
 ----------------------------------------------------------------------------
 module Control.Comonad.Store.Class 
   ( ComonadStore(..)
-  , gets
-  , experiment
-  , lowerGet
+  , lowerPos
+  , lowerPeek
   ) where
 
 import Control.Comonad
@@ -37,69 +36,77 @@
 import Data.Semigroup
 
 class Comonad w => ComonadStore s w | w -> s where
-  get :: w a -> s
-  put :: s -> w a -> w a
-  modify :: (s -> s) -> w a -> w a
-  modify f wa = put (f (get wa)) wa
-
-gets :: ComonadStore s w => (s -> t) -> w a -> t
-gets f wa = f (get wa)
-{-# INLINE gets #-}
+  pos :: w a -> s
+  peek :: s -> w a -> a
 
-experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a
-experiment ff wa = fmap (\f -> extract (modify f wa)) ff
-{-# INLINE experiment #-}
+  peeks :: (s -> s) -> w a -> a
+  peeks f w = peek (f (pos w)) w
+  
+  seek :: s -> w a -> w a
+  seek s = peek s . duplicate
+    
+  seeks :: (s -> s) -> w a -> w a
+  seeks f = peeks f . duplicate
 
 instance Comonad w => ComonadStore s (Strict.StoreT s w) where
-  get = Strict.get
-  put = Strict.put
-  modify = Strict.modify
+  pos = Strict.pos
+  peek = Strict.peek
+  peeks = Strict.peeks
+  seek = Strict.seek
+  seeks = Strict.seeks
 
 instance Comonad w => ComonadStore s (Lazy.StoreT s w) where
-  get = Lazy.get
-  put = Lazy.put
-  modify = Lazy.modify
+  pos = Lazy.pos
+  peek = Lazy.peek
+  peeks = Lazy.peeks
+  seek = Lazy.seek
+  seeks = Lazy.seeks
 
 instance Comonad w => ComonadStore s (Memo.StoreT s w) where
-  get = Memo.get
-  put = Memo.put
-  modify = Memo.modify
+  pos = Memo.pos
+  peek = Memo.peek
+  peeks = Memo.peeks
+  seek = Memo.seek
+  seeks = Memo.seeks
 
 -- All of these require UndecidableInstances because they do not satisfy the coverage condition
 
-lowerGet :: (ComonadTrans t, ComonadStore s w) => t w a -> s
-lowerGet = get . lower
-{-# INLINE lowerGet #-}
+lowerPos :: (ComonadTrans t, ComonadStore s w) => t w a -> s
+lowerPos = pos . lower
+{-# INLINE lowerPos #-}
 
+lowerPeek :: (ComonadTrans t, ComonadStore s w) => s -> t w a -> a
+lowerPeek s = peek s . lower
+{-# INLINE lowerPeek #-}
+
 instance ComonadStore s w => ComonadStore s (Lazy.DiscontT k w) where
-  get = lowerGet
-  put s ~(Lazy.DiscontT f wa) = Lazy.DiscontT f (put s wa)
+  pos = lowerPos
+  peek = lowerPeek
 
 instance ComonadStore s w => ComonadStore s (Memo.DiscontT k w) where
-  get = lowerGet
-  put s w = Memo.discontT f (put s wa)
-    where (f, wa) = Memo.runDiscontT w
+  pos = lowerPos
+  peek = lowerPeek
 
 instance ComonadStore s w => ComonadStore s (Strict.DiscontT k w) where
-  get = lowerGet
-  put s (Strict.DiscontT f wa) = Strict.DiscontT f (put s wa)
+  pos = lowerPos
+  peek = lowerPeek
 
 instance ComonadStore s w => ComonadStore s (IdentityT w) where
-  get = lowerGet
-  put s = IdentityT . put s . runIdentityT
+  pos = lowerPos
+  peek = lowerPeek
 
 instance ComonadStore s w => ComonadStore s (Lazy.EnvT e w) where
-  get = lowerGet
-  put s ~(Lazy.EnvT e wa) = Lazy.EnvT e (put s wa)
+  pos = lowerPos
+  peek = lowerPeek
 
 instance ComonadStore s w => ComonadStore s (Strict.EnvT e w) where
-  get = lowerGet
-  put s (Strict.EnvT e wa) = Strict.EnvT e (put s wa)
+  pos = lowerPos
+  peek = lowerPeek
 
 instance (ComonadStore s w, Semigroup m, Monoid m) => ComonadStore s (Simple.TracedT m w) where
-  get = lowerGet
-  put s (Simple.TracedT wma) = Simple.TracedT (put s wma)
+  pos = lowerPos
+  peek = lowerPeek
 
 instance (ComonadStore s w, Monoid m) => ComonadStore s (Memo.TracedT m w) where
-  get = lowerGet
-  put s = Memo.tracedT . put s . Memo.runTracedT
+  pos = lowerPos
+  peek = lowerPeek
diff --git a/Control/Comonad/Store/Lazy.hs b/Control/Comonad/Store/Lazy.hs
--- a/Control/Comonad/Store/Lazy.hs
+++ b/Control/Comonad/Store/Lazy.hs
@@ -11,8 +11,6 @@
 module Control.Comonad.Store.Lazy ( 
   -- * ComonadStore class
     ComonadStore(..)
-  , gets
-  , experiment
   -- * The Store comonad
   , Store
   , store
@@ -26,6 +24,6 @@
   ) where
 
 import Control.Comonad
-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)
+import Control.Comonad.Store.Class (ComonadStore(..))
 import Control.Comonad.Trans.Class
 import Control.Comonad.Trans.Store.Lazy (Store, store, runStore, StoreT(..), runStoreT)
diff --git a/Control/Comonad/Store/Memo.hs b/Control/Comonad/Store/Memo.hs
--- a/Control/Comonad/Store/Memo.hs
+++ b/Control/Comonad/Store/Memo.hs
@@ -11,8 +11,6 @@
 module Control.Comonad.Store.Memo ( 
   -- * ComonadStore class
     ComonadStore(..)
-  , gets
-  , experiment
   -- * The Store comonad
   , Store
   , store
@@ -27,6 +25,6 @@
   ) where
 
 import Control.Comonad
-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)
+import Control.Comonad.Store.Class (ComonadStore(..))
 import Control.Comonad.Trans.Class
 import Control.Comonad.Trans.Store.Memo (Store, store, runStore, StoreT, storeT, runStoreT)
diff --git a/Control/Comonad/Store/Strict.hs b/Control/Comonad/Store/Strict.hs
--- a/Control/Comonad/Store/Strict.hs
+++ b/Control/Comonad/Store/Strict.hs
@@ -11,8 +11,6 @@
 module Control.Comonad.Store.Strict ( 
   -- * ComonadStore class
     ComonadStore(..)
-  , gets
-  , experiment
   -- * The Store comonad
   , Store
   , store
@@ -26,6 +24,6 @@
   ) where
 
 import Control.Comonad
-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)
+import Control.Comonad.Store.Class (ComonadStore(..))
 import Control.Comonad.Trans.Class
 import Control.Comonad.Trans.Store.Strict (Store, store, runStore, StoreT(..), runStoreT)
diff --git a/comonads-fd.cabal b/comonads-fd.cabal
--- a/comonads-fd.cabal
+++ b/comonads-fd.cabal
@@ -1,6 +1,6 @@
 name:          comonads-fd
 category:      Control, Comonads
-version:       1.4.0
+version:       1.5.0
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -23,7 +23,7 @@
     transformers >= 0.2 && < 0.3,
     semigroups >= 0.3.4 && < 0.4,
     comonad >= 1.0 && < 1.1,
-    comonad-transformers >= 1.4 && < 1.5
+    comonad-transformers >= 1.5 && < 1.6
 
   exposed-modules:
     Control.Comonad.Discont
