diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
 Copyright © 2007–2009 Brandenburgische Technische Universität Cottbus
-Copyright © 2011      Wolfgang Jeltsch
+Copyright © 2011-2012 Wolfgang Jeltsch
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification, are permitted
diff --git a/grapefruit-frp.cabal b/grapefruit-frp.cabal
--- a/grapefruit-frp.cabal
+++ b/grapefruit-frp.cabal
@@ -1,15 +1,16 @@
 Name:          grapefruit-frp
-Version:       0.1.0.0
+Version:       0.1.0.1
 Cabal-Version: >= 1.6
 Build-Type:    Simple
 License:       BSD3
 License-File:  LICENSE
-Copyright:     © 2007–2009 Brandenburgische Technische Universität Cottbus; © 2011 Wolfgang Jeltsch
+Copyright:     © 2007–2009 Brandenburgische Technische Universität Cottbus
+               © 2011–2012 Wolfgang Jeltsch
 Author:        Wolfgang Jeltsch
 Maintainer:    wolfgang@cs.ioc.ee
 Stability:     provisional
 Homepage:      http://grapefruit-project.org/
-Package-URL:   http://hackage.haskell.org/packages/archive/grapefruit-frp/0.1.0.0/grapefruit-frp-0.1.0.0.tar.gz
+Package-URL:   http://hackage.haskell.org/packages/archive/grapefruit-frp/0.1.0.1/grapefruit-frp-0.1.0.1.tar.gz
 Synopsis:      Functional Reactive Programming core
 Description:   Grapefruit is a library for Functional Reactive Programming (FRP) with a focus on
                user interfaces. FRP makes it possible to implement reactive and interactive systems
@@ -18,7 +19,7 @@
                .
                This package contains general support for Functional Reactive Programming.
 Category:      FRP, Reactivity
-Tested-With:   GHC == 7.0.4
+Tested-With:   GHC == 7.4.1
 
 Source-Repository head
     type:     darcs
@@ -26,12 +27,12 @@
 
 Source-Repository this
     type:     darcs
-    location: http://darcs.grapefruit-project.org/main
-    tag:      grapefruit-0.1.0.0
+    location: http://darcs.grapefruit-project.org/0.1
+    tag:      grapefruit-0.1.0.1
 
 Library
     Build-Depends:   arrows      >= 0.2 && < 0.5,
-                     base        >= 3.0 && < 4.4,
+                     base        >= 3.0 && < 5,
                      containers  >= 0.1 && < 0.5,
                      fingertree  >= 0.0 && < 0.1,
                      semigroups  >= 0.8 && < 0.9,
diff --git a/src/FRP/Grapefruit/Signal/Incremental.hs b/src/FRP/Grapefruit/Signal/Incremental.hs
--- a/src/FRP/Grapefruit/Signal/Incremental.hs
+++ b/src/FRP/Grapefruit/Signal/Incremental.hs
@@ -2,7 +2,7 @@
 
     -- * Incremental signal type
     ISignal,
-    Incremental (patch, type ValidationState, validationInit, validationStep),
+    Incremental (type Diff, patch, type ValidationState, validationInit, validationStep),
     Diff (Replacement),
 
     -- * Monolithic values
diff --git a/src/FRP/Grapefruit/Signal/Incremental/Sequence.hs b/src/FRP/Grapefruit/Signal/Incremental/Sequence.hs
--- a/src/FRP/Grapefruit/Signal/Incremental/Sequence.hs
+++ b/src/FRP/Grapefruit/Signal/Incremental/Sequence.hs
@@ -88,13 +88,13 @@
 
     instance Semigroup (Diff (Seq el)) where
 
-        Diff atomicDiffs1 <> Diff atomicDiffs2 = Diff (atomicDiffs1 `mappend` atomicDiffs2)
+        (<>) = mappend
 
     instance Monoid (Diff (Seq el)) where
 
         mempty = Diff Seq.empty
 
-        mappend = (<>)
+        Diff atomicDiffs1 `mappend` Diff atomicDiffs2 = Diff (atomicDiffs1 `mappend` atomicDiffs2)
 
     insertion :: Int -> Seq el -> Diff (Seq el)
     insertion idx els = fromAtomicDiff (Insertion idx els)
diff --git a/src/FRP/Grapefruit/Signal/Incremental/Set.hs b/src/FRP/Grapefruit/Signal/Incremental/Set.hs
--- a/src/FRP/Grapefruit/Signal/Incremental/Set.hs
+++ b/src/FRP/Grapefruit/Signal/Incremental/Set.hs
@@ -101,17 +101,17 @@
 
     instance (Ord el) => Semigroup (Diff (Set el)) where
 
-        Diff diffMap1 <> Diff diffMap2 = Diff (diffMap2 `Map.union` diffMap1)
-        {-
-            Mind the order of Map.union arguments. Map.union is left-biased and the insertions and
-            deletions of the second diff must win.
-        -}
+        (<>) = mappend
 
     instance (Ord el) => Monoid (Diff (Set el)) where
 
         mempty = Diff Map.empty
 
-        mappend = (<>)
+        Diff diffMap1 `mappend` Diff diffMap2 = Diff (diffMap2 `Map.union` diffMap1)
+        {-
+            Mind the order of Map.union arguments. Map.union is left-biased and the insertions and
+            deletions of the second diff must win.
+        -}
 
     insertion :: (Ord el) => Set el -> Diff (Set el)
     insertion = containednessChange True
