diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,4 +1,12 @@
-hcg-minus-cairo -- cairo rendering for hcg-minus
+hcg-minus-cairo
+===============
 
-(c) rohan drape, 2009-2011
-    gpl, http://gnu.org/copyleft/
+[cairo][cairo] rendering for [hcg-minus][hcg-minus]
+
+[cairo]: http://cairographics.org/
+[hcg-minus]: http://rd.slavepianos.org/?t=hcg-minus
+
+© [rd][rd], 2009-2013, [gpl][gpl]
+
+[rd]: http://rd.slavepianos.org/
+[gpl]: http://gnu.org/copyleft/
diff --git a/Render/CG/Minus.hs b/Render/CG/Minus.hs
--- a/Render/CG/Minus.hs
+++ b/Render/CG/Minus.hs
@@ -2,11 +2,11 @@
 module Render.CG.Minus where
 
 import qualified Codec.Binary.UTF8.String as U {- utf8-string -}
-import Data.CG.Minus
-import Data.CG.Minus.Colour
-import Data.Colour
+import Data.CG.Minus {- hcg-minus -}
+import Data.CG.Minus.Colour {- hcg-minus -}
+import Data.Colour {- colour -}
 import qualified Graphics.Rendering.Cairo as C {- cairo -}
-import System.FilePath
+import System.FilePath {- filepath -}
 
 -- * Paths
 
@@ -19,10 +19,10 @@
 line l =
   case l of
     [] -> nil
-    (p0:pp) -> do let (x0,y0) = pt_xy p0
-                  C.moveTo x0 y0
-                  let f p = let (x,y) = pt_xy p in C.lineTo x y
-                  mapM_ f pp
+    Pt x0 y0 : pp ->
+        do C.moveTo x0 y0
+           let f (Pt x y) = C.lineTo x y
+           mapM_ f pp
 
 -- | Variant of 'line' that runs 'C.closePath'.
 polygon :: Ls R -> C.Render ()
@@ -35,16 +35,12 @@
 -- Runs 'C.fill' on each square.
 points :: R -> Ls R -> C.Render ()
 points n l = do
-  let f p = do let (x,y) = pt_xy p
-               C.rectangle x y n n
-               C.fill
+  let f (Pt x y) = C.rectangle x y n n >> C.fill
   mapM_ f l
 
 -- | Circle centred at 'Pt' with radius 'R'.
 circle :: Pt R -> R -> C.Render ()
-circle o z =
-    let (x,y) = pt_xy o
-    in C.arc x y z 0 (2 * pi)
+circle (Pt x y) z = C.arc x y z 0 (2 * pi)
 
 -- * Context & drawing
 
@@ -85,8 +81,7 @@
 -- | Render rectangle given colour 'Ca', upper-left 'Pt' and
 -- /(width,height)/.
 rect :: Ca -> Pt R -> (R,R) -> C.Render ()
-rect c p (w,h) = do
-  let (x,y) = pt_xy p
+rect c (Pt x y) (w,h) = do
   C.rectangle x y w h
   pen 0.05 c
   C.stroke
@@ -95,9 +90,8 @@
 
 -- | Render text 'String' in colour 'Ca' at 'Pt' in font size /sz/.
 text :: Ca -> Pt R -> R -> String -> C.Render ()
-text c p sz txt = do
-  let (x,y) = pt_xy p
-      (r,g,b,_) = unCa c
+text c (Pt x y) sz txt = do
+  let (r,g,b,_) = unCa c
   C.save
   C.selectFontFace "Times" C.FontSlantNormal C.FontWeightNormal
   C.setFontSize sz
diff --git a/Render/CG/Minus/Arrow.hs b/Render/CG/Minus/Arrow.hs
--- a/Render/CG/Minus/Arrow.hs
+++ b/Render/CG/Minus/Arrow.hs
@@ -1,10 +1,11 @@
 -- | Rendering of "Data.CG.Minus.Arrow".
 module Render.CG.Minus.Arrow where
 
-import Data.CG.Minus
-import Data.CG.Minus.Arrow
-import Data.CG.Minus.Colour
-import qualified Graphics.Rendering.Cairo as C
+import Data.CG.Minus {- hcg-minus -}
+import Data.CG.Minus.Arrow {- hcg-minus -}
+import Data.CG.Minus.Colour {- hcg-minus -}
+import qualified Graphics.Rendering.Cairo as C {- cairo -}
+
 import Render.CG.Minus
 
 arrow_strk :: Ca -> C.Render ()
@@ -16,24 +17,24 @@
 -- | Render 'Ln' with solid arrow tip at endpoint.  Arrow tip
 -- co-ordinates are given by 'arrow_coord'.
 arrow_ep :: R -> R -> Ca -> Ln R -> C.Render ()
-arrow_ep n a c l = do
-  let (p0,p1) = ln_pt l
-      (p2,p3) = arrow_coord l n a
-  line [p0,ln_midpoint (ln p2 p3)]
+arrow_ep n a c ln = do
+  let Ln p0 p1 = ln
+      (p2,p3) = arrow_coord ln n a
+  line [p0,ln_midpoint (Ln p2 p3)]
   arrow_strk c
   polygon [p2,p1,p3]
   C.fill
 
 -- | Variant of 'arrow_ep' to render 'Ls' as sequence of arrows.
 arrows_ep :: R -> R -> Ca -> Ls R -> C.Render ()
-arrows_ep n a c xs = mapM_ (arrow_ep n a c) (zipWith ln xs (tail xs))
+arrows_ep n a c xs = mapM_ (arrow_ep n a c) (zipWith Ln xs (tail xs))
 
 -- | Variant of 'arrow_ep' with draws tip at mid-point of 'Ln'.
 arrow_mp :: R -> R -> Ca -> Ln R -> C.Render ()
-arrow_mp n a c l = do
-  let (p0,p1) = ln_pt l
-      p1' = ln_midpoint (ln p0 (pt_linear_extension n l))
-      (p2,p3) = arrow_coord (ln p0 p1') n a
+arrow_mp n a c ln = do
+  let Ln p0 p1 = ln
+      p1' = ln_midpoint (Ln p0 (pt_linear_extension n ln))
+      (p2,p3) = arrow_coord (Ln p0 p1') n a
   line [p0,p1]
   arrow_strk c
   polygon [p2,p1',p3]
@@ -41,4 +42,4 @@
 
 -- | Variant of 'arrow_mp' to render 'Ls' as sequence of arrows.
 arrows_mp :: R -> R -> Ca -> Ls R -> C.Render ()
-arrows_mp n a c xs = mapM_ (arrow_mp n a c) (zipWith ln xs (tail xs))
+arrows_mp n a c xs = mapM_ (arrow_mp n a c) (zipWith Ln xs (tail xs))
diff --git a/hcg-minus-cairo.cabal b/hcg-minus-cairo.cabal
--- a/hcg-minus-cairo.cabal
+++ b/hcg-minus-cairo.cabal
@@ -1,5 +1,5 @@
 name:              hcg-minus-cairo
-version:           0.12
+version:           0.14
 synopsis:          haskell cg (minus) (cairo rendering)
 description:       cg (minus) library (cairo rendering)
 license:           BSD3
@@ -14,7 +14,7 @@
 data-files:        README
 
 library
-  build-depends:   base==4.*,cairo,colour,hcg-minus==0.12.*,filepath,SG,utf8-string
+  build-depends:   base==4.*,cairo,colour,hcg-minus==0.14.*,filepath,utf8-string
   ghc-options:     -Wall -fwarn-tabs
   exposed-modules: Render.CG.Minus
                    Render.CG.Minus.Arrow
