diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,26 +1,28 @@
 Copyright © 2007–2009 Brandenburgische Technische Universität Cottbus
-Copyright © 2011-2013 Wolfgang Jeltsch
+Copyright © 2011–2014 Wolfgang Jeltsch
 All rights reserved.
 
-Redistribution and use in source and binary forms, with or without modification, are permitted
-provided that the following conditions are met:
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
 
-    * Redistributions of source code must retain the above copyright notice, this list of conditions
-      and the following disclaimer.
+    • Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
 
-    * Redistributions in binary form must reproduce the above copyright notice, this list of
-      conditions and the following disclaimer in the documentation and/or other materials provided
-      with the distribution.
+    • Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
 
-    * Neither the name of the copyright holders nor the names of the contributors may be used to
-      endorse or promote products derived from this software without specific prior written
-      permission.
+    • Neither the name of the copyright holders nor the names of the
+      contributors may be used to endorse or promote products derived from this
+      software without specific prior written permission.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/grapefruit-frp.cabal b/grapefruit-frp.cabal
--- a/grapefruit-frp.cabal
+++ b/grapefruit-frp.cabal
@@ -1,50 +1,72 @@
 Name:          grapefruit-frp
-Version:       0.1.0.4
-Cabal-Version: >= 1.6
+Version:       0.1.0.5
+Cabal-Version: >= 1.8
 Build-Type:    Simple
 License:       BSD3
 License-File:  LICENSE
 Copyright:     © 2007–2009 Brandenburgische Technische Universität Cottbus
-               © 2011–2013 Wolfgang Jeltsch
+               © 2011–2014 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.4/grapefruit-frp-0.1.0.4.tar.gz
+Package-URL:   http://hackage.haskell.org/packages/archive/grapefruit-frp/0.1.0.5/grapefruit-frp-0.1.0.5.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
-               in a declarative style. To learn more about FRP, have a look at
+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 in a declarative
+               style. To learn more about FRP, have a look at
                <http://haskell.org/haskellwiki/Functional_Reactive_Programming>.
                .
-               This package contains general support for Functional Reactive Programming.
+               This package contains general support for Functional Reactive
+               Programming.
 Category:      FRP, Reactivity
 Tested-With:   GHC == 7.6.3
 
 Source-Repository this
-    type:     darcs
-    location: http://darcs.grapefruit-project.org/monolithic/0.1
-    tag:      grapefruit-0.1.0.4
+    Type:     darcs
+    Location: http://darcs.grapefruit-project.org/monolithic/0.1
+    Tag:      grapefruit-0.1.0.5
 
 Library
     Build-Depends:   arrows      >= 0.2 && < 0.5,
                      base        >= 3.0 && < 5,
                      containers  >= 0.1 && < 0.6,
                      fingertree  >= 0.0 && < 0.2,
-                     semigroups  >= 0.8 && < 0.10,
+                     semigroups  >= 0.8 && < 0.16,
                      TypeCompose >= 0.3 && < 0.10
-    Extensions:      Arrows
-                     EmptyDataDecls
-                     FlexibleContexts
-                     FlexibleInstances
-                     GADTs
-                     GeneralizedNewtypeDeriving
-                     ImpredicativeTypes
-                     KindSignatures
-                     MultiParamTypeClasses
-                     Rank2Types
-                     TypeFamilies
-                     TypeOperators
+    if impl(ghc >= 7.8) {
+        -- Role annotations are only supported (and needed) from 7.8 onwards.
+        Extensions:    Arrows
+                       CPP
+                       EmptyDataDecls
+                       FlexibleContexts
+                       FlexibleInstances
+                       GADTs
+                       GeneralizedNewtypeDeriving
+                       ImpredicativeTypes
+                       KindSignatures
+                       MultiParamTypeClasses
+                       Rank2Types
+                       RoleAnnotations
+                       TypeFamilies
+                       TypeOperators
+    } else {
+        Extensions:    Arrows
+                       CPP
+                       EmptyDataDecls
+                       FlexibleContexts
+                       FlexibleInstances
+                       GADTs
+                       GeneralizedNewtypeDeriving
+                       ImpredicativeTypes
+                       KindSignatures
+                       MultiParamTypeClasses
+                       Rank2Types
+                       TypeFamilies
+                       TypeOperators
+    }
+    GHC-Options:     -fcontext-stack=22
     Exposed-Modules: FRP.Grapefruit.Circuit
                      FRP.Grapefruit.Setup
                      FRP.Grapefruit.Signal
diff --git a/src/Internal/Signal/Discrete.hs-boot b/src/Internal/Signal/Discrete.hs-boot
--- a/src/Internal/Signal/Discrete.hs-boot
+++ b/src/Internal/Signal/Discrete.hs-boot
@@ -6,4 +6,8 @@
 ) where
 
     -- * Discrete signal type
+#if MIN_VERSION_base(4,7,0)
+    -- GHC >= 7.8
+    type role DSignal phantom representational
+#endif
     data DSignal era val
diff --git a/src/Internal/Signal/Segmented.hs-boot b/src/Internal/Signal/Segmented.hs-boot
--- a/src/Internal/Signal/Segmented.hs-boot
+++ b/src/Internal/Signal/Segmented.hs-boot
@@ -12,6 +12,10 @@
     import {-# SOURCE #-} Internal.Signal.Discrete as DSignal
 
     -- * Segmented signal type
+#if MIN_VERSION_base(4,7,0)
+    -- GHC >= 7.8
+    type role SSignal phantom representational
+#endif
     data SSignal era val = SSignal val (DSignal era val)
 
     instance Functor (SSignal era)
