diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,26 +1,28 @@
 Copyright © 2007–2009 Brandenburgische Technische Universität Cottbus
-Copyright © 2011–2012 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-ui.cabal b/grapefruit-ui.cabal
--- a/grapefruit-ui.cabal
+++ b/grapefruit-ui.cabal
@@ -1,34 +1,36 @@
 Name:          grapefruit-ui
-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-ui/0.1.0.4/grapefruit-ui-0.1.0.4.tar.gz
+Package-URL:   http://hackage.haskell.org/packages/archive/grapefruit-ui/0.1.0.5/grapefruit-ui-0.1.0.5.tar.gz
 Synopsis:      Declarative user interface programming
-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 user interface support. To make use of it, it has to be
-               complemented by a UI backend. It is possible to have different UI backends
-               implementing the same general interface on top of different UI toolkits. At the
-               moment, the only backend is one based on GTK+. This is provided by the
+               This package contains general user interface support. To make use
+               of it, it has to be complemented by a UI backend. It is possible
+               to have different UI backends implementing the same general
+               interface on top of different UI toolkits. At the moment, the
+               only backend is one based on GTK+. This is provided by the
                grapefruit-ui-gtk package.
 Category:      FRP, Reactivity, GUI, User Interfaces
 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,
@@ -38,14 +40,28 @@
                      fraction           >= 0.0.1 && < 0.2,
                      grapefruit-frp     >= 0.1   && < 0.2,
                      grapefruit-records >= 0.1   && < 0.2
-    Extensions:      Arrows
-                     EmptyDataDecls
-                     FlexibleContexts
-                     GADTs
-                     GeneralizedNewtypeDeriving
-                     Rank2Types
-                     TypeFamilies
-                     TypeOperators
+    if impl(ghc >= 7.8) {
+        -- Role annotations are only supported (and needed) from 7.8 onwards.
+        Extensions:      Arrows
+                         CPP
+                         EmptyDataDecls
+                         FlexibleContexts
+                         GADTs
+                         GeneralizedNewtypeDeriving
+                         Rank2Types
+                         RoleAnnotations
+                         TypeFamilies
+                         TypeOperators
+    } else {
+        Extensions:      Arrows
+                         EmptyDataDecls
+                         FlexibleContexts
+                         GADTs
+                         GeneralizedNewtypeDeriving
+                         Rank2Types
+                         TypeFamilies
+                         TypeOperators
+    }
     Exposed-Modules: Graphics.UI.Grapefruit.Circuit
                      Graphics.UI.Grapefruit.Comp
                      Graphics.UI.Grapefruit.Interfacing
diff --git a/src/Internal/UICircuit.hs-boot b/src/Internal/UICircuit.hs-boot
--- a/src/Internal/UICircuit.hs-boot
+++ b/src/Internal/UICircuit.hs-boot
@@ -4,4 +4,8 @@
 
 ) where
 
+#if MIN_VERSION_base(4,7,0)
+    -- GHC >= 7.8
+    type role UICircuit nominal nominal phantom nominal nominal
+#endif
     data UICircuit item uiBackend era i o
diff --git a/src/Internal/UIItem.hs-boot b/src/Internal/UIItem.hs-boot
--- a/src/Internal/UIItem.hs-boot
+++ b/src/Internal/UIItem.hs-boot
@@ -9,6 +9,10 @@
 
     import {-# SOURCE #-} Internal.UICircuit as UICircuit
 
+#if MIN_VERSION_base(4,7,0)
+    -- GHC >= 7.8
+    type role UIItem nominal nominal phantom nominal nominal
+#endif
     newtype UIItem item uiBackend era i o = UIItem (UICircuit item uiBackend era i o)
 
     type family Placement item uiBackend :: *
