diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,87 @@
 
+0.52.0 to 0.52.1:
+  
+  * Removed internal @(<>)@ format combinator that caused 
+    problems for GHC 7.4.
+  
+0.51.0 to 0.52.0:
+  
+  * Added limited support for adding SVG ids to text and 
+    Primitives.
+  
+  * Fixed types of @d2r@ and @r2d@ to Double for degrees, rather 
+    than a parametric (Real a, Floating a) type. Although this is
+    less general, it removes the burden of type annotating the 
+    common case.
+  
+  * Added the vector functions @orthoVec@, @vsum@ and @vdiff@ to 
+    @Core.Geometry@.
+  
+  * Re-named @clip@ to @clipPrimitive@
+  
+0.50.0 to 0.51.0:
+  
+  * Added special cases to handle continuity to the function 
+    @lineDirection@ in @Core.Geometry@.
+  
+  * Added @zeroVec@ to @Core.Geometry@.
+   
+  * Extended some Haddock documentation.
+  
+0.43.0 to 0.50.0:
+  
+  * Major change hence the version number jump - the notion of 
+    parametric unit has been removed from the @Picture@ objects 
+    (it for remains the @Geometric@ objects @Point2@, @Vec2@ etc.). 
+    Certain useful units, e.g. @em@ and @en@, are contextual on 
+    the \"current point size\", and having a parametric unit here 
+    was actually a hinderance to supporting units properly in 
+    higher-level layers. Now all Picture objects (those defined 
+    or exported from @Core.Picture@) are fixed to use Double 
+    - representing PostScript points. Higher level layers that 
+    intend to support alternative units must translate drawing 
+    objects to PostScript point measurements /before/ calling the 
+    Picture API. Geometric objects - objects defined in 
+    @Core.Geometry@, e.g. @Point2@, @Vec2@ - are still polymorphic 
+    on unit. 
+    
+  * Picture API change - Various function names changed.
+    @lineTo@ becomes @absLineTo@ and @curveTo@ becomes 
+    @absCurveTo@. The path builders are qualified with /Prim/, 
+    @vertexPath@ becomes @vertexPrimPath@, @vectorPath@ becomes 
+    @vectorPrimPath@, @emptyPath@ becomes @emptyPrimPath@ and 
+    @curvedPath@ becomes @curvedPrimPath@. @xlink@ becomes 
+    @xlinkPrim@.
+   
+  * API change - @PtSize@ data type replaced by @AfmUnit@ for font 
+    measurements.
+  
+  * API and representation change - clipping paths are represented
+    as @Primitive@ constructor rather than a @Picture@ constructor.
+    This should make them more useful. The type of the function 
+    @clip@ in @Core.Picture@ has likewise changed.
+  
+  * Picture API change - changed @primPath@ to @absPrimPath@, added
+    the functions @relPrimPath@, @relLineTo@, @relCurveTo@.
+   
+  * Added the class @Tolerance@ to @Core.Geometry@ and made the Eq 
+    instances of @Point2@, @Vec2@ and @BoundingBox@ tolerant. 
+    Tolerance accounts for a fairly lax equality on floating point 
+    numbers - it is suitable for Wumpus (printing) where high 
+    accuracy is needed.
+  
+0.42.1 to 0.43.0:
+  
+  * API change - the function @bezierCircle@ in @Core.Geometry@
+    has changed. It now implements a better method of drawing 
+    circles with Bezier curves and no longer needs the 
+    subvision factor. The old circle drawing function has been 
+    retained as @subdivisionCircle@ as it is useful for 
+    corroborating @bezierCircle@, but the general use of 
+    @subdivisionCircle@ should be avoided.
+   
+  * Added a function @bezierEllipse@ to @Core.Geometry@.
+
 0.42.0 to 0.42.1:
 
   * Fixed bug in the @curvedPath@ function in @Core.Picture@
diff --git a/src/Wumpus/Core/BoundingBox.hs b/src/Wumpus/Core/BoundingBox.hs
--- a/src/Wumpus/Core/BoundingBox.hs
+++ b/src/Wumpus/Core/BoundingBox.hs
@@ -5,7 +5,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.BoundingBox
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -89,8 +89,8 @@
   fmap f (BBox p0 p1) = BBox (fmap f p0) (fmap f p1)
 
 instance Format u => Format (BoundingBox u) where
-  format (BBox p0 p1) = parens (text "BBox" <+> text "ll=" <> format p0 
-                                            <+> text "ur=" <> format p1) 
+  format (BBox p0 p1) = parens (text "BBox" <+> text "ll=" >< format p0 
+                                            <+> text "ur=" >< format p1) 
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Wumpus/Core/Colour.hs b/src/Wumpus/Core/Colour.hs
--- a/src/Wumpus/Core/Colour.hs
+++ b/src/Wumpus/Core/Colour.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.Colour
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -63,8 +63,8 @@
 instance Format RGBi where
   format (RGBi 0   0   0)    = text "*black*"
   format (RGBi 255 255 255)  = text "*white*"
-  format (RGBi r   g   b)    = integral r <> comma <> integral g 
-                                            <> comma <> integral b
+  format (RGBi r   g   b)    = integral r >< comma >< integral g 
+                                          >< comma >< integral b
 
 
 --------------------------------------------------------------------------------
diff --git a/src/Wumpus/Core/Geometry.hs b/src/Wumpus/Core/Geometry.hs
--- a/src/Wumpus/Core/Geometry.hs
+++ b/src/Wumpus/Core/Geometry.hs
@@ -7,7 +7,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.Geometry
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -362,7 +362,7 @@
   format (V2 a b) = parens (text "Vec" <+> format a <+> format b)
 
 instance Format u => Format (Point2 u) where
-  format (P2 a b) = parens (format a <> comma <+> format b)
+  format (P2 a b) = parens (format a >< comma <+> format b)
 
 instance Format u => Format (Matrix3'3 u) where
   format (M3'3 a b c  d e f  g h i) = 
@@ -374,7 +374,7 @@
 
 
 instance Format Radian where
-  format (Radian d) = double d <> text ":rad"
+  format (Radian d) = double d >< text ":rad"
 
 --------------------------------------------------------------------------------
 -- Vector space instances
diff --git a/src/Wumpus/Core/GraphicProps.hs b/src/Wumpus/Core/GraphicProps.hs
--- a/src/Wumpus/Core/GraphicProps.hs
+++ b/src/Wumpus/Core/GraphicProps.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.GraphicProps
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -253,7 +253,7 @@
   format (CFill rgb)          = format rgb <+> text "Fill"
   format (CStroke _ rgb)      = format rgb <+> text "Closed-stroke"
   format (OStroke _ rgb)      = format rgb <+> text "Open-stroke"
-  format (CFillStroke f _ s)  = format f <+> text "Fill" <> char '/'
+  format (CFillStroke f _ s)  = format f <+> text "Fill" >< char '/'
                                          <+> format s <+> text "Stroke"   
 
 
@@ -265,7 +265,7 @@
 instance Format EllipseProps where
   format (EFill rgb)          = format rgb <+> text "Fill"
   format (EStroke _ rgb)      = format rgb <+> text "Stroke"
-  format (EFillStroke f _ s)  = format f <+> text "Fill" <> char '/'
+  format (EFillStroke f _ s)  = format f <+> text "Fill" >< char '/'
                             <+> format s <+> text "Stroke"   
 
 --------------------------------------------------------------------------------
diff --git a/src/Wumpus/Core/OutputSVG.hs b/src/Wumpus/Core/OutputSVG.hs
--- a/src/Wumpus/Core/OutputSVG.hs
+++ b/src/Wumpus/Core/OutputSVG.hs
@@ -4,7 +4,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.OutputSVG
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -472,21 +472,21 @@
 makeFontAttrs :: FontAttr -> Doc
 makeFontAttrs (FontAttr sz face) = 
     attr_font_family (svg_font_family face) <+> attr_font_size sz 
-                                            <> suffix (svg_font_style face) 
+                                            >< suffix (svg_font_style face) 
   where  
     suffix SVG_REGULAR      = empty
 
-    suffix SVG_BOLD         = space <> attr_font_weight "bold"
+    suffix SVG_BOLD         = space >< attr_font_weight "bold"
 
-    suffix SVG_ITALIC       = space <> attr_font_style "italic"
+    suffix SVG_ITALIC       = space >< attr_font_style "italic"
 
     suffix SVG_BOLD_ITALIC  = 
-        space <> attr_font_weight "bold" <+> attr_font_style "italic"
+        space >< attr_font_weight "bold" <+> attr_font_style "italic"
 
-    suffix SVG_OBLIQUE      = space <> attr_font_style "oblique"
+    suffix SVG_OBLIQUE      = space >< attr_font_style "oblique"
 
     suffix SVG_BOLD_OBLIQUE = 
-        space <> attr_font_weight "bold" <+> attr_font_style "oblique"
+        space >< attr_font_weight "bold" <+> attr_font_style "oblique"
 
 
 
diff --git a/src/Wumpus/Core/PictureInternal.hs b/src/Wumpus/Core/PictureInternal.hs
--- a/src/Wumpus/Core/PictureInternal.hs
+++ b/src/Wumpus/Core/PictureInternal.hs
@@ -5,7 +5,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.PictureInternal
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -417,19 +417,19 @@
 
 instance Format PrimPath where
    format (PrimPath vs ctm) = vcat [ hcat $ map format vs
-                                   , text "ctm=" <> format ctm ]
+                                   , text "ctm=" >< format ctm ]
 
 instance Format PrimPathSegment where
   format (RelCurveTo p1 p2 p3)  =
-    text "rel_curve_to " <> format p1 <+> format p2 <+> format p3
+    text "rel_curve_to " >< format p1 <+> format p2 <+> format p3
 
-  format (RelLineTo pt)         = text "rel_line_to  " <> format pt
+  format (RelLineTo pt)         = text "rel_line_to  " >< format pt
 
 instance Format PrimLabel where
   format (PrimLabel s opt_id ctm) = 
      vcat [ dquotes (format s)
           , maybe (char '_') text $ opt_id 
-          , text "ctm="           <> format ctm
+          , text "ctm="           >< format ctm
           ]
 
 instance Format LabelBody where
@@ -439,9 +439,9 @@
 
 
 instance Format PrimEllipse where
-  format (PrimEllipse hw hh ctm) =  text "hw="       <> format hw
-                                <+> text "hh="       <> format hh
-                                <+> text "ctm="      <> format ctm
+  format (PrimEllipse hw hh ctm) =  text "hw="       >< format hw
+                                <+> text "hh="       >< format hh
+                                <+> text "ctm="      >< format ctm
   
 
 instance Format XLink where
diff --git a/src/Wumpus/Core/SVGDoc.hs b/src/Wumpus/Core/SVGDoc.hs
--- a/src/Wumpus/Core/SVGDoc.hs
+++ b/src/Wumpus/Core/SVGDoc.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.SVGDoc
--- Copyright   :  (c) Stephen Tetley 2009-2011
+-- Copyright   :  (c) Stephen Tetley 2009-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -85,7 +85,7 @@
 
 
 escapeSpecial :: Int -> Doc
-escapeSpecial i = text "&#" <> int i <> char ';'
+escapeSpecial i = text "&#" >< int i >< char ';'
 
 
 -- Note - it is easier put particular attrs at the end (esp. d 
@@ -99,25 +99,25 @@
 svgElemB name attrs body = vcat [ open, indent 2 body, close ]
   where
     open  = angles (text name <+> attrs)
-    close = angles (char '/' <> text name)
+    close = angles (char '/' >< text name)
 
 svgElemB_no_attrs :: String -> Doc -> Doc
 svgElemB_no_attrs name body = vcat [ open, indent 2 body, close ]
   where
     open  = angles (text name)
-    close = angles (char '/' <> text name)
+    close = angles (char '/' >< text name)
 
 -- 1 line version of svgElemB
 --
 svgElemB1 :: String -> Doc -> Doc -> Doc
-svgElemB1 name attrs body = open <> body <> close
+svgElemB1 name attrs body = open >< body >< close
   where
     open  = angles (text name <+> attrs)
-    close = angles (char '/' <> text name)
+    close = angles (char '/' >< text name)
 
 
 svgAttr :: String -> Doc -> Doc
-svgAttr name val = text name <> char '=' <> dquotes val
+svgAttr name val = text name >< char '=' >< dquotes val
  
 dquoteText :: String -> Doc
 dquoteText = dquotes . text 
@@ -303,7 +303,7 @@
 
 val_rgb :: RGBi -> Doc
 val_rgb (RGBi r g b) = 
-    text "rgb" <> tupled [integral r, integral g, integral b]
+    text "rgb" >< tupled [integral r, integral g, integral b]
 
 
 -- | @ font-family=\"...\" @
@@ -384,8 +384,8 @@
 attr_stroke_dasharray = svgAttr "stroke-dasharray" . step 
   where
     step []         = empty
-    step [(a,b)]    = int a <> comma <> int b 
-    step ((a,b):xs) = int a <> comma <> int b <> step xs
+    step [(a,b)]    = int a >< comma >< int b 
+    step ((a,b):xs) = int a >< comma >< int b >< step xs
 
 -- | @ stroke-dasharray=\"none\" @
 --
@@ -400,7 +400,7 @@
 -- | @ clip_path="url(#...)" @
 --
 attr_clip_path :: String -> Doc
-attr_clip_path ss = svgAttr "clip-path" (text "url" <> parens (text $ '#':ss)) 
+attr_clip_path ss = svgAttr "clip-path" (text "url" >< parens (text $ '#':ss)) 
 
 
 -- | @ transform="..." @
@@ -411,7 +411,7 @@
 -- | @ matrix(..., ..., ..., ..., ..., ...) @
 --
 val_matrix :: Matrix3'3 Double -> Doc
-val_matrix mtrx = text "matrix" <> tupled (map dtruncFmt [a,b,c,d,e,f])
+val_matrix mtrx = text "matrix" >< tupled (map dtruncFmt [a,b,c,d,e,f])
   where
     (a,b,c,d,e,f) = deconsMatrix mtrx
 
@@ -427,4 +427,4 @@
 -- | @ translate(..., ..., ..., ..., ..., ...) @
 --
 val_translate :: DVec2 -> Doc
-val_translate (V2 x y) = text "translate" <> tupled [dtruncFmt x, dtruncFmt y]
+val_translate (V2 x y) = text "translate" >< tupled [dtruncFmt x, dtruncFmt y]
diff --git a/src/Wumpus/Core/Text/Base.hs b/src/Wumpus/Core/Text/Base.hs
--- a/src/Wumpus/Core/Text/Base.hs
+++ b/src/Wumpus/Core/Text/Base.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.Text.Base
--- Copyright   :  (c) Stephen Tetley 2010-2011
+-- Copyright   :  (c) Stephen Tetley 2010-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -135,8 +135,8 @@
 
 instance Format EscapedChar where
   format (CharLiteral c) = char c
-  format (CharEscInt i)  = text "&#" <> int i <> semicolon
-  format (CharEscName s) = text "&" <> text s <> semicolon
+  format (CharEscInt i)  = text "&#" >< int i  >< semicolon
+  format (CharEscName s) = text "&"  >< text s >< semicolon
 
 
 instance Monoid EscapedText where
diff --git a/src/Wumpus/Core/TrafoInternal.hs b/src/Wumpus/Core/TrafoInternal.hs
--- a/src/Wumpus/Core/TrafoInternal.hs
+++ b/src/Wumpus/Core/TrafoInternal.hs
@@ -4,7 +4,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.TrafoInternal
--- Copyright   :  (c) Stephen Tetley 2010-2011
+-- Copyright   :  (c) Stephen Tetley 2010-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -96,11 +96,11 @@
 
 instance Format PrimCTM where
   format (PrimCTM dx dy sx sy ang) = 
-      parens (text "CTM" <+> text "dx =" <> dtruncFmt dx
-                         <+> text "dy =" <> dtruncFmt dy
-                         <+> text "sx =" <> dtruncFmt sx 
-                         <+> text "sy =" <> dtruncFmt sy 
-                         <+> text "ang=" <> format ang  )
+      parens (text "CTM" <+> text "dx =" >< dtruncFmt dx
+                         <+> text "dy =" >< dtruncFmt dy
+                         <+> text "sx =" >< dtruncFmt sx 
+                         <+> text "sy =" >< dtruncFmt sy 
+                         <+> text "ang=" >< format ang  )
 
 
 
diff --git a/src/Wumpus/Core/Utils/FormatCombinators.hs b/src/Wumpus/Core/Utils/FormatCombinators.hs
--- a/src/Wumpus/Core/Utils/FormatCombinators.hs
+++ b/src/Wumpus/Core/Utils/FormatCombinators.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.Utils.FormatCombinators
--- Copyright   :  (c) Stephen Tetley 2010-2011
+-- Copyright   :  (c) Stephen Tetley 2010-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -21,7 +21,7 @@
   , Format(..)
   , empty
   , showsDoc
-  , (<>)
+  , (><)
   , (<+>)  
   , vconcat
   , separate
@@ -117,7 +117,7 @@
 
 instance Monoid Doc where
   mempty = empty
-  mappend = (<>)
+  mappend = (><)
 
 
 --------------------------------------------------------------------------------
@@ -136,7 +136,6 @@
 
 --------------------------------------------------------------------------------
         
-infixr 6 <>, <+>
 
 
 
@@ -151,13 +150,17 @@
 showsDoc = Doc1
 
 
+infixr 6 ><
+
 -- | Horizontally concatenate two documents with no space 
 -- between them.
 -- 
-(<>) :: Doc -> Doc -> Doc
-a <> b = Join a b 
+(><) :: Doc -> Doc -> Doc
+a >< b = Join a b 
 
 
+infixr 6 <+>
+
 -- | Horizontally concatenate two documents with a single space 
 -- between them.
 -- 
@@ -167,7 +170,7 @@
 -- | Vertical concatenate two documents with a line break.
 -- 
 vconcat :: Doc -> Doc -> Doc
-vconcat a b = a <> Line <> b
+vconcat a b = a >< Line >< b
 
 
 
@@ -176,12 +179,12 @@
 separate sep (a:as) = step a as
   where
     step acc []     = acc
-    step acc (x:xs) = step (acc <> sep <> x) xs
+    step acc (x:xs) = step (acc >< sep >< x) xs
 
 -- | Horizontally concatenate a list of documents with @(\<\>)@.
 --
 hcat :: [Doc] -> Doc
-hcat = foldr (<>) empty
+hcat = foldr (><) empty
 
 -- | Horizontally concatenate a list of documents with @(\<+\>)@.
 --
@@ -288,17 +291,17 @@
 punctuate :: Doc -> [Doc] -> Doc
 punctuate _ []     = empty
 punctuate _ [x]    = x
-punctuate s (x:xs) = x <> s <> punctuate s xs
+punctuate s (x:xs) = x >< s >< punctuate s xs
 
 
 -- | Enclose the final Doc within the first two.
 --
 -- There are no spaces between the documents:
 --
--- > enclose l r d = l <> d <> r
+-- > enclose l r d = l >< d >< r
 --
 enclose :: Doc -> Doc -> Doc -> Doc
-enclose l r d = l <> d <> r
+enclose l r d = l >< d >< r
 
 
 
diff --git a/src/Wumpus/Core/VersionNumber.hs b/src/Wumpus/Core/VersionNumber.hs
--- a/src/Wumpus/Core/VersionNumber.hs
+++ b/src/Wumpus/Core/VersionNumber.hs
@@ -3,7 +3,7 @@
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Wumpus.Core.VersionNumber
--- Copyright   :  (c) Stephen Tetley 2010-2011
+-- Copyright   :  (c) Stephen Tetley 2010-2012
 -- License     :  BSD3
 --
 -- Maintainer  :  stephen.tetley@gmail.com
@@ -22,7 +22,7 @@
 
 -- | Version number.
 --
--- > (0,52,0)
+-- > (0,52,1)
 --
 wumpus_core_version :: (Int,Int,Int)
-wumpus_core_version = (0,52,0)
+wumpus_core_version = (0,52,1)
diff --git a/wumpus-core.cabal b/wumpus-core.cabal
--- a/wumpus-core.cabal
+++ b/wumpus-core.cabal
@@ -1,5 +1,5 @@
 name:             wumpus-core
-version:          0.52.0
+version:          0.52.1
 license:          BSD3
 license-file:     LICENSE
 copyright:        Stephen Tetley <stephen.tetley@gmail.com>
@@ -12,9 +12,10 @@
   Wumpus-Core is a low-level library for generating static 2D 
   vector pictures, its salient feature is portability due to no 
   FFI dependencies. It can generate PostScript (EPS) files and SVG 
-  files. The generated PostScript code is plain and reasonably 
+  files. The generated PostScript code is plain and someways 
   efficient as the use of stack operations, i.e @gsave@ and 
-  @grestore@, is minimized. 
+  @grestore@, is minimized (unfortunately there is no sharing 
+  so the generated PostScript can be huge...).
   .
   Although Wumpus-Core only generates vector output, the generated 
   PostScript can be interpreted by GraphicsMagick or a similar 
@@ -24,8 +25,8 @@
   themselves are made from points. The usual affine 
   transformations (rotations, scaling, translations) can be
   applied to Pictures. Unlike PostScript there is no notion of a 
-  current point, Wumpus-Core builds pictures in a coordinate-free 
-  style. 
+  current point, Wumpus-Core builds pictures by direct 
+  positioning of each element. 
   .
   GENERAL DRAWBACKS...
   .
@@ -48,6 +49,11 @@
   .
   Changelog:
   . 
+  v0.52.0 to v0.52.1:
+  .
+  * Removed internal @(<>)@ format combinator that caused 
+    problems for GHC 7.4.
+  .
   v0.51.0 to v0.52.0:
   .
   * Added limited support for adding SVG ids to text and 
