diff --git a/GraphRewriting/Layout/Geometry.hs b/GraphRewriting/Layout/Geometry.hs
--- a/GraphRewriting/Layout/Geometry.hs
+++ b/GraphRewriting/Layout/Geometry.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UnicodeSyntax #-}
 module GraphRewriting.Layout.Geometry where
 
 import Data.Vector.V2
diff --git a/GraphRewriting/Layout/PortSpec.hs b/GraphRewriting/Layout/PortSpec.hs
--- a/GraphRewriting/Layout/PortSpec.hs
+++ b/GraphRewriting/Layout/PortSpec.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UnicodeSyntax, FlexibleContexts #-}
 module GraphRewriting.Layout.PortSpec
 	(module GraphRewriting.Layout.PortSpec,
 	 module GraphRewriting.Layout.Position,
diff --git a/GraphRewriting/Layout/Position.hs b/GraphRewriting/Layout/Position.hs
--- a/GraphRewriting/Layout/Position.hs
+++ b/GraphRewriting/Layout/Position.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UnicodeSyntax #-}
 module GraphRewriting.Layout.Position
 	(module GraphRewriting.Layout.Position,
 	 module Data.Vector.V2,
diff --git a/GraphRewriting/Layout/RotPortSpec.hs b/GraphRewriting/Layout/RotPortSpec.hs
--- a/GraphRewriting/Layout/RotPortSpec.hs
+++ b/GraphRewriting/Layout/RotPortSpec.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UnicodeSyntax, FlexibleContexts #-}
 module GraphRewriting.Layout.RotPortSpec
 	(module GraphRewriting.Layout.RotPortSpec,
 	 module GraphRewriting.Layout.Position,
diff --git a/GraphRewriting/Layout/Rotation.hs b/GraphRewriting/Layout/Rotation.hs
--- a/GraphRewriting/Layout/Rotation.hs
+++ b/GraphRewriting/Layout/Rotation.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE UnicodeSyntax #-}
 module GraphRewriting.Layout.Rotation
 	(module GraphRewriting.Layout.Rotation,
 	 module Data.View)
diff --git a/GraphRewriting/Layout/Wrapper.hs b/GraphRewriting/Layout/Wrapper.hs
--- a/GraphRewriting/Layout/Wrapper.hs
+++ b/GraphRewriting/Layout/Wrapper.hs
@@ -1,5 +1,6 @@
+{-# LANGUAGE UnicodeSyntax, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts #-}
 module GraphRewriting.Layout.Wrapper
-	(Wrapper, wrapGraph, wrappee, updateWrappee,
+	(Wrapper (..), wrapGraph, wrappee, updateWrappee,
 	 module Data.View,
 	 module GraphRewriting.Graph.Types,
 	 module GraphRewriting.Layout.Position,
@@ -23,23 +24,19 @@
 -- | Wraps a value of type @w@, augmenting it with layout information
 data Wrapper w = Wrapper {wRot ∷ Rotation, wPos ∷ Position, wrappee ∷ w}
 
-instance View w (Wrapper w) where
-	inspect = wrappee
-	update = updateWrappee
+instance View v n ⇒ View v (Wrapper n) where
+	inspect = inspect . wrappee
+	adjust f w = w {wrappee = adjust f $ wrappee w}
 
+instance PortSpec n ⇒ PortSpec (Wrapper n) where portSpec = portSpec . wrappee
+
 instance View Rotation (Wrapper n) where
 	inspect = wRot
 	update v w = w {wRot = v}
 
-instance PortSpec n ⇒ PortSpec (Wrapper n) where portSpec = portSpec . wrappee
-
 instance View Position (Wrapper n) where
 	inspect = wPos
 	update v w = w {wPos = v}
-
-instance View [Port] n ⇒ View [Port] (Wrapper n) where
-	inspect = inspect . wrappee
-	adjust f w = w {wrappee = adjust f $ wrappee w}
 
 updateWrappee v n = n {wrappee = v}
 
diff --git a/graph-rewriting-layout.cabal b/graph-rewriting-layout.cabal
--- a/graph-rewriting-layout.cabal
+++ b/graph-rewriting-layout.cabal
@@ -1,5 +1,5 @@
 Name:          graph-rewriting-layout
-Version:       0.4.5
+Version:       0.5.0
 Copyright:     (c) 2010, Jan Rochel
 License:       BSD3
 License-File:  LICENSE
@@ -15,7 +15,7 @@
 
 Library
   Build-Depends:
-    base >= 4 && < 4.5,
+    base >= 4 && < 4.6,
     base-unicode-symbols >= 0.2 && < 0.3,
     graph-rewriting >= 0.5 && < 0.7,
     AC-Vector >= 2.3 && < 2.4
@@ -37,4 +37,5 @@
     FlexibleContexts
     MultiParamTypeClasses
     TypeSynonymInstances
+    OverlappingInstances
   GHC-Options: -fno-warn-duplicate-exports
