diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,18 @@
 
+
+0.5.0 to 0.6.0:
+ 
+  * Updated to track changes in Wumpus-Basic.
+
+0.4.0 to 0.5.0:
+
+  * Updated to track changes in Wumpus-Basic. Nothing new.
+
+0.3.0 to 0.4.0:
+
+  * Updated to track changes in Wumpus-Basic. Nothing new.
+
+
 0.2.0 to 0.3.0
 
   * Updated to track changes in Wumpus-Basic. No new 
diff --git a/demo/Demo01.hs b/demo/Demo01.hs
--- a/demo/Demo01.hs
+++ b/demo/Demo01.hs
@@ -11,31 +11,22 @@
 import System.Directory
 
 
-tree1 :: Tree Char
-tree1 = Node 'A' [Node 'B' bs, Node 'F' fs]
-  where
-   bs = [Node 'C' [], Node 'D' [], Node 'E' []]
-   fs = [Node 'G' [Node 'H' [], Node 'I' [], Node 'J' []]]
 
-tree2 :: Tree Char
-tree2 = Node 'A' [Node 'B' bs, Node 'F' [], Node 'G' gs]
-  where
-   bs = [Node 'C' [], Node 'D' [], Node 'E' []]
-   gs = [Node 'H' [], Node 'I' [], Node 'J' []]
 
 
 
-
-
 main :: IO ()
 main = createDirectoryIfMissing True "./out/"
     >> writeEPS_TreePicture "./out/tree01.eps"  pic1
     >> writeSVG_TreePicture "./out/tree01.svg"  pic1
     >> writeEPS_TreePicture "./out/tree02.eps"  pic2
     >> writeSVG_TreePicture "./out/tree02.svg"  pic2
-
-
-
+    >> writeEPS_TreePicture "./out/tree03.eps"  pic3
+    >> writeSVG_TreePicture "./out/tree03.svg"  pic3
+    >> writeEPS_TreePicture "./out/tree04.eps"  pic4
+    >> writeSVG_TreePicture "./out/tree04.svg"  pic4
+    >> writeEPS_TreePicture "./out/tree05.eps"  pic5
+    >> writeSVG_TreePicture "./out/tree05.svg"  pic5
 
 
 pic1 :: TreePicture
@@ -44,3 +35,98 @@
 pic2 :: TreePicture
 pic2 = drawTreePicture (diskNode red) (standardContext 24) (uniformScaling 30) tree2
 
+pic3 :: TreePicture
+pic3 = drawTreePicture charNode (standardContext 14) (uniformScaling 30) tree3
+
+pic4 :: TreePicture
+pic4 = drawTreePicture (circleNode black) 
+                       (standardContext 24) 
+                       (ScaleFactors 20 30) 
+                       tree4
+pic5 :: TreePicture
+pic5 = drawTreePicture (circleNode black) 
+                       (standardContext 24) 
+                       (ScaleFactors 20 30) 
+                       tree5
+
+
+tree1 :: Tree Char
+tree1 = Node 'A' [Node 'B' bs, Node 'F' fs]
+  where
+   bs = [Node 'C' [], Node 'D' [], Node 'E' []]
+   fs = [Node 'G' [Node 'H' [], Node 'I' [], Node 'J' []]]
+
+tree2 :: Tree Char
+tree2 = Node 'A' [Node 'B' bs, Node 'F' [], Node 'G' gs]
+  where
+   bs = [Node 'C' [], Node 'D' [], Node 'E' []]
+   gs = [Node 'H' [], Node 'I' [], Node 'J' []]
+
+-- This is the tree from Andrew Kennedy's 
+-- /Functional Pearl Drawing Trees/
+--
+-- Currently Wumpus-tree cannot render in the /family tree/ style.
+--
+tree3 :: Tree Char
+tree3 = Node 'A' [a1, a2, a3]
+  where
+    a1 = Node 'B' [b1, b2]
+    a2 = Node 'S' [b3,b4]
+    a3 = Node 'o' [b5]
+    b1 = Node 'C' [leaf 'D', c1]
+    b2 = Node 'P' [leaf 'Q', leaf 'R']
+    b3 = Node 'T' [leaf 'U', leaf 'V', c2]
+    b4 = Node 'e' [c3, leaf 'h', c4]
+    b5 = Node 'p' [c5, c6, leaf '2']
+    c1 = Node 'E' [d1]
+    c2 = Node 'W' [d2, d3]
+    c3 = Node 'f' [leaf 'g']
+    c4 = Node 'i' [d4]
+    c5 = Node 'q' [leaf 'r', leaf 's', leaf 't', leaf 'u']
+    c6 = Node 'v' [leaf 'w', d5, leaf '0', leaf '1']
+    d1 = Node 'F' [leaf 'G', e1, leaf 'M', e2]
+    d2 = Node 'X' [leaf 'Y']
+    d3 = Node 'Z' [leaf 'a', leaf 'b', leaf 'c', leaf 'd']
+    d4 = Node 'j' [leaf 'k', leaf 'l', leaf 'm', leaf 'n']
+    d5 = Node 'x' [leaf 'y', leaf 'z'] 
+    e1 = Node 'H' [leaf 'I', leaf 'J', leaf 'K', leaf 'L']
+    e2 = Node 'N' [leaf 'O']
+
+leaf :: a -> Tree a
+leaf a = Node a []
+
+
+-- This is the tree (a) T3 from Buchheim, Junger and Leipert
+-- /Improving Walker\'s Algorithm to Run in Linear Time/.
+-- 
+tree4 :: Tree Int
+tree4 = Node 1 [a1, a2]
+  where
+    a1 = Node  2 [b1]
+    a2 = Node  3 [b2, b3]
+    b1 = Node  4 [c1]
+    b2 = Node  5 [c2]
+    b3 = Node  6 [leaf 9, c3]
+    c1 = Node  7 [d1]
+    c2 = Node  8 [leaf 12]
+    c3 = Node 10 [d2] 
+    d1 = Node 11 [leaf 14]
+    d2 = Node 13 [leaf 15]
+
+-- This is the tree (b) T3 from Buchheim, Junger and Leipert
+-- /Improving Walker\'s Algorithm to Run in Linear Time/.
+-- 
+-- The generated picture is different - Wumpus-Tree only evenly
+-- spaces the leaves, it looks like the trees in that paper are 
+-- evenly spaced at the interior nodes too.
+-- 
+tree5 :: Tree Int
+tree5 = Node 1 [a1, leaf 3, leaf 4, leaf 5, a2, leaf 7, leaf 8, leaf 9, a3]
+  where
+    a1 = Node  2 [leaf 11, leaf 12, leaf 13, leaf 14, leaf 15, leaf 16
+                 , leaf 17, leaf 18, leaf 19, leaf 20, b1]
+    a2 = Node  6 [leaf 22]
+    a3 = Node 10 [b2]
+    b1 = Node 21 [leaf 24, leaf 25, leaf 26, leaf 27, leaf 28, leaf 29
+                 ,leaf 30, leaf 31, leaf 32, leaf 33, leaf 34]
+    b2 = Node 23 [leaf 35]
diff --git a/src/Wumpus/Tree.hs b/src/Wumpus/Tree.hs
--- a/src/Wumpus/Tree.hs
+++ b/src/Wumpus/Tree.hs
@@ -107,14 +107,9 @@
                 -> Tree a 
                 -> TreePicture
 drawTreePicture drawF ctx sfactors tree = 
-    post $ drawTree drawF ctx $ design funs tree
+    liftToPictureU $ drawTree drawF ctx $ design funs tree
   where
     funs = scalingFunctions sfactors
-    post f = let xs = f [] in 
-             if null xs then errK else frame xs
-                        
-errK :: a
-errK = error "treePicture - empty tree drawing." 
 
 
 scalingFunctions :: ScaleFactors -> (Double -> Double, Int -> Double)
@@ -153,7 +148,7 @@
 -- Suitable for printing the shape of a tree, ignoring the data.
 --
 circleNode :: RGBi -> (a -> TreeNode)
-circleNode rgb = \_ pt -> localCtxObj (primaryColour rgb) (dotCircle pt)
+circleNode rgb = \_ pt -> localDF (primaryColour rgb) (dotCircle pt)
 
 
 -- | Tree nodes with a filled circle.
@@ -161,7 +156,7 @@
 -- Suitable for printing the shape of a tree, ignoring the data.
 --
 diskNode :: RGBi -> (a -> TreeNode)
-diskNode rgb = \_ pt -> localCtxObj (secondaryColour rgb) (dotDisk pt)
+diskNode rgb = \_ pt -> localDF (secondaryColour rgb) (dotDisk pt)
 
 
 
diff --git a/src/Wumpus/Tree/Draw.hs b/src/Wumpus/Tree/Draw.hs
--- a/src/Wumpus/Tree/Draw.hs
+++ b/src/Wumpus/Tree/Draw.hs
@@ -41,7 +41,7 @@
 
 drawTop :: (a -> TreeNode) -> CoordTree Double a -> Drawing Double ()
 drawTop fn (Node (pt,a) ns) = do 
-    ancr <- drawAtImg pt (fn a)
+    ancr <- drawi $ fn a `ati` pt
     mapM_ (draw1 fn ancr) ns
 
 draw1 :: (a -> TreeNode) 
@@ -49,7 +49,7 @@
       -> CoordTree Double a 
       -> Drawing Double ()
 draw1 fn ancr_from (Node (pt,a) ns) = do
-    ancr <- drawAtImg pt (fn a)
+    ancr <- drawi $ fn a `ati` pt
     draw $ connector ancr_from ancr
     mapM_ (draw1 fn ancr) ns   
 
diff --git a/src/Wumpus/Tree/VersionNumber.hs b/src/Wumpus/Tree/VersionNumber.hs
--- a/src/Wumpus/Tree/VersionNumber.hs
+++ b/src/Wumpus/Tree/VersionNumber.hs
@@ -22,7 +22,7 @@
 
 -- | Version number
 --
--- > (0,6,0)
+-- > (0,7,0)
 --
 wumpus_tree_version :: (Int,Int,Int)
-wumpus_tree_version = (0,6,0)
+wumpus_tree_version = (0,7,0)
diff --git a/wumpus-tree.cabal b/wumpus-tree.cabal
--- a/wumpus-tree.cabal
+++ b/wumpus-tree.cabal
@@ -1,5 +1,5 @@
 name:             wumpus-tree
-version:          0.6.0
+version:          0.7.0
 license:          BSD3
 license-file:     LICENSE
 copyright:        Stephen Tetley <stephen.tetley@gmail.com>
@@ -13,34 +13,16 @@
   .
   Draw trees represented by Data.Tree, output SVG or EPS. The 
   output should be quite good - no overlapping edges, identical 
-  subtrees should have the same shape.
+  subtrees should have the same shape, leaf nodes evenly spaced.
   .
   .
   Changelog:
   .
-  0.5.0 to 0.6.0:
+  0.6.0 to 0.7.0:
   . 
-  * Updated to track changes in Wumpus-Basic.
-  .
-  0.4.0 to 0.5.0:
-  .
-  * Updated to track changes in Wumpus-Basic. Nothing new.
-  .
-  0.3.0 to 0.4.0:
-  .
-  * Updated to track changes in Wumpus-Basic. Nothing new.
-  .
-  0.2.0 to 0.3.0:
-  .
-  * Updated to track changes in Wumpus-Basic. No new 
-    functionality.
-  .
-  0.1.0 to 0.2.0:
-  .
-  * Changed internals to use ConsDrawing monad as Wumpus-Basic
-    has changed.
+  * More example trees in Demo01.hs.
   .
-  * Internal change to use AGraphic rather than MGraphicF 
+  * Updated to track changes in Wumpus-Basic.
   .
   .
 build-type:         Simple
@@ -57,8 +39,8 @@
   build-depends:      base              <  5, 
                       containers        >= 0.3.0     && < 0.4.0,
                       vector-space      >= 0.6,
-                      wumpus-core       == 0.32.0,
-                      wumpus-basic      == 0.7.0
+                      wumpus-core       == 0.33.0,
+                      wumpus-basic      == 0.8.0
 
   
   exposed-modules:
