diff --git a/src/Data/TotalMap.hs b/src/Data/TotalMap.hs
--- a/src/Data/TotalMap.hs
+++ b/src/Data/TotalMap.hs
@@ -16,15 +16,16 @@
 module Data.TotalMap (TMap,(!),tabulate,trim) where
 
 import Data.Monoid (Monoid(..))
-import Control.Applicative (Applicative(..),(<$>))
+import Control.Applicative (Applicative(..),liftA2,(<$>))
 import Data.Maybe (fromMaybe)
 
 import Data.Map (Map)
 import qualified Data.Map as M
-
 import Data.Set (Set)
 import qualified Data.Set as S
 
+-- import Control.Comonad  -- TODO
+
 -- | Total map
 data TMap k v = TMap v (Map k v) deriving Functor
 
@@ -50,6 +51,17 @@
 tabulate' = (fmap.fmap.fmap) trim tabulate
 -}
 
+{--------------------------------------------------------------------
+    Instances
+--------------------------------------------------------------------}
+
+-- These instances follow the principle that semantic functions (here (!))
+-- must be type class morphism (TCM) for all inhabited type classes.
+
+instance (Ord k, Monoid v) => Monoid (TMap k v) where
+  mempty  = pure mempty
+  mappend = liftA2 mappend
+
 instance Ord k => Applicative (TMap k) where
   pure v = TMap v mempty
   fs@(TMap df mf) <*> xs@(TMap dx mx) = 
@@ -100,6 +112,13 @@
 spec:
 
 -}
+
+{--------------------------------------------------------------------
+    Comonad
+--------------------------------------------------------------------}
+
+-- TODO: Based on the function-of-monoid comonad.
+-- TODO: Also a version with a pointer.
 
 {--------------------------------------------------------------------
     Misc
diff --git a/total-map.cabal b/total-map.cabal
--- a/total-map.cabal
+++ b/total-map.cabal
@@ -1,5 +1,5 @@
 Name:                total-map
-Version:             0.0.2
+Version:             0.0.3
 Cabal-Version:       >= 1.6
 Synopsis:            Finitely represented /total/ maps
 Category:            
@@ -22,5 +22,6 @@
   hs-Source-Dirs:      src
   Extensions:
   Build-Depends:       base<5, containers
+                       -- , comonad
   Exposed-Modules:     
                        Data.TotalMap
