diff --git a/Numeric/Algebra.hs b/Numeric/Algebra.hs
--- a/Numeric/Algebra.hs
+++ b/Numeric/Algebra.hs
@@ -53,6 +53,7 @@
   -- * Rings
   , Ring(..)
   -- ** Division Rings
+  , LocalRing
   , DivisionRing
   , Field
 
@@ -165,5 +166,6 @@
 import Numeric.Rig.Ordered
 import Numeric.Rng.Class
 import Numeric.Ring.Class
+import Numeric.Ring.Local
 import Numeric.Ring.Division
 import Numeric.Field.Class
diff --git a/Numeric/Coalgebra/Categorical.hs b/Numeric/Coalgebra/Categorical.hs
--- a/Numeric/Coalgebra/Categorical.hs
+++ b/Numeric/Coalgebra/Categorical.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, GeneralizedNewtypeDeriving, DeriveDataTypeable #-}
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, GeneralizedNewtypeDeriving, DeriveDataTypeable, PatternGuards #-}
 module Numeric.Coalgebra.Categorical 
   ( Morphism(..)
   ) where
diff --git a/Numeric/Coalgebra/Geometric.hs b/Numeric/Coalgebra/Geometric.hs
--- a/Numeric/Coalgebra/Geometric.hs
+++ b/Numeric/Coalgebra/Geometric.hs
@@ -6,6 +6,7 @@
     DeriveDataTypeable,
     FlexibleInstances,
     TypeFamilies,
+    PatternGuards,
     UndecidableInstances,
     ScopedTypeVariables #-}
 
diff --git a/Numeric/Coalgebra/Incidence.hs b/Numeric/Coalgebra/Incidence.hs
new file mode 100644
--- /dev/null
+++ b/Numeric/Coalgebra/Incidence.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE MultiParamTypeClasses
+           , FlexibleInstances
+           , UndecidableInstances
+           , DeriveDataTypeable
+           #-}
+
+module Numeric.Coalgebra.Incidence
+  ( Interval'(..)
+  , zeta'
+  , moebius'
+  ) where
+
+import Data.Data
+import Numeric.Algebra.Class
+import Numeric.Algebra.Unital
+import Numeric.Algebra.Commutative
+import Numeric.Ring.Class
+import Numeric.Order.LocallyFinite
+
+-- | the dual incidence algebra basis
+data Interval' a = Interval' a a deriving (Eq,Ord,Show,Read,Data,Typeable)
+
+instance (Eq a, Commutative r, Monoidal r, Semiring r) => Coalgebra r (Interval' a) where
+  comult f (Interval' a b) (Interval' b' c) 
+    | b == b' = f (Interval' a c)
+    | otherwise = zero
+
+instance (Eq a, Bounded a, Commutative r, Monoidal r, Semiring r) => CounitalCoalgebra r (Interval' a) where
+  counit f = f (Interval' minBound maxBound)
+  
+zeta' :: Unital r => Interval' a -> r
+zeta' = const one
+
+moebius' :: (Ring r, LocallyFiniteOrder a) => Interval' a -> r
+moebius' (Interval' a b) = moebiusInversion a b
diff --git a/Numeric/Covector.hs b/Numeric/Covector.hs
--- a/Numeric/Covector.hs
+++ b/Numeric/Covector.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ImplicitParams, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-}
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-}
 module Numeric.Covector 
   ( Covector(..)
   -- * Covectors as linear functionals
diff --git a/Numeric/Quadrance/Class.hs b/Numeric/Quadrance/Class.hs
--- a/Numeric/Quadrance/Class.hs
+++ b/Numeric/Quadrance/Class.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE MultiParamTypeClasses, IncoherentInstances, OverlappingInstances, FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
 module Numeric.Quadrance.Class
   ( Quadrance(..)
   ) where
diff --git a/Numeric/Ring/Local.hs b/Numeric/Ring/Local.hs
new file mode 100644
--- /dev/null
+++ b/Numeric/Ring/Local.hs
@@ -0,0 +1,10 @@
+module Numeric.Ring.Local 
+  ( LocalRing 
+  ) where
+
+import Numeric.Ring.Class
+
+-- forall x in r, either x or 1 - x is a unit.
+-- if a finite sum is a unit then so are some of its terms, so the empty sum is not a unit, and one /= zero.
+class Ring r => LocalRing r
+
diff --git a/algebra.cabal b/algebra.cabal
--- a/algebra.cabal
+++ b/algebra.cabal
@@ -1,6 +1,6 @@
 name:          algebra
 category:      Math, Algebra
-version:       0.8.0
+version:       0.9.0.1
 license:       BSD3
 cabal-version: >= 1.6
 license-file:  LICENSE
@@ -18,6 +18,20 @@
   location: git://github.com/ekmett/algebra.git
 
 library
+  other-extensions:
+    TypeOperators
+    MultiParamTypeClasses
+    FlexibleInstances
+    FlexibleContexts
+    MultiParamTypeClasses
+    BangPatterns
+    ScopedTypeVariables
+    UndecidableInstances
+    PatternGuards
+    DeriveDataTypeable
+    RebindableSyntax
+    GeneralizedNewtypeDeriving
+
   build-depends: 
     array >= 0.3.0.2 && < 0.4,
     base >= 4 && < 4.4,
@@ -35,68 +49,69 @@
     void >= 0.5.4 && < 0.6
 
   exposed-modules:
+    Numeric.Additive.Class
+    Numeric.Additive.Group
     Numeric.Algebra
-    Numeric.Covector
-    Numeric.Natural
-
-    Numeric.Algebra.Distinguished.Class
+    Numeric.Algebra.Class
+    Numeric.Algebra.Commutative
     Numeric.Algebra.Complex
     Numeric.Algebra.Complex.Class
+    Numeric.Algebra.Distinguished.Class
+    Numeric.Algebra.Division
     Numeric.Algebra.Dual
     Numeric.Algebra.Dual.Class
-    Numeric.Algebra.Quaternion
-    Numeric.Algebra.Quaternion.Class
+    Numeric.Algebra.Factorable
+    Numeric.Algebra.Hopf
     Numeric.Algebra.Hyperbolic
+    Numeric.Algebra.Idempotent
     Numeric.Algebra.Incidence
+    Numeric.Algebra.Involutive
+    Numeric.Algebra.Quaternion
+    Numeric.Algebra.Quaternion.Class
+    Numeric.Algebra.Unital
+    Numeric.Band.Class
+    Numeric.Band.Rectangular
+    Numeric.Coalgebra.Categorical
     Numeric.Coalgebra.Dual
+    Numeric.Coalgebra.Geometric
     Numeric.Coalgebra.Hyperbolic
     Numeric.Coalgebra.Hyperbolic.Class
+    Numeric.Coalgebra.Quaternion
+    Numeric.Coalgebra.Incidence
     Numeric.Coalgebra.Trigonometric
     Numeric.Coalgebra.Trigonometric.Class
-    Numeric.Coalgebra.Geometric
-    Numeric.Coalgebra.Quaternion
-    Numeric.Coalgebra.Categorical
-    Numeric.Band.Rectangular
+    Numeric.Covector
+    Numeric.Decidable.Associates
+    Numeric.Decidable.Units
+    Numeric.Decidable.Zero
+    Numeric.Dioid.Class
     Numeric.Exp
+    Numeric.Field.Class
     Numeric.Log
     Numeric.Map
-    Numeric.Natural.Internal
-    Numeric.Rng.Zero
-    Numeric.Ring.Rng
-    Numeric.Ring.Opposite
-    Numeric.Ring.Endomorphism
-    Numeric.Partial.Semigroup
-    Numeric.Partial.Monoid
-    Numeric.Partial.Group
-    Numeric.Additive.Class
-    Numeric.Additive.Group
-    Numeric.Algebra.Class
-    Numeric.Algebra.Involutive
-    Numeric.Algebra.Idempotent
-    Numeric.Algebra.Division
-    Numeric.Algebra.Unital
-    Numeric.Algebra.Commutative
-    Numeric.Algebra.Factorable
-    Numeric.Algebra.Hopf
-    Numeric.Decidable.Zero
-    Numeric.Decidable.Units
-    Numeric.Decidable.Associates
-    Numeric.Field.Class
     Numeric.Module.Class
     Numeric.Module.Representable
-    Numeric.Semiring.Integral
-    Numeric.Semiring.Involutive
-    Numeric.Band.Class
-    Numeric.Dioid.Class
+    Numeric.Natural
+    Numeric.Natural.Internal
+    Numeric.Order.Additive
+    Numeric.Order.Class
+    Numeric.Order.LocallyFinite
+    Numeric.Partial.Group
+    Numeric.Partial.Monoid
+    Numeric.Partial.Semigroup
     Numeric.Quadrance.Class
+    Numeric.Rig.Characteristic
     Numeric.Rig.Class
-    Numeric.Rng.Class
+    Numeric.Rig.Ordered
     Numeric.Ring.Class
     Numeric.Ring.Division
-    Numeric.Rig.Ordered
-    Numeric.Rig.Characteristic
-    Numeric.Order.Class
-    Numeric.Order.Additive
-    Numeric.Order.LocallyFinite
+    Numeric.Ring.Endomorphism
+    Numeric.Ring.Local
+    Numeric.Ring.Opposite
+    Numeric.Ring.Rng
+    Numeric.Rng.Class
+    Numeric.Rng.Zero
+    Numeric.Semiring.Integral
+    Numeric.Semiring.Involutive
 
   ghc-options: -Wall 
