diff --git a/src/Data/TotalMap.hs b/src/Data/TotalMap.hs
--- a/src/Data/TotalMap.hs
+++ b/src/Data/TotalMap.hs
@@ -26,6 +26,7 @@
 import qualified Data.Map as M
 import Data.Set (Set)
 import qualified Data.Set as S
+import Data.Semiring
 
 -- import Control.Comonad  -- TODO
 
@@ -150,6 +151,16 @@
 spec:
 
 -}
+
+instance (Ord k, Semiring v) => Semiring (TMap k v) where
+  zero = pure zero
+  one = pure one
+  (<+>) = liftA2 (<+>)
+  (<.>) = liftA2 (<.>)
+
+instance (Ord k, StarSemiring v) => StarSemiring (TMap k v) where
+  star = fmap star
+  plus = fmap plus
 
 {--------------------------------------------------------------------
     Comonad
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.7
+Version:             0.0.8
 Cabal-Version:       >= 1.6
 Synopsis:            Finitely represented /total/ maps
 Category:            Data
@@ -21,7 +21,7 @@
 Library
   hs-Source-Dirs:      src
   Extensions:
-  Build-Depends:       base<5, containers
+  Build-Depends:       base<5, containers, semiring-num
                        -- , comonad
   Exposed-Modules:     
                        Data.TotalMap
