diff --git a/pointed.cabal b/pointed.cabal
--- a/pointed.cabal
+++ b/pointed.cabal
@@ -1,6 +1,6 @@
 name:          pointed
 category:      Data
-version:       3.0.3
+version:       3.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -24,12 +24,13 @@
     base                 >= 4       && < 5,
     transformers         >= 0.2     && < 0.4,
     containers           >= 0.4     && < 0.6,
-    comonad              >= 3,
-    comonad-transformers >= 3,
+    comonad              >= 3       && < 4,
+    comonad-transformers >= 3       && < 4,
     data-default         >= 0.4     && < 0.6,
-    semigroups           >= 0.8.3.1,
-    semigroupoids        >= 3,
-    stm                  >= 2.1.2.1 && < 2.5
+    semigroups           >= 0.8.3.1 && < 1,
+    semigroupoids        >= 3       && < 4,
+    stm                  >= 2.1.2.1 && < 2.5,
+    tagged               >= 0.5     && < 1
 
   exposed-modules:
     Data.Pointed
diff --git a/src/Data/Copointed.hs b/src/Data/Copointed.hs
--- a/src/Data/Copointed.hs
+++ b/src/Data/Copointed.hs
@@ -17,12 +17,16 @@
 import Control.Comonad.Trans.Store
 import Control.Comonad.Trans.Traced
 import Data.List.NonEmpty (NonEmpty(..))
+import Data.Tagged
 
 -- | 'Copointed' does not require a 'Functor', as the only relationship
 -- between 'copoint' and 'fmap' is given by a free theorem.
 
 class Copointed p where
   copoint :: p a -> a
+
+instance Copointed (Tagged a) where
+  copoint = unTagged
 
 instance Copointed Identity where
   copoint = runIdentity
diff --git a/src/Data/Pointed.hs b/src/Data/Pointed.hs
--- a/src/Data/Pointed.hs
+++ b/src/Data/Pointed.hs
@@ -33,9 +33,17 @@
 import qualified Control.Monad.Trans.State.Lazy as Lazy
 import qualified Control.Monad.Trans.State.Strict as Strict
 import Data.Semigroupoid.Static
+import Data.Tagged
+import Data.Proxy
 
 class Pointed p where
   point :: a -> p a
+
+instance Pointed Proxy where
+  point _ = Proxy
+
+instance Pointed (Tagged a) where
+  point = Tagged
 
 instance Pointed [] where
   point a = [a]
