diff --git a/demo/ColourCharts.hs b/demo/ColourCharts.hs
--- a/demo/ColourCharts.hs
+++ b/demo/ColourCharts.hs
@@ -40,7 +40,7 @@
 
 -- Note - this is code from an old project that needs tidying up...
 
-mkPic :: [(String,DRGB)] -> [DPoint2] -> DPicture 
+mkPic :: [(String,RGBi)] -> [DPoint2] -> DPicture 
 mkPic cs pts = fromMaybe errK $ 
                  drawGraphic $ concatH $ zipWith colourSample cs pts
   where
@@ -50,7 +50,7 @@
 scalePt w (P2 x y) = P2 (x*w) (y*12) 
 
 colourSample :: (Fractional u, Floating u, Ord u) 
-             => (String,DRGB) -> GraphicF u
+             => (String,RGBi) -> GraphicF u
 colourSample (name,rgb) = block `cc` lbl 
   where
     block = filledRectangle rgb  15 10
diff --git a/demo/ColourDefns.hs b/demo/ColourDefns.hs
--- a/demo/ColourDefns.hs
+++ b/demo/ColourDefns.hs
@@ -22,150 +22,150 @@
 
   ) where
 
-import qualified Wumpus.Basic.SVGColours        as SVG
-import qualified Wumpus.Basic.X11Colours        as X11
+import qualified Wumpus.Basic.Colour.SVGColours    as SVG
+import qualified Wumpus.Basic.Colour.X11Colours    as X11
 
-import Wumpus.Core.Colour ( DRGB )
+import Wumpus.Core.Colour ( RGBi )
 
 
-all_svg_colours :: [(String,DRGB)]
+all_svg_colours :: [(String,RGBi)]
 all_svg_colours = 
-  [ ("aliceBlue",               SVG.aliceBlue)
-  , ("antiqueWhite",            SVG.antiqueWhite)
+  [ ("alice_blue",              SVG.alice_blue)
+  , ("antique_white",           SVG.antique_white)
   , ("aqua",                    SVG.aqua)
   , ("aquamarine",              SVG.aquamarine)
   , ("azure",                   SVG.azure)
   , ("beige",                   SVG.beige)
   , ("bisque",                  SVG.bisque)
   , ("black",                   SVG.black)
-  , ("blanchedAlmond",          SVG.blanchedAlmond)
+  , ("blanched_almond",         SVG.blanched_almond)
   , ("blue",                    SVG.blue)
-  , ("blueViolet",              SVG.blueViolet)
+  , ("blue_violet",             SVG.blue_violet)
   , ("brown",                   SVG.brown)
   , ("burlywood",               SVG.burlywood)
-  , ("cadetBlue",               SVG.cadetBlue)
+  , ("cadet_blue",              SVG.cadet_blue)
   , ("chartreuse",              SVG.chartreuse)
   , ("chocolate",               SVG.chocolate)
   , ("coral",                   SVG.coral)
-  , ("cornflowerBlue",          SVG.cornflowerBlue)
+  , ("cornflower_blue",         SVG.cornflower_blue)
   , ("cornsilk",                SVG.cornsilk)
   , ("crimson",                 SVG.crimson)
   , ("cyan",                    SVG.cyan)
-  , ("darkBlue",                SVG.darkBlue)
-  , ("darkCyan",                SVG.darkCyan)
-  , ("darkGoldenrod",           SVG.darkGoldenrod)
-  , ("darkGray",                SVG.darkGray)
-  , ("darkGreen",               SVG.darkGreen)
-  , ("darkGrey",                SVG.darkGrey)
-  , ("darkKhaki",               SVG.darkKhaki)
-  , ("darkMagenta",             SVG.darkMagenta)
-  , ("darkOliveGreen",          SVG.darkOliveGreen)
-  , ("darkOrange",              SVG.darkOrange)
-  , ("darkOrchid",              SVG.darkOrchid)
-  , ("darkRed",                 SVG.darkRed)
-  , ("darkSalmon",              SVG.darkSalmon)
-  , ("darkSeaGreen",            SVG.darkSeaGreen)
-  , ("darkSlateBlue",           SVG.darkSlateBlue)
-  , ("darkSlateGray",           SVG.darkSlateGray)
-  , ("darkSlateGrey",           SVG.darkSlateGrey)
-  , ("darkTurquoise",           SVG.darkTurquoise)
-  , ("darkViolet",              SVG.darkViolet)
-  , ("deepPink",                SVG.deepPink)
-  , ("deepSkyBlue",             SVG.deepSkyBlue)
-  , ("dimGray",                 SVG.dimGray)
-  , ("dimGrey",                 SVG.dimGrey)
-  , ("dodgerBlue",              SVG.dodgerBlue)
+  , ("dark_blue",               SVG.dark_blue)
+  , ("dark_cyan",               SVG.dark_cyan)
+  , ("dark_goldenrod",          SVG.dark_goldenrod)
+  , ("dark_gray",               SVG.dark_gray)
+  , ("dark_green",              SVG.dark_green)
+  , ("dark_grey",               SVG.dark_grey)
+  , ("dark_khaki",              SVG.dark_khaki)
+  , ("dark_magenta",            SVG.dark_magenta)
+  , ("dark_olive_green",        SVG.dark_olive_green)
+  , ("dark_orange",             SVG.dark_orange)
+  , ("dark_orchid",             SVG.dark_orchid)
+  , ("dark_red",                SVG.dark_red)
+  , ("dark_salmon",             SVG.dark_salmon)
+  , ("dark_sea_green",          SVG.dark_sea_green)
+  , ("dark_slate_blue",         SVG.dark_slate_blue)
+  , ("dark_slate_gray",         SVG.dark_slate_gray)
+  , ("dark_slate_grey",         SVG.dark_slate_grey)
+  , ("dark_turquoise",          SVG.dark_turquoise)
+  , ("dark_violet",             SVG.dark_violet)
+  , ("deep_pink",               SVG.deep_pink)
+  , ("deep_sky_blue",           SVG.deep_sky_blue)
+  , ("dim_gray",                SVG.dim_gray)
+  , ("dim_grey",                SVG.dim_grey)
+  , ("dodger_blue",             SVG.dodger_blue)
   , ("firebrick",               SVG.firebrick)
-  , ("floralWhite",             SVG.floralWhite)
-  , ("forestGreen",             SVG.forestGreen)
+  , ("floral_white",            SVG.floral_white)
+  , ("forest_green",            SVG.forest_green)
   , ("fuchsia",                 SVG.fuchsia)
   , ("gainsboro",               SVG.gainsboro)
-  , ("ghostWhite",              SVG.ghostWhite)
+  , ("ghost_white",             SVG.ghost_white)
   , ("gold",                    SVG.gold)
   , ("goldenrod",               SVG.goldenrod)
   , ("gray",                    SVG.gray)
   , ("grey",                    SVG.grey)
   , ("green",                   SVG.green)
-  , ("greenYellow",             SVG.greenYellow)
+  , ("green_yellow",            SVG.green_yellow)
   , ("honeydew",                SVG.honeydew)
-  , ("hotPink",                 SVG.hotPink)
-  , ("indianRed",               SVG.indianRed)
+  , ("hot_pink",                SVG.hot_pink)
+  , ("indian_red",              SVG.indian_red)
   , ("indigo",                  SVG.indigo)
   , ("ivory",                   SVG.ivory)
   , ("khaki",                   SVG.khaki)
   , ("lavender",                SVG.lavender)
-  , ("lavenderBlush",           SVG.lavenderBlush)
-  , ("lawnGreen",               SVG.lawnGreen)
-  , ("lemonChiffon",            SVG.lemonChiffon)
-  , ("lightBlue",               SVG.lightBlue)
-  , ("lightCoral",              SVG.lightCoral)
-  , ("lightCyan",               SVG.lightCyan)
-  , ("lightGoldenrodYellow",    SVG.lightGoldenrodYellow)
-  , ("lightGray",               SVG.lightGray)
-  , ("lightGreen",              SVG.lightGreen)
-  , ("lightGrey",               SVG.lightGrey)
-  , ("lightPink",               SVG.lightPink)
-  , ("lightSalmon",             SVG.lightSalmon)
-  , ("lightSeaGreen",           SVG.lightSeaGreen)
-  , ("lightSkyBlue",            SVG.lightSkyBlue)
-  , ("lightSlateGray",          SVG.lightSlateGray)
-  , ("lightSlateGrey",          SVG.lightSlateGrey)
-  , ("lightSteelBlue",          SVG.lightSteelBlue)
-  , ("lightYellow",             SVG.lightYellow)
+  , ("lavender_blush",          SVG.lavender_blush)
+  , ("lawn_green",              SVG.lawn_green)
+  , ("lemon_chiffon",           SVG.lemon_chiffon)
+  , ("light_blue",              SVG.light_blue)
+  , ("light_coral",             SVG.light_coral)
+  , ("light_cyan",              SVG.light_cyan)
+  , ("light_goldenrod_yellow",  SVG.light_goldenrod_yellow)
+  , ("light_gray",              SVG.light_gray)
+  , ("light_green",             SVG.light_green)
+  , ("light_grey",              SVG.light_grey)
+  , ("light_pink",              SVG.light_pink)
+  , ("light_salmon",            SVG.light_salmon)
+  , ("light_sea_green",         SVG.light_sea_green)
+  , ("light_sky_blue",          SVG.light_sky_blue)
+  , ("light_slate_gray",        SVG.light_slate_gray)
+  , ("light_slate_grey",        SVG.light_slate_grey)
+  , ("light_steel_blue",        SVG.light_steel_blue)
+  , ("light_yellow",            SVG.light_yellow)
   , ("lime",                    SVG.lime)
-  , ("limeGreen",               SVG.limeGreen)
+  , ("lime_green",              SVG.lime_green)
   , ("linen",                   SVG.linen)
   , ("magenta",                 SVG.magenta)
   , ("maroon",                  SVG.maroon)
-  , ("mediumAquamarine",        SVG.mediumAquamarine)
-  , ("mediumBlue",              SVG.mediumBlue)
-  , ("mediumOrchid",            SVG.mediumOrchid)
-  , ("mediumPurple",            SVG.mediumPurple)
-  , ("mediumSeaGreen",          SVG.mediumSeaGreen)
-  , ("mediumSlateBlue",         SVG.mediumSlateBlue)
-  , ("mediumSpringGreen",       SVG.mediumSpringGreen)
-  , ("mediumTurquoise",         SVG.mediumTurquoise)
-  , ("mediumVioletRed",         SVG.mediumVioletRed)
-  , ("midnightBlue",            SVG.midnightBlue)
+  , ("medium_aquamarine",       SVG.medium_aquamarine)
+  , ("medium_blue",             SVG.medium_blue)
+  , ("medium_orchid",           SVG.medium_orchid)
+  , ("medium_purple",           SVG.medium_purple)
+  , ("medium_sea_green",        SVG.medium_sea_green)
+  , ("medium_slate_blue",       SVG.medium_slate_blue)
+  , ("medium_spring_green",     SVG.medium_spring_green)
+  , ("medium_turquoise",        SVG.medium_turquoise)
+  , ("medium_violet_red",       SVG.medium_violet_red)
+  , ("midnight_blue",           SVG.midnight_blue)
   , ("mintcream",               SVG.mintcream)
   , ("mistyrose",               SVG.mistyrose)
   , ("moccasin",                SVG.moccasin)
-  , ("navajoWhite",             SVG.navajoWhite)
+  , ("navajo_white",            SVG.navajo_white)
   , ("navy",                    SVG.navy)
-  , ("oldlace",                 SVG.oldlace)
+  , ("old_lace",                SVG.old_lace)
   , ("olive",                   SVG.olive)
-  , ("oliveDrab",               SVG.oliveDrab)
+  , ("olive_drab",              SVG.olive_drab)
   , ("orange",                  SVG.orange)
-  , ("orangeRed",               SVG.orangeRed)
+  , ("orange_red",              SVG.orange_red)
   , ("orchid",                  SVG.orchid)
-  , ("paleGoldenrod",           SVG.paleGoldenrod)
-  , ("paleGreen",               SVG.paleGreen)
-  , ("paleTurquoise",           SVG.paleTurquoise)
-  , ("paleVioletRed",           SVG.paleVioletRed)
-  , ("papayawhip",              SVG.papayawhip)
-  , ("peachpuff",               SVG.peachpuff)
+  , ("pale_goldenrod",          SVG.pale_goldenrod)
+  , ("pale_green",              SVG.pale_green)
+  , ("pale_turquoise",          SVG.pale_turquoise)
+  , ("pale_violet_red",         SVG.pale_violet_red)
+  , ("papaya_whip",             SVG.papaya_whip)
+  , ("peach_puff",              SVG.peach_puff)
   , ("peru",                    SVG.peru)
   , ("pink",                    SVG.pink)
   , ("plum",                    SVG.plum)
-  , ("powderBlue",              SVG.powderBlue)
+  , ("powder_blue",             SVG.powder_blue)
   , ("purple",                  SVG.purple)
   , ("red",                     SVG.red)
-  , ("rosyBrown",               SVG.rosyBrown)
-  , ("royalBlue",               SVG.royalBlue)
-  , ("saddleBrown",             SVG.saddleBrown)
+  , ("rosy_brown",              SVG.rosy_brown)
+  , ("royal_blue",              SVG.royal_blue)
+  , ("saddle_brown",            SVG.saddle_brown)
   , ("salmon",                  SVG.salmon)
-  , ("sandyBrown",              SVG.sandyBrown)
-  , ("seaGreen",                SVG.seaGreen)
+  , ("sandy_brown",             SVG.sandy_brown)
+  , ("sea_green",               SVG.sea_green)
   , ("seashell",                SVG.seashell)
   , ("sienna",                  SVG.sienna)
   , ("silver",                  SVG.silver)
-  , ("skyBlue",                 SVG.skyBlue)
-  , ("slateBlue",               SVG.slateBlue)
-  , ("slateGray",               SVG.slateGray)
-  , ("slateGrey",               SVG.slateGrey)
+  , ("sky_blue",                SVG.sky_blue)
+  , ("slate_blue",              SVG.slate_blue)
+  , ("slate_gray",              SVG.slate_gray)
+  , ("slate_grey",              SVG.slate_grey)
   , ("snow",                    SVG.snow)
-  , ("springGreen",             SVG.springGreen)
-  , ("steelBlue",               SVG.steelBlue)
+  , ("spring_green",            SVG.spring_green)
+  , ("steel_blue",              SVG.steel_blue)
   , ("tan",                     SVG.tan)
   , ("teal",                    SVG.teal)
   , ("thistle",                 SVG.thistle)
@@ -176,17 +176,17 @@
   , ("white",                   SVG.white)
   , ("whitesmoke",              SVG.whitesmoke)
   , ("yellow",                  SVG.yellow)
-  , ("yellowGreen",             SVG.yellowGreen)
+  , ("yellow_green",            SVG.yellow_green)
   ]
 
 
 
-all_x11_colours :: [(String,DRGB)]
+all_x11_colours :: [(String,RGBi)]
 all_x11_colours = 
-  [ ("antiqueWhite1",           X11.antiqueWhite1)
-  , ("antiqueWhite2",           X11.antiqueWhite2)
-  , ("antiqueWhite3",           X11.antiqueWhite3)
-  , ("antiqueWhite4",           X11.antiqueWhite4)
+  [ ("antique_white1",          X11.antique_white1)
+  , ("antique_white2",          X11.antique_white2)
+  , ("antique_white3",          X11.antique_white3)
+  , ("antique_white4",          X11.antique_white4)
   , ("aquamarine1",             X11.aquamarine1)
   , ("aquamarine2",             X11.aquamarine2)
   , ("aquamarine3",             X11.aquamarine3)
@@ -211,10 +211,10 @@
   , ("burlywood2",              X11.burlywood2)
   , ("burlywood3",              X11.burlywood3)
   , ("burlywood4",              X11.burlywood4)
-  , ("cadetBlue1",              X11.cadetBlue1)
-  , ("cadetBlue2",              X11.cadetBlue2)
-  , ("cadetBlue3",              X11.cadetBlue3)
-  , ("cadetBlue4",              X11.cadetBlue4)
+  , ("cadet_blue1",             X11.cadet_blue1)
+  , ("cadet_blue2",             X11.cadet_blue2)
+  , ("cadet_blue3",             X11.cadet_blue3)
+  , ("cadet_blue4",             X11.cadet_blue4)
   , ("chartreuse1",             X11.chartreuse1)
   , ("chartreuse2",             X11.chartreuse2)
   , ("chartreuse3",             X11.chartreuse3)
@@ -235,42 +235,42 @@
   , ("cyan2",                   X11.cyan2)
   , ("cyan3",                   X11.cyan3)
   , ("cyan4",                   X11.cyan4)
-  , ("darkGoldenrod1",          X11.darkGoldenrod1)
-  , ("darkGoldenrod2",          X11.darkGoldenrod2)
-  , ("darkGoldenrod3",          X11.darkGoldenrod3)
-  , ("darkGoldenrod4",          X11.darkGoldenrod4)
-  , ("darkOliveGreen1",         X11.darkOliveGreen1)
-  , ("darkOliveGreen2",         X11.darkOliveGreen2)
-  , ("darkOliveGreen3",         X11.darkOliveGreen3)
-  , ("darkOliveGreen4",         X11.darkOliveGreen4)
-  , ("darkOrange1",             X11.darkOrange1)
-  , ("darkOrange2",             X11.darkOrange2)
-  , ("darkOrange3",             X11.darkOrange3)
-  , ("darkOrange4",             X11.darkOrange4)
-  , ("darkOrchid1",             X11.darkOrchid1)
-  , ("darkOrchid2",             X11.darkOrchid2)
-  , ("darkOrchid3",             X11.darkOrchid3)
-  , ("darkOrchid4",             X11.darkOrchid4)
-  , ("darkSeaGreen1",           X11.darkSeaGreen1)
-  , ("darkSeaGreen2",           X11.darkSeaGreen2)
-  , ("darkSeaGreen3",           X11.darkSeaGreen3)
-  , ("darkSeaGreen4",           X11.darkSeaGreen4)
-  , ("darkSlateGray1",          X11.darkSlateGray1)
-  , ("darkSlateGray2",          X11.darkSlateGray2)
-  , ("darkSlateGray3",          X11.darkSlateGray3)
-  , ("darkSlateGray4",          X11.darkSlateGray4)
-  , ("deepPink1",               X11.deepPink1)
-  , ("deepPink2",               X11.deepPink2)
-  , ("deepPink3",               X11.deepPink3)
-  , ("deepPink4",               X11.deepPink4)
-  , ("deepSkyBlue1",            X11.deepSkyBlue1)
-  , ("deepSkyBlue2",            X11.deepSkyBlue2)
-  , ("deepSkyBlue3",            X11.deepSkyBlue3)
-  , ("deepSkyBlue4",            X11.deepSkyBlue4)
-  , ("dodgerBlue1",             X11.dodgerBlue1)
-  , ("dodgerBlue2",             X11.dodgerBlue2)
-  , ("dodgerBlue3",             X11.dodgerBlue3)
-  , ("dodgerBlue4",             X11.dodgerBlue4)
+  , ("dark_goldenrod1",         X11.dark_goldenrod1)
+  , ("dark_goldenrod2",         X11.dark_goldenrod2)
+  , ("dark_goldenrod3",         X11.dark_goldenrod3)
+  , ("dark_goldenrod4",         X11.dark_goldenrod4)
+  , ("dark_olive_green1",       X11.dark_olive_green1)
+  , ("dark_olive_green2",       X11.dark_olive_green2)
+  , ("dark_olive_green3",       X11.dark_olive_green3)
+  , ("dark_olive_green4",       X11.dark_olive_green4)
+  , ("dark_orange1",            X11.dark_orange1)
+  , ("dark_orange2",            X11.dark_orange2)
+  , ("dark_orange3",            X11.dark_orange3)
+  , ("dark_orange4",            X11.dark_orange4)
+  , ("dark_orchid1",            X11.dark_orchid1)
+  , ("dark_orchid2",            X11.dark_orchid2)
+  , ("dark_orchid3",            X11.dark_orchid3)
+  , ("dark_orchid4",            X11.dark_orchid4)
+  , ("dark_sea_green1",         X11.dark_sea_green1)
+  , ("dark_sea_green2",         X11.dark_sea_green2)
+  , ("dark_sea_green3",         X11.dark_sea_green3)
+  , ("dark_sea_green4",         X11.dark_sea_green4)
+  , ("dark_slate_gray1",        X11.dark_slate_gray1)
+  , ("dark_slate_gray2",        X11.dark_slate_gray2)
+  , ("dark_slate_gray3",        X11.dark_slate_gray3)
+  , ("dark_slate_gray4",        X11.dark_slate_gray4)
+  , ("deep_pink1",              X11.deep_pink1)
+  , ("deep_pink2",              X11.deep_pink2)
+  , ("deep_pink3",              X11.deep_pink3)
+  , ("deep_pink4",              X11.deep_pink4)
+  , ("deep_sky_blue1",          X11.deep_sky_blue1)
+  , ("deep_sky_blue2",          X11.deep_sky_blue2)
+  , ("deep_sky_blue3",          X11.deep_sky_blue3)
+  , ("deep_sky_blue4",          X11.deep_sky_blue4)
+  , ("dodger_blue1",            X11.dodger_blue1)
+  , ("dodger_blue2",            X11.dodger_blue2)
+  , ("dodger_blue3",            X11.dodger_blue3)
+  , ("dodger_blue4",            X11.dodger_blue4)
   , ("firebrick1",              X11.firebrick1)
   , ("firebrick2",              X11.firebrick2)
   , ("firebrick3",              X11.firebrick3)
@@ -291,14 +291,14 @@
   , ("honeydew2",               X11.honeydew2)
   , ("honeydew3",               X11.honeydew3)
   , ("honeydew4",               X11.honeydew4)
-  , ("hotPink1",                X11.hotPink1)
-  , ("hotPink2",                X11.hotPink2)
-  , ("hotPink3",                X11.hotPink3)
-  , ("hotPink4",                X11.hotPink4)
-  , ("indianRed1",              X11.indianRed1)
-  , ("indianRed2",              X11.indianRed2)
-  , ("indianRed3",              X11.indianRed3)
-  , ("indianRed4",              X11.indianRed4)
+  , ("hot_pink1",               X11.hot_pink1)
+  , ("hot_pink2",               X11.hot_pink2)
+  , ("hot_pink3",               X11.hot_pink3)
+  , ("hot_pink4",               X11.hot_pink4)
+  , ("indian_red1",             X11.indian_red1)
+  , ("indian_red2",             X11.indian_red2)
+  , ("indian_red3",             X11.indian_red3)
+  , ("indian_red4",             X11.indian_red4)
   , ("ivory1",                  X11.ivory1)
   , ("ivory2",                  X11.ivory2)
   , ("ivory3",                  X11.ivory3)
@@ -307,46 +307,46 @@
   , ("khaki2",                  X11.khaki2)
   , ("khaki3",                  X11.khaki3)
   , ("khaki4",                  X11.khaki4)
-  , ("lavenderBlush1",          X11.lavenderBlush1)
-  , ("lavenderBlush2",          X11.lavenderBlush2)
-  , ("lavenderBlush3",          X11.lavenderBlush3)
-  , ("lavenderBlush4",          X11.lavenderBlush4)
-  , ("lemonChiffon1",           X11.lemonChiffon1)
-  , ("lemonChiffon2",           X11.lemonChiffon2)
-  , ("lemonChiffon3",           X11.lemonChiffon3)
-  , ("lemonChiffon4",           X11.lemonChiffon4)
-  , ("lightBlue1",              X11.lightBlue1)
-  , ("lightBlue2",              X11.lightBlue2)
-  , ("lightBlue3",              X11.lightBlue3)
-  , ("lightBlue4",              X11.lightBlue4)
-  , ("lightCyan1",              X11.lightCyan1)
-  , ("lightCyan2",              X11.lightCyan2)
-  , ("lightCyan3",              X11.lightCyan3)
-  , ("lightCyan4",              X11.lightCyan4)
-  , ("lightGoldenrod1",         X11.lightGoldenrod1)
-  , ("lightGoldenrod2",         X11.lightGoldenrod2)
-  , ("lightGoldenrod3",         X11.lightGoldenrod3)
-  , ("lightGoldenrod4",         X11.lightGoldenrod4)
-  , ("lightPink1",              X11.lightPink1)
-  , ("lightPink2",              X11.lightPink2)
-  , ("lightPink3",              X11.lightPink3)
-  , ("lightPink4",              X11.lightPink4)
-  , ("lightSalmon1",            X11.lightSalmon1)
-  , ("lightSalmon2",            X11.lightSalmon2)
-  , ("lightSalmon3",            X11.lightSalmon3)
-  , ("lightSalmon4",            X11.lightSalmon4)
-  , ("lightSkyBlue1",           X11.lightSkyBlue1)
-  , ("lightSkyBlue2",           X11.lightSkyBlue2)
-  , ("lightSkyBlue3",           X11.lightSkyBlue3)
-  , ("lightSkyBlue4",           X11.lightSkyBlue4)
-  , ("lightSteelBlue1",         X11.lightSteelBlue1)
-  , ("lightSteelBlue2",         X11.lightSteelBlue2)
-  , ("lightSteelBlue3",         X11.lightSteelBlue3)
-  , ("lightSteelBlue4",         X11.lightSteelBlue4)
-  , ("lightYellow1",            X11.lightYellow1)
-  , ("lightYellow2",            X11.lightYellow2)
-  , ("lightYellow3",            X11.lightYellow3)
-  , ("lightYellow4",            X11.lightYellow4)
+  , ("lavender_blush1",         X11.lavender_blush1)
+  , ("lavender_blush2",         X11.lavender_blush2)
+  , ("lavender_blush3",         X11.lavender_blush3)
+  , ("lavender_blush4",         X11.lavender_blush4)
+  , ("lemon_chiffon1",          X11.lemon_chiffon1)
+  , ("lemon_chiffon2",          X11.lemon_chiffon2)
+  , ("lemon_chiffon3",          X11.lemon_chiffon3)
+  , ("lemon_chiffon4",          X11.lemon_chiffon4)
+  , ("light_blue1",             X11.light_blue1)
+  , ("light_blue2",             X11.light_blue2)
+  , ("light_blue3",             X11.light_blue3)
+  , ("light_blue4",             X11.light_blue4)
+  , ("light_cyan1",             X11.light_cyan1)
+  , ("light_cyan2",             X11.light_cyan2)
+  , ("light_cyan3",             X11.light_cyan3)
+  , ("light_cyan4",             X11.light_cyan4)
+  , ("light_goldenrod1",        X11.light_goldenrod1)
+  , ("light_goldenrod2",        X11.light_goldenrod2)
+  , ("light_goldenrod3",        X11.light_goldenrod3)
+  , ("light_goldenrod4",        X11.light_goldenrod4)
+  , ("light_pink1",             X11.light_pink1)
+  , ("light_pink2",             X11.light_pink2)
+  , ("light_pink3",             X11.light_pink3)
+  , ("light_pink4",             X11.light_pink4)
+  , ("light_salmon1",           X11.light_salmon1)
+  , ("light_salmon2",           X11.light_salmon2)
+  , ("light_salmon3",           X11.light_salmon3)
+  , ("light_salmon4",           X11.light_salmon4)
+  , ("light_sky_blue1",         X11.light_sky_blue1)
+  , ("light_sky_blue2",         X11.light_sky_blue2)
+  , ("light_sky_blue3",         X11.light_sky_blue3)
+  , ("light_sky_blue4",         X11.light_sky_blue4)
+  , ("light_steel_blue1",       X11.light_steel_blue1)
+  , ("light_steel_blue2",       X11.light_steel_blue2)
+  , ("light_steel_blue3",       X11.light_steel_blue3)
+  , ("light_steel_blue4",       X11.light_steel_blue4)
+  , ("light_yellow1",           X11.light_yellow1)
+  , ("light_yellow2",           X11.light_yellow2)
+  , ("light_yellow3",           X11.light_yellow3)
+  , ("light_yellow4",           X11.light_yellow4)
   , ("magenta1",                X11.magenta1)
   , ("magenta2",                X11.magenta2)
   , ("magenta3",                X11.magenta3)
@@ -355,54 +355,54 @@
   , ("maroon2",                 X11.maroon2)
   , ("maroon3",                 X11.maroon3)
   , ("maroon4",                 X11.maroon4)
-  , ("mediumOrchid1",           X11.mediumOrchid1)
-  , ("mediumOrchid2",           X11.mediumOrchid2)
-  , ("mediumOrchid3",           X11.mediumOrchid3)
-  , ("mediumOrchid4",           X11.mediumOrchid4)
-  , ("mediumPurple1",           X11.mediumPurple1)
-  , ("mediumPurple2",           X11.mediumPurple2)
-  , ("mediumPurple3",           X11.mediumPurple3)
-  , ("mediumPurple4",           X11.mediumPurple4)
-  , ("mistyRose1",              X11.mistyRose1)
-  , ("mistyRose2",              X11.mistyRose2)
-  , ("mistyRose3",              X11.mistyRose3)
-  , ("mistyRose4",              X11.mistyRose4)
-  , ("navajoWhite1",            X11.navajoWhite1)
-  , ("navajoWhite2",            X11.navajoWhite2)
-  , ("navajoWhite3",            X11.navajoWhite3)
-  , ("navajoWhite4",            X11.navajoWhite4)
-  , ("oliveDrab1",              X11.oliveDrab1)
-  , ("oliveDrab2",              X11.oliveDrab2)
-  , ("oliveDrab3",              X11.oliveDrab3)
-  , ("oliveDrab4",              X11.oliveDrab4)
+  , ("medium_orchid1",          X11.medium_orchid1)
+  , ("medium_orchid2",          X11.medium_orchid2)
+  , ("medium_orchid3",          X11.medium_orchid3)
+  , ("medium_orchid4",          X11.medium_orchid4)
+  , ("medium_purple1",          X11.medium_purple1)
+  , ("medium_purple2",          X11.medium_purple2)
+  , ("medium_purple3",          X11.medium_purple3)
+  , ("medium_purple4",          X11.medium_purple4)
+  , ("misty_rose1",             X11.misty_rose1)
+  , ("misty_rose2",             X11.misty_rose2)
+  , ("misty_rose3",             X11.misty_rose3)
+  , ("misty_rose4",             X11.misty_rose4)
+  , ("navajo_white1",           X11.navajo_white1)
+  , ("navajo_white2",           X11.navajo_white2)
+  , ("navajo_white3",           X11.navajo_white3)
+  , ("navajo_white4",           X11.navajo_white4)
+  , ("olive_drab1",             X11.olive_drab1)
+  , ("olive_drab2",             X11.olive_drab2)
+  , ("olive_drab3",             X11.olive_drab3)
+  , ("olive_drab4",             X11.olive_drab4)
   , ("orange1",                 X11.orange1)
   , ("orange2",                 X11.orange2)
   , ("orange3",                 X11.orange3)
   , ("orange4",                 X11.orange4)
-  , ("orangeRed1",              X11.orangeRed1)
-  , ("orangeRed2",              X11.orangeRed2)
-  , ("orangeRed3",              X11.orangeRed3)
-  , ("orangeRed4",              X11.orangeRed4)
+  , ("orange_red1",             X11.orange_red1)
+  , ("orange_red2",             X11.orange_red2)
+  , ("orange_red3",             X11.orange_red3)
+  , ("orange_red4",             X11.orange_red4)
   , ("orchid1",                 X11.orchid1)
   , ("orchid2",                 X11.orchid2)
   , ("orchid3",                 X11.orchid3)
   , ("orchid4",                 X11.orchid4)
-  , ("paleGreen1",              X11.paleGreen1)
-  , ("paleGreen2",              X11.paleGreen2)
-  , ("paleGreen3",              X11.paleGreen3)
-  , ("paleGreen4",              X11.paleGreen4)
-  , ("paleTurquoise1",          X11.paleTurquoise1)
-  , ("paleTurquoise2",          X11.paleTurquoise2)
-  , ("paleTurquoise3",          X11.paleTurquoise3)
-  , ("paleTurquoise4",          X11.paleTurquoise4)
-  , ("paleVioletRed1",          X11.paleVioletRed1)
-  , ("paleVioletRed2",          X11.paleVioletRed2)
-  , ("paleVioletRed3",          X11.paleVioletRed3)
-  , ("paleVioletRed4",          X11.paleVioletRed4)
-  , ("peachPuff1",              X11.peachPuff1)
-  , ("peachPuff2",              X11.peachPuff2)
-  , ("peachPuff3",              X11.peachPuff3)
-  , ("peachPuff4",              X11.peachPuff4)
+  , ("pale_green1",             X11.pale_green1)
+  , ("pale_green2",             X11.pale_green2)
+  , ("pale_green3",             X11.pale_green3)
+  , ("pale_green4",             X11.pale_green4)
+  , ("pale_turquoise1",         X11.pale_turquoise1)
+  , ("pale_turquoise2",         X11.pale_turquoise2)
+  , ("pale_turquoise3",         X11.pale_turquoise3)
+  , ("pale_turquoise4",         X11.pale_turquoise4)
+  , ("pale_violet_red1",        X11.pale_violet_red1)
+  , ("pale_violet_red2",        X11.pale_violet_red2)
+  , ("pale_violet_red3",        X11.pale_violet_red3)
+  , ("pale_Violet_red4",        X11.pale_violet_red4)
+  , ("peach_puff1",             X11.peach_puff1)
+  , ("peach_puff2",             X11.peach_puff2)
+  , ("peach_puff3",             X11.peach_puff3)
+  , ("peach_puff4",             X11.peach_puff4)
   , ("pink1",                   X11.pink1)
   , ("pink2",                   X11.pink2)
   , ("pink3",                   X11.pink3)
@@ -419,22 +419,22 @@
   , ("red2",                    X11.red2)
   , ("red3",                    X11.red3)
   , ("red4",                    X11.red4)
-  , ("rosyBrown1",              X11.rosyBrown1)
-  , ("rosyBrown2",              X11.rosyBrown2)
-  , ("rosyBrown3",              X11.rosyBrown3)
-  , ("rosyBrown4",              X11.rosyBrown4)
-  , ("royalBlue1",              X11.royalBlue1)
-  , ("royalBlue2",              X11.royalBlue2)
-  , ("royalBlue3",              X11.royalBlue3)
-  , ("royalBlue4",              X11.royalBlue4)
+  , ("rosy_brown1",             X11.rosy_brown1)
+  , ("rosy_brown2",             X11.rosy_brown2)
+  , ("rosy_brown3",             X11.rosy_brown3)
+  , ("rosy_brown4",             X11.rosy_brown4)
+  , ("royal_blue1",             X11.royal_blue1)
+  , ("royal_blue2",             X11.royal_blue2)
+  , ("royal_blue3",             X11.royal_blue3)
+  , ("royal_blue4",             X11.royal_blue4)
   , ("salmon1",                 X11.salmon1)
   , ("salmon2",                 X11.salmon2)
   , ("salmon3",                 X11.salmon3)
   , ("salmon4",                 X11.salmon4)
-  , ("seaGreen1",               X11.seaGreen1)
-  , ("seaGreen2",               X11.seaGreen2)
-  , ("seaGreen3",               X11.seaGreen3)
-  , ("seaGreen4",               X11.seaGreen4)
+  , ("sea_green1",              X11.sea_green1)
+  , ("sea_green2",              X11.sea_green2)
+  , ("sea_green3",              X11.sea_green3)
+  , ("sea_green4",              X11.sea_green4)
   , ("seashell1",               X11.seashell1)
   , ("seashell2",               X11.seashell2)
   , ("seashell3",               X11.seashell3)
@@ -443,30 +443,30 @@
   , ("sienna2",                 X11.sienna2)
   , ("sienna3",                 X11.sienna3)
   , ("sienna4",                 X11.sienna4)
-  , ("skyBlue1",                X11.skyBlue1)
-  , ("skyBlue2",                X11.skyBlue2)
-  , ("skyBlue3",                X11.skyBlue3)
-  , ("skyBlue4",                X11.skyBlue4)
-  , ("slateBlue1",              X11.slateBlue1)
-  , ("slateBlue2",              X11.slateBlue2)
-  , ("slateBlue3",              X11.slateBlue3)
-  , ("slateBlue4",              X11.slateBlue4)
-  , ("slateGray1",              X11.slateGray1)
-  , ("slateGray2",              X11.slateGray2)
-  , ("slateGray3",              X11.slateGray3)
-  , ("slateGray4",              X11.slateGray4)
+  , ("sky_blue1",               X11.sky_blue1)
+  , ("sky_blue2",               X11.sky_blue2)
+  , ("sky_blue3",               X11.sky_blue3)
+  , ("sky_blue4",               X11.sky_blue4)
+  , ("slate_blue1",             X11.slate_blue1)
+  , ("slate_blue2",             X11.slate_blue2)
+  , ("slate_blue3",             X11.slate_blue3)
+  , ("slate_blue4",             X11.slate_blue4)
+  , ("slate_gray1",             X11.slate_gray1)
+  , ("slate_gray2",             X11.slate_gray2)
+  , ("slate_gray3",             X11.slate_gray3)
+  , ("slate_gray4",             X11.slate_gray4)
   , ("snow1",                   X11.snow1)
   , ("snow2",                   X11.snow2)
   , ("snow3",                   X11.snow3)
   , ("snow4",                   X11.snow4)
-  , ("springGreen1",            X11.springGreen1)
-  , ("springGreen2",            X11.springGreen2)
-  , ("springGreen3",            X11.springGreen3)
-  , ("springGreen4",            X11.springGreen4)
-  , ("steelBlue1",              X11.steelBlue1)
-  , ("steelBlue2",              X11.steelBlue2)
-  , ("steelBlue3",              X11.steelBlue3)
-  , ("steelBlue4",              X11.steelBlue4)
+  , ("spring_green1",           X11.spring_green1)
+  , ("spring_green2",           X11.spring_green2)
+  , ("spring_green3",           X11.spring_green3)
+  , ("spring_green4",           X11.spring_green4)
+  , ("steel_blue1",             X11.steel_blue1)
+  , ("steel_blue2",             X11.steel_blue2)
+  , ("steel_blue3",             X11.steel_blue3)
+  , ("steel_blue4",             X11.steel_blue4)
   , ("tan1",                    X11.tan1)
   , ("tan2",                    X11.tan2)
   , ("tan3",                    X11.tan3)
@@ -483,10 +483,10 @@
   , ("turquoise2",              X11.turquoise2)
   , ("turquoise3",              X11.turquoise3)
   , ("turquoise4",              X11.turquoise4)
-  , ("violetRed1",              X11.violetRed1)
-  , ("violetRed2",              X11.violetRed2)
-  , ("violetRed3",              X11.violetRed3)
-  , ("violetRed4",              X11.violetRed4)
+  , ("violet_red1",             X11.violet_red1)
+  , ("violet_red2",             X11.violet_red2)
+  , ("violet_red3",             X11.violet_red3)
+  , ("violet_red4",             X11.violet_red4)
   , ("wheat1",                  X11.wheat1)
   , ("wheat2",                  X11.wheat2)
   , ("wheat3",                  X11.wheat3)
@@ -495,11 +495,6 @@
   , ("yellow2",                 X11.yellow2)
   , ("yellow3",                 X11.yellow3)
   , ("yellow4",                 X11.yellow4)
-  , ("gray0",                   X11.gray0)
-  , ("green0",                  X11.green0)
-  , ("grey0",                   X11.grey0)
-  , ("maroon0",                 X11.maroon0)
-  , ("purple0",                 X11.purple0)
   ]
 
 
diff --git a/demo/DotPic.hs b/demo/DotPic.hs
--- a/demo/DotPic.hs
+++ b/demo/DotPic.hs
@@ -3,12 +3,12 @@
 module DotPic where
 
 
+import Wumpus.Basic.Colour.SVGColours
 import Wumpus.Basic.Dots.Base
 import Wumpus.Basic.Graphic
 import Wumpus.Basic.Graphic.DrawingAttr
-import Wumpus.Basic.SVGColours
+import Wumpus.Basic.PictureLanguage
 import Wumpus.Basic.Utils.HList
-import Wumpus.Deprecated.PictureLanguage
 
 import Wumpus.Core                      -- package: wumpus-core
 
@@ -29,7 +29,7 @@
     writeSVG_latin1 "./out/dots01.svg" pic
   where 
     pic :: Picture Double
-    pic = extendBoundary 10 10 $ 
+    pic = extendBoundary 10 10 $
           uniformScale 2       $ 
             vsepA VLeft 10 p1 [p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14
                               ,p15,p16,p17]
@@ -63,7 +63,7 @@
 makeDotPic fn xs = drawGraphicU $ veloH (fn std_attr) xs . dashline
   where
     dashline = wrapG $ ostroke attr $ vertexPath xs
-    attr     = (cadetBlue, DashPattern $ evenDashes 1)
+    attr     = (cadet_blue, DashPattern $ evenDashes 1)
 
 
 errK :: a
diff --git a/demo/FontPic.hs b/demo/FontPic.hs
--- a/demo/FontPic.hs
+++ b/demo/FontPic.hs
@@ -3,9 +3,9 @@
 module FontPic where
 
 import Wumpus.Basic.SafeFonts
-import Wumpus.Basic.SVGColours ( steelBlue )
-import Wumpus.Basic.X11Colours ( indianRed1 )
-import Wumpus.Deprecated.PictureLanguage
+import Wumpus.Basic.Colour.SVGColours ( steel_blue )
+import Wumpus.Basic.Colour.X11Colours ( indian_red1 )
+import Wumpus.Basic.PictureLanguage
 
 import Wumpus.Core                              -- package: wumpus-core
 
@@ -29,16 +29,16 @@
     writeSVG_latin1 "./out/font_symbol.svg"    symbol_pic
 
 
-makeFontLabel :: DRGB -> FontAttr -> DPoint2 -> DPrimitive
+makeFontLabel :: RGBi -> FontAttr -> DPoint2 -> DPrimitive
 makeFontLabel c fa = textlabel (c,fa) msg
   where
     msg = unwords [ font_name $ font_face fa, (show $ font_size fa) ++ "pt"]
 
 blueLabel :: FontFace -> Int -> DPoint2 -> DPrimitive
-blueLabel ff i = makeFontLabel steelBlue (FontAttr i ff)
+blueLabel ff i = makeFontLabel steel_blue (FontAttr i ff)
 
 redLabel :: FontFace -> Int -> DPoint2 -> DPrimitive
-redLabel ff i = makeFontLabel indianRed1 (FontAttr i ff)
+redLabel ff i = makeFontLabel indian_red1 (FontAttr i ff)
 
 
 point_sizes :: [Int]
@@ -48,76 +48,79 @@
 -- Times
 
 times_pic :: Picture Double
-times_pic = timesroman_pic -//- timesitalic_pic -//- timesbold_pic
-                           -//- timesbolditalic_pic
+times_pic = timesroman_pic `nextToV` timesitalic_pic     `nextToV` timesbold_pic
+                           `nextToV` timesbolditalic_pic
 
 
 
 timesroman_pic :: Picture Double
 timesroman_pic = 
-    frameMulti $ zipWith (blueLabel timesRoman) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel timesRoman) point_sizes (mkPoints 1.5)
 
 timesitalic_pic :: Picture Double
 timesitalic_pic = 
-    frameMulti $ zipWith (redLabel timesItalic) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel timesItalic) point_sizes (mkPoints 1.5)
 
 timesbold_pic :: Picture Double
 timesbold_pic = 
-    frameMulti $ zipWith (blueLabel timesBold) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel timesBold) point_sizes (mkPoints 1.5)
 
 timesbolditalic_pic :: Picture Double
 timesbolditalic_pic = 
-    frameMulti $ zipWith (redLabel timesBoldItalic) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel timesBoldItalic) point_sizes (mkPoints 1.5)
 
 --------------------------------------------------------------------------------
 helvetica_pic :: Picture Double
-helvetica_pic = helvetica_pic1 -//- helveticaoblique_pic -//- helveticabold_pic
-                           -//- helveticaboldoblique_pic
+helvetica_pic = vcat helvetica_pic1 [ helveticaoblique_pic  
+                                    , helveticabold_pic
+                                    , helveticaboldoblique_pic ]
+                     
 
 helvetica_pic1 :: Picture Double
 helvetica_pic1 = 
-    frameMulti $ zipWith (blueLabel helvetica) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel helvetica) point_sizes (mkPoints 1.5)
 
 helveticaoblique_pic :: Picture Double
 helveticaoblique_pic = 
-    frameMulti $ zipWith (redLabel helveticaOblique) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel helveticaOblique) point_sizes (mkPoints 1.5)
     
 helveticabold_pic :: Picture Double
 helveticabold_pic = 
-    frameMulti $ zipWith (blueLabel helveticaBold) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel helveticaBold) point_sizes (mkPoints 1.5)
     
 helveticaboldoblique_pic :: Picture Double
 helveticaboldoblique_pic = 
-    frameMulti $ zipWith (redLabel helveticaBoldOblique) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel helveticaBoldOblique) point_sizes (mkPoints 1.5)
 
 --------------------------------------------------------------------------------
 
 courier_pic :: Picture Double
-courier_pic = courier_pic1 -//- courieroblique_pic -//- courierbold_pic
-                           -//- courierboldoblique_pic
+courier_pic = vcat courier_pic1 [ courieroblique_pic
+                                , courierbold_pic
+                                , courierboldoblique_pic ]
     
 courier_pic1 :: Picture Double
 courier_pic1 = 
-    frameMulti $ zipWith (blueLabel courier) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel courier) point_sizes (mkPoints 1.5)
     
 courieroblique_pic :: Picture Double
 courieroblique_pic = 
-    frameMulti $ zipWith (redLabel courierOblique) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel courierOblique) point_sizes (mkPoints 1.5)
     
 courierbold_pic :: Picture Double
 courierbold_pic = 
-    frameMulti $ zipWith (blueLabel courierBold) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel courierBold) point_sizes (mkPoints 1.5)
     
 courierboldoblique_pic :: Picture Double
 courierboldoblique_pic = 
-    frameMulti $ zipWith (redLabel courierBoldOblique) point_sizes (mkPoints 1.5)
+    frame $ zipWith (redLabel courierBoldOblique) point_sizes (mkPoints 1.5)
 
 --------------------------------------------------------------------------------
 
     
 symbol_pic :: Picture Double
 symbol_pic = 
-    frameMulti $ zipWith (blueLabel symbol) point_sizes (mkPoints 1.5)
+    frame $ zipWith (blueLabel symbol) point_sizes (mkPoints 1.5)
 
 
 --------------------------------------------------------------------------------
diff --git a/demo/Picture.hs b/demo/Picture.hs
--- a/demo/Picture.hs
+++ b/demo/Picture.hs
@@ -2,206 +2,146 @@
 
 module Picture where
 
-import Wumpus.Core
-import Wumpus.Deprecated.PictureLanguage
+import Wumpus.Basic.Colour.SVGColours
+import Wumpus.Basic.Graphic
+import Wumpus.Basic.PictureLanguage
+import Wumpus.Basic.SafeFonts
 
+import Wumpus.Core                              -- package: wumpus-core
+
 import System.Directory
 
 
 main :: IO ()
 main = do 
     createDirectoryIfMissing True "./out/"
-    sequence_  [ demo01, demo02, demo03, demo04, demo05
-               , demo06, demo07, demo08, demo09, demo10
-               , demo11, demo12, demo13, demo14 ]
-
-peru :: PSRgb
-peru = RGB3 0.804  0.522  0.247
-
-plum :: PSRgb
-plum = RGB3 0.867  0.627  0.867
-
-black :: PSRgb
-black = RGB3 0 0 0 
-
-
-square :: DPicture 
-square = frame $ cstroke () $ vertexPath
-  [ P2 0 0, P2 40 0, P2 40 40, P2 0 40 ]
-
-funnyshape :: DPicture
-funnyshape = frame $ cstroke () $ vertexPath
-  [ P2 0 0, P2 20 0, P2 20 10, P2 30 10, P2 30 20, P2 0 20 ]
-
-
-demo01 :: IO ()
-demo01 = do 
-  writePS_latin1  "./out/picture01.ps"    [funnyshape ->- square]
-  writeSVG_latin1 "./out/picture01.svg" $ funnyshape ->- square
-
-
-pic1 :: Picture Double
-pic1 = square ->- (funnyshape ->- funnyshape) ->- square
+    >> writeEPS_latin1 "./out/picture_lang.eps" pictures
+    >> writeSVG_latin1 "./out/picture_lang.svg" pictures
 
-squares :: Picture Double
-squares = square ->- square ->- square
+pictures :: DPicture
+pictures = vsep 12 pic1 [ pic2,  pic3,  pic4,  pic5
+                        , pic6,  pic7,  pic8,  pic9
+                        , pic10, pic11, pic12, pic13 ]
 
-demo02 :: IO ()
-demo02 = do 
-   writePS_latin1  "./out/picture02.ps"  [squares]
-   writeSVG_latin1 "./out/picture02.svg" squares 
-    
+pic1 :: DPicture
+pic1 = picAnno pic "red `over` green `over` blue"
+  where
+    pic :: DPicture
+    pic = illustrateBounds blue $ rect_red `over` rect_green `over` rect_blue
 
-demo03 :: IO ()
-demo03 = do 
-    writeEPS_latin1 "./out/picture03.eps" p1 
-    writeSVG_latin1 "./out/picture03.svg" p1
-  where     
-    p1 = square ->- (rotate45About (center squares) squares) ->- square
+pic2 :: DPicture
+pic2 = picAnno pic "red `under` green `under` blue"
+  where
+    pic :: DPicture
+    pic = illustrateBounds blue $ rect_red `under` rect_green `under` rect_blue
 
 
-demo04 :: IO ()
-demo04 = do 
-    writeEPS_latin1 "./out/picture04.eps" p1
-    writeSVG_latin1 "./out/picture04.svg" p1
+pic3 :: DPicture 
+pic3 = picAnno pic "rect_red `centerOver` rect_green `centerOver` rect_blue"
   where
-    p1 = square -//- squares
-   
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            rect_red `centerOver` rect_green `centerOver` rect_blue
 
-demo05 :: IO ()
-demo05 = do 
-    writeEPS_latin1 "./out/picture05.eps" p1
-    writeSVG_latin1 "./out/picture05.svg" p1
+-- Note - nextToH only moves pictures in the horizontal.
+--
+pic4 :: DPicture 
+pic4 = picAnno pic "rect_red `nextToH` rect_green `nextToH` rect_blue"
   where
-    p1 = square `over` (rotate (pi/4) squares)
-   
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            rect_red `nextToH` rect_green `nextToH` rect_blue
 
-demo06 :: IO ()
-demo06 = do 
-    writeEPS_latin1 "./out/picture06.eps" p1
-    writeSVG_latin1 "./out/picture06.svg" p1
+-- Note - nextToV only moves pictures in the vertical.
+--
+pic5 :: DPicture 
+pic5 = picAnno pic "rect_red `nextToV` rect_green `nextToV` rect_blue"
   where
-    p1 = square `over` (rotate45 square)
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            rect_red `nextToV` rect_green `nextToV` rect_blue
 
 
--- Note the move via @at@ is not apparent when SVG file is 
--- viewed with Mozilla or Chrome - check picture7a.svg
--- We only see that the move has /worked/ when we compose
--- with with `over` a square at the origin. 
-
-demo07 :: IO ()
-demo07 = do 
-    writeEPS_latin1 "./out/picture07.eps" p1
-    writeSVG_latin1 "./out/picture07.svg" p1
-    writeSVG_latin1 "./out/picture07a.svg" p2
+pic6 :: DPicture
+pic6 = picAnno pic "[red, green] `stackOver` blue"
   where
-    p1 = square `over` p2
-    p2 = (square `at` (P2 100 30))  -@- (rotate45 square)
-
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            [rect_red, rect_green] `stackOver` rect_blue
 
-demo08 :: IO ()
-demo08 = do 
-    writeEPS_latin1 "./out/picture08.eps" p1
-    writeSVG_latin1 "./out/picture08.svg" p1
+pic7 :: DPicture
+pic7 = picAnno pic "zconcat red [green, blue]"
   where
-    p1 = hspace 20 square square
-
-mkFilledSquare :: (PSColour c, Fill c) => c -> Double -> DPicture 
-mkFilledSquare col n = frame $ fill col $ vertexPath
-  [ P2 0 0, P2 n 0, P2 n n, P2 0 n ]
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            zconcat rect_red [rect_green, rect_blue]
 
 
-demo09 :: IO ()
-demo09 = do 
-    writeEPS_latin1 "./out/picture09.eps" p1
-    writeSVG_latin1 "./out/picture09.svg" p1
+pic8 :: DPicture
+pic8 = picAnno pic "hcat red [green, blue]"
   where
-    p1 = (alignH HTop s1 s2) `op` s3
-    s1 = uniformScale 1.5  $ mkFilledSquare plum 40
-    s2 = uniformScale 1.75 $ mkFilledSquare peru 40
-    s3 = scale 3 1.5       $ mkFilledSquare black 40
-    op = alignH HBottom
- 
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            hcat rect_red [rect_green, rect_blue]
 
-demo10 :: IO ()
-demo10 = do 
-    writeEPS_latin1 "./out/picture10.eps" p1
-    writeSVG_latin1 "./out/picture10.svg" p1
+pic9 :: DPicture
+pic9 = picAnno pic "vcat red [green, blue]"
   where
-    p1 = vsepA VRight 5 s1 [s2,s3]
-    s1 = uniformScale 1.5  $ mkFilledSquare plum 40
-    s2 = uniformScale 1.75 $ mkFilledSquare peru 40
-    s3 = scale 3 1.5       $ mkFilledSquare black 40
- 
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            vcat rect_red [rect_green, rect_blue]
 
+pic10 :: DPicture
+pic10 = picAnno pic "hsep 20 red [green, blue]"
+  where
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            hsep 20 rect_red [rect_green, rect_blue]
 
--- Stroked ellipe problem under scaling...
-demo11 :: IO ()
-demo11 = do 
-    writeEPS_latin1 "./out/picture11.eps" pic
-    writeSVG_latin1 "./out/picture11.svg" pic
+pic11 :: DPicture
+pic11 = picAnno pic "vsep 20 red [green, blue]"
   where
-    pic :: Picture Double
-    pic = p1 -//- p2
-    p1 = scale 6 12 $ frame $ ellipse (plum, LineWidth 2) 4 6 zeroPt
-    p2 = scale 6 12 $ frame $ ellipse (peru, LineWidth 2) 6 6 zeroPt
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            vsep 20 rect_red [rect_green, rect_blue]
 
 
--- Note the movement of the plum square won't be regarded by 
--- Firefox as it crops whitespace automatically.
-demo12 :: IO ()
-demo12 = do 
-    writeEPS_latin1 "./out/picture12.eps" pic
-    writeSVG_latin1 "./out/picture12.svg" pic
+pic12 :: DPicture
+pic12 = picAnno pic "hcatA HTop red [green, blue]"
   where
-    pic :: Picture Double
-    pic = p1 -//- p2 -//- p3 -//- p4
-    p1 = small_black -@- large_plum     -- moves black
-    p2 = large_plum  -@- small_black    -- moves plum
-    p3 = small_black ->- large_plum     -- moves plum
-    p4 = small_black -<- large_plum     -- moves black
-
-    small_black = mkFilledSquare black 10 `at` P2 30 0
-    large_plum  = mkFilledSquare plum  40 `at` P2 100 0
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            hcatA HTop rect_red [rect_green, rect_blue]
 
 
-demo13 :: IO ()
-demo13 = do 
-    writeEPS_latin1 "./out/picture13.eps" pic
-    writeSVG_latin1 "./out/picture13.svg" pic
+pic13 :: DPicture
+pic13 = picAnno pic "vcatA VCenter red [green, blue]"
   where
-    pic :: Picture Double
-    pic = (p1 `at` P2 20 20) ->- (p2 `at` P2 60 20) 
+    pic :: DPicture
+    pic = illustrateBounds blue $ 
+            vcatA VCenter rect_red [rect_green, rect_blue]
 
-    p1 = small_black `below` small_peru   -- moves small black
-    p2 = small_black `above` small_plum   -- moves small black
 
-    small_black = mkFilledSquare black 10 `at` P2 50 0
-    small_plum  = mkFilledSquare plum  10 `at` P2 50 0
-    small_peru  = mkFilledSquare peru  10 `at` P2 50 0
+--------------------------------------------------------------------------------
 
-demo14 :: IO ()
-demo14 = do 
-    writeEPS_latin1 "./out/picture14.eps" pic
-    writeSVG_latin1 "./out/picture14.svg" pic
+picAnno :: DPicture -> String -> DPicture
+picAnno pic msg = alignHSep HCenter 30 pic lbl
   where
-    pic :: Picture Double
-    pic = hsep 40 p1 [p2,p3,p4,p5,p6]
+    lbl = drawGraphicU $ supply (P2 0 0) $ 
+            textline (black,FontAttr 14 courier) msg
 
-    p1 = alignH HTop    small_black mid_peru
-    p2 = alignH HBottom small_black mid_plum
-    p3 = alignH HCenter small_black mid_peru
 
-    p4 = alignV VLeft   mid_black small_peru
-    p5 = alignV VRight  mid_black small_plum
-    p6 = alignV VCenter mid_black small_peru
+rect_red :: DPicture
+rect_red = drawGraphicU $ supply (P2 0 10) $ 
+          strokedRectangle black 30 10 `cc` filledRectangle indian_red 30 10
 
-    small_black = mkFilledSquare black 10 `at` P2 10 0
-    mid_plum    = mkFilledSquare plum  25 `at` P2 50 0
-    mid_peru    = mkFilledSquare peru  25 `at` P2 50 0
+rect_green :: DPicture
+rect_green = drawGraphicU $ supply (P2 10 10) $ 
+    strokedRectangle black 15 15 `cc` filledRectangle olive_drab 15 15
 
-    mid_black   = mkFilledSquare black 25 `at` P2 10 10
-    small_plum  = mkFilledSquare plum  10 `at` P2 10 50
-    small_peru  = mkFilledSquare peru  10 `at` P2 10 50
+
+rect_blue :: DPicture
+rect_blue = drawGraphicU $ supply (P2 10 0) $ 
+    strokedRectangle black 20 30 `cc` filledRectangle powder_blue 20 30
 
 
diff --git a/src/Wumpus/Basic/Arrows.hs b/src/Wumpus/Basic/Arrows.hs
--- a/src/Wumpus/Basic/Arrows.hs
+++ b/src/Wumpus/Basic/Arrows.hs
@@ -42,6 +42,7 @@
 import Wumpus.Basic.Monads.Drawing
 import Wumpus.Basic.Paths
 import Wumpus.Basic.Paths.Base
+import Wumpus.Basic.Utils.Intersection ( langle )
 
 import Wumpus.Core                      -- package: wumpus-core
 
@@ -52,7 +53,7 @@
 arrowWidth = fromPtSize . xcharHeight . font_size . font_props
 
 
-line :: Num u => BPathF u -> AConnector u (BPath u)
+line :: Num u => PathF u -> AConnector u (Path u)
 line pathF p0 p1 = AGraphic df mf
   where
     df attr () = pathGraphic (pathF p0 p1) attr
@@ -62,57 +63,57 @@
 
 
 arrowTri90 :: (Real u, Floating u, FromPtSize u) 
-           => BPathF u -> AConnector u (BPath u)
+           => PathF u -> AConnector u (Path u)
 arrowTri90 pathF = \p0 p1 -> 
     AGraphic (\attr () -> triTipRight pathF tri90 p0 p1 attr) 
              (\_    () -> pathF p0 p1)
 
 arrowTri60 :: (Real u, Floating u, FromPtSize u) 
-           => BPathF u -> AConnector u (BPath u)
+           => PathF u -> AConnector u (Path u)
 arrowTri60 pathF = \p0 p1 ->
     AGraphic (\attr () -> triTipRight pathF tri60 p0 p1 attr) 
              (\_    () -> pathF p0 p1)
  
 arrowTri45 :: (Real u, Floating u, FromPtSize u) 
-           => BPathF u -> AConnector u (BPath u)
+           => PathF u -> AConnector u (Path u)
 arrowTri45 pathF = \p0 p1 ->
     AGraphic (\attr () -> triTipRight pathF tri45 p0 p1 attr) 
              (\_    () -> pathF p0 p1)
 
 arrowOTri90 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowOTri90 pathF = \p0 p1 ->
     AGraphic (\attr () -> triTipRight pathF otri90 p0 p1 attr) 
              (\_    () -> pathF p0 p1)
 
 arrowOTri60 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowOTri60 pathF = \p0 p1 -> 
     AGraphic (\attr () -> triTipRight pathF otri60 p0 p1 attr) 
              (\_    () -> pathF p0 p1)
 
 
 arrowOTri45 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowOTri45 pathF = \p0 p1 ->
     AGraphic (\attr () -> triTipRight pathF otri45 p0 p1 attr)
              (\_    () -> pathF p0 p1)
 
 
 arrowBarb90 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowBarb90 pathF = \p0 p1 ->
     AGraphic (\attr () -> barbTipRight pathF barb90 p0 p1 attr)
              (\_    () -> pathF p0 p1)
 
 arrowBarb60 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowBarb60 pathF = \p0 p1 ->
     AGraphic (\attr () -> barbTipRight pathF barb60 p0 p1 attr)
              (\_    () -> pathF p0 p1)
 
 arrowBarb45 :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u -> AConnector u (BPath u)
+            => PathF u -> AConnector u (Path u)
 arrowBarb45 pathF = \p0 p1 ->
     AGraphic (\attr () -> barbTipRight pathF barb45 p0 p1 attr)
              (\_    () -> pathF p0 p1)
@@ -120,7 +121,7 @@
 
 
 triTipRight :: (Real u, Floating u, FromPtSize u) 
-            => BPathF u 
+            => PathF u 
             -> (Radian -> DrawingAttr -> GraphicF u)
             -> Point2 u -> Point2 u -> DrawingAttr 
             -> Graphic u 
@@ -137,7 +138,7 @@
 
 
 barbTipRight :: (Real u, Floating u, FromPtSize u) 
-             => BPathF u 
+             => PathF u 
              -> (Radian -> DrawingAttr -> GraphicF u)
              -> Point2 u -> Point2 u -> DrawingAttr 
              -> Graphic u 
@@ -151,7 +152,7 @@
                      
 
 arrowPerp :: (Real u, Floating u, FromPtSize u) 
-          => BPathF u -> AConnector u (BPath u)
+          => PathF u -> AConnector u (Path u)
 arrowPerp pathF p0 p1 = AGraphic df mf
   where
     df attr () = let theta = langle p0 p1  in
diff --git a/src/Wumpus/Basic/Arrows/Tips.hs b/src/Wumpus/Basic/Arrows/Tips.hs
--- a/src/Wumpus/Basic/Arrows/Tips.hs
+++ b/src/Wumpus/Basic/Arrows/Tips.hs
@@ -59,7 +59,7 @@
 
 triAng :: (Floating u, Real u, FromPtSize u)
       => Radian 
-      -> (Path u -> DrawingAttr -> Primitive u) 
+      -> (PrimPath u -> DrawingAttr -> Primitive u) 
       -> Radian -> DrawingAttr -> GraphicF u
 triAng ang fn theta attr pt = wrapG $ fn (vertexPath [pt,u,v]) attr
   where
diff --git a/src/Wumpus/Basic/Colour/SVGColours.hs b/src/Wumpus/Basic/Colour/SVGColours.hs
new file mode 100644
--- /dev/null
+++ b/src/Wumpus/Basic/Colour/SVGColours.hs
@@ -0,0 +1,625 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Wumpus.Basic.Colour.SVGColours
+-- Copyright   :  (c) Stephen Tetley 2009-2010
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC with TypeFamilies and more
+--
+-- The SVG \'named colours\', as rgb [0,1] values 
+--
+--------------------------------------------------------------------------------
+
+module Wumpus.Basic.Colour.SVGColours 
+  (
+    
+  -- * Named colours
+    alice_blue
+  , antique_white
+  , aqua
+  , aquamarine
+  , azure
+  , beige
+  , bisque
+  , black
+  , blanched_almond
+  , blue
+  , blue_violet
+  , brown
+  , burlywood
+  , cadet_blue
+  , chartreuse
+  , chocolate
+  , coral
+  , cornflower_blue
+  , cornsilk
+  , crimson
+  , cyan
+  , dark_blue
+  , dark_cyan
+  , dark_goldenrod
+  , dark_gray
+  , dark_green
+  , dark_grey
+  , dark_khaki
+  , dark_magenta
+  , dark_olive_green
+  , dark_orange
+  , dark_orchid
+  , dark_red
+  , dark_salmon
+  , dark_sea_green
+  , dark_slate_blue
+  , dark_slate_gray
+  , dark_slate_grey
+  , dark_turquoise
+  , dark_violet
+  , deep_pink
+  , deep_sky_blue
+  , dim_gray
+  , dim_grey
+  , dodger_blue
+  , firebrick
+  , floral_white
+  , forest_green
+  , fuchsia
+  , gainsboro
+  , ghost_white
+  , gold
+  , goldenrod
+  , gray
+  , grey
+  , green
+  , green_yellow
+  , honeydew
+  , hot_pink
+  , indian_red
+  , indigo
+  , ivory
+  , khaki
+  , lavender
+  , lavender_blush
+  , lawn_green
+  , lemon_chiffon
+  , light_blue
+  , light_coral
+  , light_cyan
+  , light_goldenrod_yellow
+  , light_gray
+  , light_green
+  , light_grey
+  , light_pink
+  , light_salmon
+  , light_sea_green
+  , light_sky_blue
+  , light_slate_gray
+  , light_slate_grey
+  , light_steel_blue
+  , light_yellow
+  , lime
+  , lime_green
+  , linen
+  , magenta
+  , maroon
+  , medium_aquamarine
+  , medium_blue
+  , medium_orchid
+  , medium_purple
+  , medium_sea_green
+  , medium_slate_blue
+  , medium_spring_green
+  , medium_turquoise
+  , medium_violet_red
+  , midnight_blue
+  , mintcream
+  , mistyrose
+  , moccasin
+  , navajo_white
+  , navy
+  , old_lace
+  , olive
+  , olive_drab
+  , orange
+  , orange_red
+  , orchid
+  , pale_goldenrod
+  , pale_green
+  , pale_turquoise
+  , pale_violet_red
+  , papaya_whip
+  , peach_puff
+  , peru
+  , pink
+  , plum
+  , powder_blue
+  , purple
+  , red
+  , rosy_brown
+  , royal_blue
+  , saddle_brown
+  , salmon
+  , sandy_brown
+  , sea_green
+  , seashell
+  , sienna
+  , silver
+  , sky_blue
+  , slate_blue
+  , slate_gray
+  , slate_grey
+  , snow
+  , spring_green
+  , steel_blue
+  , tan
+  , teal
+  , thistle
+  , tomato
+  , turquoise
+  , violet
+  , wheat
+  , white
+  , whitesmoke
+  , yellow
+  , yellow_green
+  
+  ) where
+
+
+import Wumpus.Core.Colour ( RGBi(..) )
+
+
+import Prelude ( )
+  
+
+
+--------------------------------------------------------------------------------
+  
+alice_blue              :: RGBi
+alice_blue              = RGBi 0xf0 0xf8 0xff
+
+antique_white           :: RGBi 
+antique_white           = RGBi 0xfa 0xeb 0xd7
+
+aqua                    :: RGBi
+aqua                    = RGBi 0x00 0xff 0xff
+
+aquamarine              :: RGBi
+aquamarine              = RGBi 0x7f 0xff 0xd4
+
+azure                   :: RGBi
+azure                   = RGBi 0xf0 0xff 0xff
+
+beige                   :: RGBi
+beige                   = RGBi 0xf5 0xf5 0xdc
+
+bisque                  :: RGBi
+bisque                  = RGBi 0xff 0xe4 0xc4
+
+black                   :: RGBi
+black                   = RGBi 0x00 0x00 0x00
+
+blanched_almond         :: RGBi
+blanched_almond         = RGBi 0xff 0xeb 0xcd
+
+blue                    :: RGBi
+blue                    = RGBi 0x00 0x00 0xff
+
+blue_violet             :: RGBi
+blue_violet             = RGBi 0x8a 0x2b 0xe2
+
+brown                   :: RGBi
+brown                   = RGBi 0xa5 0x2a 0x2a
+
+burlywood               :: RGBi
+burlywood               = RGBi 0xde 0xb8 0x87
+
+cadet_blue              :: RGBi
+cadet_blue              = RGBi 0x5f 0x9e 0xa0
+
+chartreuse              :: RGBi
+chartreuse              = RGBi 0x7f 0xff 0x00
+
+chocolate               :: RGBi
+chocolate               = RGBi 0xd2 0x69 0x1e
+
+coral                   :: RGBi
+coral                   = RGBi 0xff 0x7f 0x50
+
+cornflower_blue         :: RGBi
+cornflower_blue         = RGBi 0x64 0x95 0xed
+
+cornsilk                :: RGBi
+cornsilk                = RGBi 0xff 0xf8 0xdc
+
+crimson                 :: RGBi
+crimson                 = RGBi 0xdc 0x14 0x3c
+
+cyan                    :: RGBi
+cyan                    = RGBi 0x00 0xff 0xff
+
+dark_blue               :: RGBi
+dark_blue               = RGBi 0x00 0x00 0x8b
+
+dark_cyan               :: RGBi
+dark_cyan               = RGBi 0x00 0x8b 0x8b
+
+dark_goldenrod          :: RGBi
+dark_goldenrod          = RGBi 0xb8 0x86 0x0b
+
+dark_gray               :: RGBi
+dark_gray               = RGBi 0xa9 0xa9 0xa9
+
+dark_green              :: RGBi
+dark_green              = RGBi 0x00 0x64 0x00
+
+dark_grey               :: RGBi
+dark_grey               = RGBi 0xa9 0xa9 0xa9
+
+dark_khaki              :: RGBi
+dark_khaki              = RGBi 0xbd 0xb7 0x6b
+
+dark_magenta            :: RGBi
+dark_magenta            = RGBi 0x8b 0x00 0x8b
+
+dark_olive_green        :: RGBi
+dark_olive_green        = RGBi 0x55 0x6b 0x2f
+
+dark_orange             :: RGBi
+dark_orange             = RGBi 0xff 0x8c 0x00
+
+dark_orchid             :: RGBi
+dark_orchid             = RGBi 0x99 0x32 0xcc
+
+dark_red                :: RGBi
+dark_red                = RGBi 0x8b 0x00 0x00
+
+dark_salmon             :: RGBi
+dark_salmon             = RGBi 0xe9 0x96 0x7a
+
+dark_sea_green          :: RGBi
+dark_sea_green          = RGBi 0x8f 0xbc 0x8f
+
+dark_slate_blue         :: RGBi
+dark_slate_blue         = RGBi 0x48 0x3d 0x8b
+
+dark_slate_gray         :: RGBi
+dark_slate_gray         = RGBi 0x2f 0x4f 0x4f
+
+dark_slate_grey         :: RGBi
+dark_slate_grey         = RGBi 0x2f 0x4f 0x4f
+
+dark_turquoise          :: RGBi
+dark_turquoise          = RGBi 0x00 0xce 0xd1
+
+dark_violet             :: RGBi
+dark_violet             = RGBi 0x94 0x00 0xd3
+
+deep_pink               :: RGBi
+deep_pink               = RGBi 0xff 0x14 0x93
+
+deep_sky_blue           :: RGBi
+deep_sky_blue           = RGBi 0x00 0xbf 0xff
+
+dim_gray                :: RGBi
+dim_gray                = RGBi 0x69 0x69 0x69
+
+dim_grey                :: RGBi
+dim_grey                = RGBi 0x69 0x69 0x69
+
+dodger_blue             :: RGBi
+dodger_blue             = RGBi 0x1e 0x90 0xff
+
+firebrick               :: RGBi
+firebrick               = RGBi 0xb2 0x22 0x22
+
+floral_white            :: RGBi
+floral_white            = RGBi 0xff 0xfa 0xf0
+
+forest_green            :: RGBi
+forest_green            = RGBi 0x22 0x8b 0x22
+
+fuchsia                 :: RGBi
+fuchsia                 = RGBi 0xff 0x00 0xff
+
+gainsboro               :: RGBi
+gainsboro               = RGBi 0xdc 0xdc 0xdc
+
+ghost_white             :: RGBi
+ghost_white             = RGBi 0xf8 0xf8 0xff
+
+gold                    :: RGBi
+gold                    = RGBi 0xff 0xd7 0x00
+
+goldenrod               :: RGBi
+goldenrod               = RGBi 0xda 0xa5 0x20
+
+gray                    :: RGBi
+gray                    = RGBi 0x80 0x80 0x80
+
+green                   :: RGBi
+green                   = RGBi 0x00 0x80 0x00
+
+green_yellow            :: RGBi
+green_yellow            = RGBi 0xad 0xff 0x2f
+
+grey                    :: RGBi
+grey                    = RGBi 0x80 0x80 0x80
+
+honeydew                :: RGBi
+honeydew                = RGBi 0xf0 0xff 0xf0
+
+hot_pink                :: RGBi
+hot_pink                = RGBi 0xff 0x69 0xb4
+
+indian_red              :: RGBi
+indian_red              = RGBi 0xcd 0x5c 0x5c
+
+indigo                  :: RGBi
+indigo                  = RGBi 0x4b 0x00 0x82
+
+ivory                   :: RGBi
+ivory                   = RGBi 0xff 0xff 0xf0
+
+khaki                   :: RGBi
+khaki                   = RGBi 0xf0 0xe6 0x8c
+
+lavender                :: RGBi
+lavender                = RGBi 0xe6 0xe6 0xfa
+
+lavender_blush          :: RGBi
+lavender_blush          = RGBi 0xff 0xf0 0xf5
+
+lawn_green              :: RGBi
+lawn_green              = RGBi 0x7c 0xfc 0x00
+
+lemon_chiffon           :: RGBi
+lemon_chiffon           = RGBi 0xff 0xfa 0xcd
+
+light_blue              :: RGBi
+light_blue              = RGBi 0xad 0xd8 0xe6
+
+light_coral             :: RGBi
+light_coral             = RGBi 0xf0 0x80 0x80
+
+light_cyan              :: RGBi
+light_cyan              = RGBi 0xe0 0xff 0xff
+
+light_goldenrod_yellow  :: RGBi
+light_goldenrod_yellow  = RGBi 0xfa 0xfa 0xd2
+
+light_gray              :: RGBi
+light_gray              = RGBi 0xd3 0xd3 0xd3
+
+light_green             :: RGBi
+light_green             = RGBi 0x90 0xee 0x90
+
+light_grey              :: RGBi
+light_grey              = RGBi 0xd3 0xd3 0xd3
+
+light_pink              :: RGBi
+light_pink              = RGBi 0xff 0xb6 0xc1
+
+light_salmon            :: RGBi
+light_salmon            = RGBi 0xff 0xa0 0x7a
+
+light_sea_green         :: RGBi
+light_sea_green         = RGBi 0x20 0xb2 0xaa
+
+light_sky_blue          :: RGBi
+light_sky_blue          = RGBi 0x87 0xce 0xfa
+
+light_slate_gray        :: RGBi
+light_slate_gray        = RGBi 0x77 0x88 0x99
+
+light_slate_grey        :: RGBi
+light_slate_grey        = RGBi 0x77 0x88 0x99
+
+light_steel_blue        :: RGBi
+light_steel_blue        = RGBi 0xb0 0xc4 0xde
+
+light_yellow            :: RGBi
+light_yellow            = RGBi 0xff 0xff 0xe0
+
+lime                    :: RGBi
+lime                    = RGBi 0x00 0xff 0x00
+
+lime_green              :: RGBi
+lime_green              = RGBi 0x32 0xcd 0x32
+
+linen                   :: RGBi
+linen                   = RGBi 0xfa 0xf0 0xe6
+
+magenta                 :: RGBi
+magenta                 = RGBi 0xff 0x00 0xff
+
+maroon                  :: RGBi
+maroon                  = RGBi 0x80 0x00 0x00
+
+medium_aquamarine       :: RGBi
+medium_aquamarine       = RGBi 0x66 0xcd 0xaa
+
+medium_blue             :: RGBi
+medium_blue             = RGBi 0x00 0x00 0xcd
+
+medium_orchid           :: RGBi
+medium_orchid           = RGBi 0xba 0x55 0xd3
+
+medium_purple           :: RGBi
+medium_purple           = RGBi 0x93 0x70 0xdb
+
+medium_sea_green        :: RGBi
+medium_sea_green        = RGBi 0x3c 0xb3 0x71
+
+medium_slate_blue       :: RGBi
+medium_slate_blue       = RGBi 0x7b 0x68 0xee
+
+medium_spring_green     :: RGBi
+medium_spring_green     = RGBi 0x00 0xfa 0x9a
+
+medium_turquoise        :: RGBi
+medium_turquoise        = RGBi 0x48 0xd1 0xcc
+
+medium_violet_red       :: RGBi
+medium_violet_red       = RGBi 0xc7 0x15 0x85
+
+midnight_blue           :: RGBi
+midnight_blue           = RGBi 0x19 0x19 0x70
+
+mintcream               :: RGBi
+mintcream               = RGBi 0xf5 0xff 0xfa
+
+mistyrose               :: RGBi
+mistyrose               = RGBi 0xff 0xe4 0xe1
+
+moccasin                :: RGBi
+moccasin                = RGBi 0xff 0xe4 0xb5
+
+navajo_white            :: RGBi
+navajo_white            = RGBi 0xff 0xde 0xad
+
+navy                    :: RGBi
+navy                    = RGBi 0x00 0x00 0x80
+
+old_lace                :: RGBi
+old_lace                = RGBi 0xfd 0xf5 0xe6
+
+olive                   :: RGBi
+olive                   = RGBi 0x80 0x80 0x00
+
+olive_drab              :: RGBi
+olive_drab              = RGBi 0x6b 0x8e 0x23
+
+orange                  :: RGBi
+orange                  = RGBi 0xff 0xa5 0x00
+
+orange_red              :: RGBi
+orange_red              = RGBi 0xff 0x45 0x00
+
+orchid                  :: RGBi
+orchid                  = RGBi 0xda 0x70 0xd6
+
+pale_goldenrod          :: RGBi
+pale_goldenrod          = RGBi 0xee 0xe8 0xaa
+
+pale_green              :: RGBi
+pale_green              = RGBi 0x98 0xfb 0x98
+
+pale_turquoise          :: RGBi
+pale_turquoise          = RGBi 0xaf 0xee 0xee
+
+pale_violet_red         :: RGBi
+pale_violet_red         = RGBi 0xdb 0x70 0x93
+
+papaya_whip             :: RGBi
+papaya_whip             = RGBi 0xff 0xef 0xd5
+
+peach_puff              :: RGBi
+peach_puff              = RGBi 0xff 0xda 0xb9
+
+peru                    :: RGBi
+peru                    = RGBi 0xcd 0x85 0x3f
+
+pink                    :: RGBi
+pink                    = RGBi 0xff 0xc0 0xcb
+
+plum                    :: RGBi
+plum                    = RGBi 0xdd 0xa0 0xdd
+
+powder_blue             :: RGBi
+powder_blue             = RGBi 0xb0 0xe0 0xe6
+
+purple                  :: RGBi
+purple                  = RGBi 0x80 0x00 0x80
+
+red                     :: RGBi
+red                     = RGBi 0xff 0x00 0x00
+
+rosy_brown              :: RGBi
+rosy_brown              = RGBi 0xbc 0x8f 0x8f
+
+royal_blue              :: RGBi
+royal_blue              = RGBi 0x41 0x69 0xe1
+
+saddle_brown            :: RGBi
+saddle_brown            = RGBi 0x8b 0x45 0x13
+
+salmon                  :: RGBi
+salmon                  = RGBi 0xfa 0x80 0x72
+
+sandy_brown             :: RGBi
+sandy_brown             = RGBi 0xf4 0xa4 0x60
+
+sea_green               :: RGBi
+sea_green               = RGBi 0x2e 0x8b 0x57
+
+seashell                :: RGBi
+seashell                = RGBi 0xff 0xf5 0xee
+
+sienna                  :: RGBi
+sienna                  = RGBi 0xa0 0x52 0x2d
+
+silver                  :: RGBi
+silver                  = RGBi 0xc0 0xc0 0xc0
+
+sky_blue                :: RGBi
+sky_blue                = RGBi 0x87 0xce 0xeb
+
+slate_blue              :: RGBi
+slate_blue              = RGBi 0x6a 0x5a 0xcd
+
+slate_gray              :: RGBi
+slate_gray              = RGBi 0x70 0x80 0x90
+
+slate_grey              :: RGBi
+slate_grey              = RGBi 0x70 0x80 0x90
+
+snow                    :: RGBi
+snow                    = RGBi 0xff 0xfa 0xfa
+
+spring_green            :: RGBi
+spring_green            = RGBi 0x00 0xff 0x7f
+
+steel_blue              :: RGBi
+steel_blue              = RGBi 0x46 0x82 0xb4
+
+tan                     :: RGBi
+tan                     = RGBi 0xd2 0xb4 0x8c
+
+teal                    :: RGBi
+teal                    = RGBi 0x00 0x80 0x80
+
+thistle                 :: RGBi
+thistle                 = RGBi 0xd8 0xbf 0xd8
+
+tomato                  :: RGBi
+tomato                  = RGBi 0xff 0x63 0x47
+
+turquoise               :: RGBi
+turquoise               = RGBi 0x40 0xe0 0xd0
+
+violet                  :: RGBi
+violet                  = RGBi 0xee 0x82 0xee
+
+wheat                   :: RGBi
+wheat                   = RGBi 0xf5 0xde 0xb3
+
+white                   :: RGBi
+white                   = RGBi 0xff 0xff 0xff
+
+whitesmoke              :: RGBi
+whitesmoke              = RGBi 0xf5 0xf5 0xf5
+
+yellow                  :: RGBi
+yellow                  = RGBi 0xff 0xff 0x00
+
+yellow_green            :: RGBi
+yellow_green            = RGBi 0x9a 0xcd 0x32
+
+
+
+
+
diff --git a/src/Wumpus/Basic/Colour/X11Colours.hs b/src/Wumpus/Basic/Colour/X11Colours.hs
new file mode 100644
--- /dev/null
+++ b/src/Wumpus/Basic/Colour/X11Colours.hs
@@ -0,0 +1,1282 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Wumpus.Basic.Colour.X11Colours
+-- Copyright   :  (c) Stephen Tetley 2009-2010
+-- License     :  BSD3
+--
+-- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
+-- Stability   :  highly unstable
+-- Portability :  GHC with TypeFamilies and more
+--
+-- The X11 \'named colours\', as rgb [0,1] values 
+--
+--------------------------------------------------------------------------------
+
+module Wumpus.Basic.Colour.X11Colours
+  ( 
+  
+  -- * Named X11 colours
+    antique_white1
+  , antique_white2
+  , antique_white3
+  , antique_white4
+  , aquamarine1
+  , aquamarine2
+  , aquamarine3
+  , aquamarine4
+  , azure1
+  , azure2
+  , azure3
+  , azure4
+  , bisque1
+  , bisque2
+  , bisque3
+  , bisque4
+  , blue1
+  , blue2
+  , blue3
+  , blue4
+  , brown1
+  , brown2
+  , brown3
+  , brown4
+  , burlywood1
+  , burlywood2
+  , burlywood3
+  , burlywood4
+  , cadet_blue1
+  , cadet_blue2
+  , cadet_blue3
+  , cadet_blue4
+  , chartreuse1
+  , chartreuse2
+  , chartreuse3
+  , chartreuse4
+  , chocolate1
+  , chocolate2
+  , chocolate3
+  , chocolate4
+  , coral1
+  , coral2
+  , coral3
+  , coral4
+  , cornsilk1
+  , cornsilk2
+  , cornsilk3
+  , cornsilk4
+  , cyan1
+  , cyan2
+  , cyan3
+  , cyan4
+  , dark_goldenrod1
+  , dark_goldenrod2
+  , dark_goldenrod3
+  , dark_goldenrod4
+  , dark_olive_green1
+  , dark_olive_green2
+  , dark_olive_green3
+  , dark_olive_green4
+  , dark_orange1
+  , dark_orange2
+  , dark_orange3
+  , dark_orange4
+  , dark_orchid1
+  , dark_orchid2
+  , dark_orchid3
+  , dark_orchid4
+  , dark_sea_green1
+  , dark_sea_green2
+  , dark_sea_green3
+  , dark_sea_green4
+  , dark_slate_gray1
+  , dark_slate_gray2
+  , dark_slate_gray3
+  , dark_slate_gray4
+  , deep_pink1
+  , deep_pink2
+  , deep_pink3
+  , deep_pink4
+  , deep_sky_blue1
+  , deep_sky_blue2
+  , deep_sky_blue3
+  , deep_sky_blue4
+  , dodger_blue1
+  , dodger_blue2
+  , dodger_blue3
+  , dodger_blue4
+  , firebrick1
+  , firebrick2
+  , firebrick3
+  , firebrick4
+  , gold1
+  , gold2
+  , gold3
+  , gold4
+  , goldenrod1
+  , goldenrod2
+  , goldenrod3
+  , goldenrod4
+  , green1
+  , green2
+  , green3
+  , green4
+  , honeydew1
+  , honeydew2
+  , honeydew3
+  , honeydew4
+  , hot_pink1
+  , hot_pink2
+  , hot_pink3
+  , hot_pink4
+  , indian_red1
+  , indian_red2
+  , indian_red3
+  , indian_red4
+  , ivory1
+  , ivory2
+  , ivory3
+  , ivory4
+  , khaki1
+  , khaki2
+  , khaki3
+  , khaki4
+  , lavender_blush1
+  , lavender_blush2
+  , lavender_blush3
+  , lavender_blush4
+  , lemon_chiffon1
+  , lemon_chiffon2
+  , lemon_chiffon3
+  , lemon_chiffon4
+  , light_blue1
+  , light_blue2
+  , light_blue3
+  , light_blue4
+  , light_cyan1
+  , light_cyan2
+  , light_cyan3
+  , light_cyan4
+  , light_goldenrod1
+  , light_goldenrod2
+  , light_goldenrod3
+  , light_goldenrod4
+  , light_pink1
+  , light_pink2
+  , light_pink3
+  , light_pink4
+  , light_salmon1
+  , light_salmon2
+  , light_salmon3
+  , light_salmon4
+  , light_sky_blue1
+  , light_sky_blue2
+  , light_sky_blue3
+  , light_sky_blue4
+  , light_steel_blue1
+  , light_steel_blue2
+  , light_steel_blue3
+  , light_steel_blue4
+  , light_yellow1
+  , light_yellow2
+  , light_yellow3
+  , light_yellow4
+  , magenta1
+  , magenta2
+  , magenta3
+  , magenta4
+  , maroon1
+  , maroon2
+  , maroon3
+  , maroon4
+  , medium_orchid1
+  , medium_orchid2
+  , medium_orchid3
+  , medium_orchid4
+  , medium_purple1
+  , medium_purple2
+  , medium_purple3
+  , medium_purple4
+  , misty_rose1
+  , misty_rose2
+  , misty_rose3
+  , misty_rose4
+  , navajo_white1
+  , navajo_white2
+  , navajo_white3
+  , navajo_white4
+  , olive_drab1
+  , olive_drab2
+  , olive_drab3
+  , olive_drab4
+  , orange1
+  , orange2
+  , orange3
+  , orange4
+  , orange_red1
+  , orange_red2
+  , orange_red3
+  , orange_red4
+  , orchid1
+  , orchid2
+  , orchid3
+  , orchid4
+  , pale_green1
+  , pale_green2
+  , pale_green3
+  , pale_green4
+  , pale_turquoise1
+  , pale_turquoise2
+  , pale_turquoise3
+  , pale_turquoise4
+  , pale_violet_red1
+  , pale_violet_red2
+  , pale_violet_red3
+  , pale_violet_red4
+  , peach_puff1
+  , peach_puff2
+  , peach_puff3
+  , peach_puff4
+  , pink1
+  , pink2
+  , pink3
+  , pink4
+  , plum1
+  , plum2
+  , plum3
+  , plum4
+  , purple1
+  , purple2
+  , purple3
+  , purple4
+  , red1
+  , red2
+  , red3
+  , red4
+  , rosy_brown1
+  , rosy_brown2
+  , rosy_brown3
+  , rosy_brown4
+  , royal_blue1
+  , royal_blue2
+  , royal_blue3
+  , royal_blue4
+  , salmon1
+  , salmon2
+  , salmon3
+  , salmon4
+  , sea_green1
+  , sea_green2
+  , sea_green3
+  , sea_green4
+  , seashell1
+  , seashell2
+  , seashell3
+  , seashell4
+  , sienna1
+  , sienna2
+  , sienna3
+  , sienna4
+  , sky_blue1
+  , sky_blue2
+  , sky_blue3
+  , sky_blue4
+  , slate_blue1
+  , slate_blue2
+  , slate_blue3
+  , slate_blue4
+  , slate_gray1
+  , slate_gray2
+  , slate_gray3
+  , slate_gray4
+  , snow1
+  , snow2
+  , snow3
+  , snow4
+  , spring_green1
+  , spring_green2
+  , spring_green3
+  , spring_green4
+  , steel_blue1
+  , steel_blue2
+  , steel_blue3
+  , steel_blue4
+  , tan1
+  , tan2
+  , tan3
+  , tan4
+  , thistle1
+  , thistle2
+  , thistle3
+  , thistle4
+  , tomato1
+  , tomato2
+  , tomato3
+  , tomato4
+  , turquoise1
+  , turquoise2
+  , turquoise3
+  , turquoise4
+  , violet_red1
+  , violet_red2
+  , violet_red3
+  , violet_red4
+  , wheat1
+  , wheat2
+  , wheat3
+  , wheat4
+  , yellow1
+  , yellow2
+  , yellow3
+  , yellow4
+
+  ) where
+
+import Wumpus.Core.Colour ( RGBi(..) )
+
+
+--------------------------------------------------------------------------------
+
+antique_white1          :: RGBi
+antique_white1          = RGBi 0xff 0xef 0xdb
+
+antique_white2          :: RGBi
+antique_white2          = RGBi 0xee 0xdf 0xcc
+
+antique_white3          :: RGBi
+antique_white3          = RGBi 0xcd 0xc0 0xb0
+
+antique_white4          :: RGBi
+antique_white4          = RGBi 0x8b 0x83 0x78
+
+aquamarine1             :: RGBi
+aquamarine1             = RGBi 0x7f 0xff 0xd4
+
+aquamarine2             :: RGBi
+aquamarine2             = RGBi 0x76 0xee 0xc6
+
+aquamarine3             :: RGBi
+aquamarine3             = RGBi 0x66 0xcd 0xaa
+
+aquamarine4             :: RGBi
+aquamarine4             = RGBi 0x45 0x8b 0x74
+
+azure1                  :: RGBi
+azure1                  = RGBi 0xf0 0xff 0xff
+
+azure2                  :: RGBi
+azure2                  = RGBi 0xe0 0xee 0xee
+
+azure3                  :: RGBi
+azure3                  = RGBi 0xc1 0xcd 0xcd
+
+azure4                  :: RGBi
+azure4                  = RGBi 0x83 0x8b 0x8b
+
+bisque1                 :: RGBi
+bisque1                 = RGBi 0xff 0xe4 0xc4
+
+bisque2                 :: RGBi
+bisque2                 = RGBi 0xee 0xd5 0xb7
+
+bisque3                 :: RGBi
+bisque3                 = RGBi 0xcd 0xb7 0x9e
+
+bisque4                 :: RGBi
+bisque4                 = RGBi 0x8b 0x7d 0x6b
+
+blue1                   :: RGBi
+blue1                   = RGBi 0x00 0x00 0xff
+
+blue2                   :: RGBi
+blue2                   = RGBi 0x00 0x00 0xee
+
+blue3                   :: RGBi
+blue3                   = RGBi 0x00 0x00 0xcd
+
+blue4                   :: RGBi
+blue4                   = RGBi 0x00 0x00 0x8b
+
+brown1                  :: RGBi
+brown1                  = RGBi 0xff 0x40 0x40
+
+brown2                  :: RGBi
+brown2                  = RGBi 0xee 0x3b 0x3b
+
+brown3                  :: RGBi
+brown3                  = RGBi 0xcd 0x33 0x33
+
+brown4                  :: RGBi
+brown4                  = RGBi 0x8b 0x23 0x23
+
+burlywood1              :: RGBi
+burlywood1              = RGBi 0xff 0xd3 0x9b
+
+burlywood2              :: RGBi
+burlywood2              = RGBi 0xee 0xc5 0x91
+
+burlywood3              :: RGBi
+burlywood3              = RGBi 0xcd 0xaa 0x7d
+
+burlywood4              :: RGBi
+burlywood4              = RGBi 0x8b 0x73 0x55
+
+cadet_blue1             :: RGBi
+cadet_blue1             = RGBi 0x98 0xf5 0xff
+
+cadet_blue2             :: RGBi
+cadet_blue2             = RGBi 0x8e 0xe5 0xee
+
+cadet_blue3             :: RGBi
+cadet_blue3             = RGBi 0x7a 0xc5 0xcd
+
+cadet_blue4             :: RGBi
+cadet_blue4             = RGBi 0x53 0x86 0x8b
+
+chartreuse1             :: RGBi
+chartreuse1             = RGBi 0x7f 0xff 0x00
+
+chartreuse2             :: RGBi
+chartreuse2             = RGBi 0x76 0xee 0x00
+
+chartreuse3             :: RGBi
+chartreuse3             = RGBi 0x66 0xcd 0x00
+
+chartreuse4             :: RGBi
+chartreuse4             = RGBi 0x45 0x8b 0x00
+
+chocolate1              :: RGBi
+chocolate1              = RGBi 0xff 0x7f 0x24
+
+chocolate2              :: RGBi
+chocolate2              = RGBi 0xee 0x76 0x21
+
+chocolate3              :: RGBi
+chocolate3              = RGBi 0xcd 0x66 0x1d
+
+chocolate4              :: RGBi
+chocolate4              = RGBi 0x8b 0x45 0x13
+
+coral1                  :: RGBi
+coral1                  = RGBi 0xff 0x72 0x56
+
+coral2                  :: RGBi
+coral2                  = RGBi 0xee 0x6a 0x50
+
+coral3                  :: RGBi
+coral3                  = RGBi 0xcd 0x5b 0x45
+
+coral4                  :: RGBi
+coral4                  = RGBi 0x8b 0x3e 0x2f
+
+cornsilk1               :: RGBi
+cornsilk1               = RGBi 0xff 0xf8 0xdc
+
+cornsilk2               :: RGBi
+cornsilk2               = RGBi 0xee 0xe8 0xcd
+
+cornsilk3               :: RGBi
+cornsilk3               = RGBi 0xcd 0xc8 0xb1
+
+cornsilk4               :: RGBi
+cornsilk4               = RGBi 0x8b 0x88 0x78
+
+cyan1                   :: RGBi
+cyan1                   = RGBi 0x00 0xff 0xff
+
+cyan2                   :: RGBi
+cyan2                   = RGBi 0x00 0xee 0xee
+
+cyan3                   :: RGBi
+cyan3                   = RGBi 0x00 0xcd 0xcd
+
+cyan4                   :: RGBi
+cyan4                   = RGBi 0x00 0x8b 0x8b
+
+dark_goldenrod1         :: RGBi
+dark_goldenrod1         = RGBi 0xff 0xb9 0x0f
+
+dark_goldenrod2         :: RGBi
+dark_goldenrod2         = RGBi 0xee 0xad 0x0e
+
+dark_goldenrod3         :: RGBi
+dark_goldenrod3         = RGBi 0xcd 0x95 0x0c
+
+dark_goldenrod4         :: RGBi
+dark_goldenrod4         = RGBi 0x8b 0x65 0x08
+
+dark_olive_green1       :: RGBi
+dark_olive_green1       = RGBi 0xca 0xff 0x70
+
+dark_olive_green2       :: RGBi
+dark_olive_green2       = RGBi 0xbc 0xee 0x68
+
+dark_olive_green3       :: RGBi
+dark_olive_green3       = RGBi 0xa2 0xcd 0x5a
+
+dark_olive_green4       :: RGBi
+dark_olive_green4       = RGBi 0x6e 0x8b 0x3d
+
+dark_orange1            :: RGBi
+dark_orange1            = RGBi 0xff 0x7f 0x00
+
+dark_orange2            :: RGBi
+dark_orange2            = RGBi 0xee 0x76 0x00
+
+dark_orange3            :: RGBi
+dark_orange3            = RGBi 0xcd 0x66 0x00
+
+dark_orange4            :: RGBi
+dark_orange4            = RGBi 0x8b 0x45 0x00
+
+dark_orchid1            :: RGBi
+dark_orchid1            = RGBi 0xbf 0x3e 0xff
+
+dark_orchid2            :: RGBi
+dark_orchid2            = RGBi 0xb2 0x3a 0xee
+
+dark_orchid3            :: RGBi
+dark_orchid3            = RGBi 0x9a 0x32 0xcd
+
+dark_orchid4            :: RGBi
+dark_orchid4            = RGBi 0x68 0x22 0x8b
+
+dark_sea_green1         :: RGBi
+dark_sea_green1         = RGBi 0xc1 0xff 0xc1
+
+dark_sea_green2         :: RGBi
+dark_sea_green2         = RGBi 0xb4 0xee 0xb4
+
+dark_sea_green3         :: RGBi
+dark_sea_green3         = RGBi 0x9b 0xcd 0x9b
+
+dark_sea_green4         :: RGBi
+dark_sea_green4         = RGBi 0x69 0x8b 0x69
+
+dark_slate_gray1        :: RGBi
+dark_slate_gray1        = RGBi 0x97 0xff 0xff
+
+dark_slate_gray2        :: RGBi
+dark_slate_gray2        = RGBi 0x8d 0xee 0xee
+
+dark_slate_gray3        :: RGBi
+dark_slate_gray3        = RGBi 0x79 0xcd 0xcd
+
+dark_slate_gray4        :: RGBi
+dark_slate_gray4        = RGBi 0x52 0x8b 0x8b
+
+deep_pink1              :: RGBi
+deep_pink1              = RGBi 0xff 0x14 0x93
+
+deep_pink2              :: RGBi
+deep_pink2              = RGBi 0xee 0x12 0x89
+
+deep_pink3              :: RGBi
+deep_pink3              = RGBi 0xcd 0x10 0x76
+
+deep_pink4              :: RGBi
+deep_pink4              = RGBi 0x8b 0x0a 0x50
+
+deep_sky_blue1          :: RGBi
+deep_sky_blue1          = RGBi 0x00 0xbf 0xff
+
+deep_sky_blue2          :: RGBi
+deep_sky_blue2          = RGBi 0x00 0xb2 0xee
+
+deep_sky_blue3          :: RGBi
+deep_sky_blue3          = RGBi 0x00 0x9a 0xcd
+
+deep_sky_blue4          :: RGBi
+deep_sky_blue4          = RGBi 0x00 0x68 0x8b
+
+dodger_blue1            :: RGBi
+dodger_blue1            = RGBi 0x1e 0x90 0xff
+
+dodger_blue2            :: RGBi
+dodger_blue2            = RGBi 0x1c 0x86 0xee
+
+dodger_blue3            :: RGBi
+dodger_blue3            = RGBi 0x18 0x74 0xcd
+
+dodger_blue4            :: RGBi
+dodger_blue4            = RGBi 0x10 0x4e 0x8b
+
+firebrick1              :: RGBi
+firebrick1              = RGBi 0xff 0x30 0x30
+
+firebrick2              :: RGBi
+firebrick2              = RGBi 0xee 0x2c 0x2c
+
+firebrick3              :: RGBi
+firebrick3              = RGBi 0xcd 0x26 0x26
+
+firebrick4              :: RGBi
+firebrick4              = RGBi 0x8b 0x1a 0x1a
+
+gold1                   :: RGBi
+gold1                   = RGBi 0xff 0xd7 0x00
+
+gold2                   :: RGBi
+gold2                   = RGBi 0xee 0xc9 0x00
+
+gold3                   :: RGBi
+gold3                   = RGBi 0xcd 0xad 0x00
+
+gold4                   :: RGBi
+gold4                   = RGBi 0x8b 0x75 0x00
+
+goldenrod1              :: RGBi
+goldenrod1              = RGBi 0xff 0xc1 0x25
+
+goldenrod2              :: RGBi
+goldenrod2              = RGBi 0xee 0xb4 0x22
+
+goldenrod3              :: RGBi
+goldenrod3              = RGBi 0xcd 0x9b 0x1d
+
+goldenrod4              :: RGBi
+goldenrod4              = RGBi 0x8b 0x69 0x14
+
+green1                  :: RGBi
+green1                  = RGBi 0x00 0xff 0x00
+
+green2                  :: RGBi
+green2                  = RGBi 0x00 0xee 0x00
+
+green3                  :: RGBi
+green3                  = RGBi 0x00 0xcd 0x00
+
+green4                  :: RGBi
+green4                  = RGBi 0x00 0x8b 0x00
+
+honeydew1               :: RGBi
+honeydew1               = RGBi 0xf0 0xff 0xf0
+
+honeydew2               :: RGBi
+honeydew2               = RGBi 0xe0 0xee 0xe0
+
+honeydew3               :: RGBi
+honeydew3               = RGBi 0xc1 0xcd 0xc1
+
+honeydew4               :: RGBi
+honeydew4               = RGBi 0x83 0x8b 0x83
+
+hot_pink1               :: RGBi
+hot_pink1               = RGBi 0xff 0x6e 0xb4
+
+hot_pink2               :: RGBi
+hot_pink2               = RGBi 0xee 0x6a 0xa7
+
+hot_pink3               :: RGBi
+hot_pink3               = RGBi 0xcd 0x60 0x90
+
+hot_pink4               :: RGBi
+hot_pink4               = RGBi 0x8b 0x3a 0x62
+
+indian_red1             :: RGBi
+indian_red1             = RGBi 0xff 0x6a 0x6a
+
+indian_red2             :: RGBi
+indian_red2             = RGBi 0xee 0x63 0x63
+
+indian_red3             :: RGBi
+indian_red3             = RGBi 0xcd 0x55 0x55
+
+indian_red4             :: RGBi
+indian_red4             = RGBi 0x8b 0x3a 0x3a
+
+ivory1                  :: RGBi
+ivory1                  = RGBi 0xff 0xff 0xf0
+
+ivory2                  :: RGBi
+ivory2                  = RGBi 0xee 0xee 0xe0
+
+ivory3                  :: RGBi
+ivory3                  = RGBi 0xcd 0xcd 0xc1
+
+ivory4                  :: RGBi
+ivory4                  = RGBi 0x8b 0x8b 0x83
+
+khaki1                  :: RGBi
+khaki1                  = RGBi 0xff 0xf6 0x8f
+
+khaki2                  :: RGBi
+khaki2                  = RGBi 0xee 0xe6 0x85
+
+khaki3                  :: RGBi
+khaki3                  = RGBi 0xcd 0xc6 0x73
+
+khaki4                  :: RGBi
+khaki4                  = RGBi 0x8b 0x86 0x4e
+
+lavender_blush1         :: RGBi
+lavender_blush1         = RGBi 0xff 0xf0 0xf5
+
+lavender_blush2         :: RGBi
+lavender_blush2         = RGBi 0xee 0xe0 0xe5
+
+lavender_blush3         :: RGBi
+lavender_blush3         = RGBi 0xcd 0xc1 0xc5
+
+lavender_blush4         :: RGBi
+lavender_blush4         = RGBi 0x8b 0x83 0x86
+
+lemon_chiffon1          :: RGBi
+lemon_chiffon1          = RGBi 0xff 0xfa 0xcd
+
+lemon_chiffon2          :: RGBi
+lemon_chiffon2          = RGBi 0xee 0xe9 0xbf
+
+lemon_chiffon3          :: RGBi
+lemon_chiffon3          = RGBi 0xcd 0xc9 0xa5
+
+lemon_chiffon4          :: RGBi
+lemon_chiffon4          = RGBi 0x8b 0x89 0x70
+
+light_blue1             :: RGBi
+light_blue1             = RGBi 0xbf 0xef 0xff
+
+light_blue2             :: RGBi
+light_blue2             = RGBi 0xb2 0xdf 0xee
+
+light_blue3             :: RGBi
+light_blue3             = RGBi 0x9a 0xc0 0xcd
+
+light_blue4             :: RGBi
+light_blue4             = RGBi 0x68 0x83 0x8b
+
+light_cyan1             :: RGBi
+light_cyan1             = RGBi 0xe0 0xff 0xff
+
+light_cyan2             :: RGBi
+light_cyan2             = RGBi 0xd1 0xee 0xee
+
+light_cyan3             :: RGBi
+light_cyan3             = RGBi 0xb4 0xcd 0xcd
+
+light_cyan4             :: RGBi
+light_cyan4             = RGBi 0x7a 0x8b 0x8b
+
+light_goldenrod1        :: RGBi
+light_goldenrod1        = RGBi 0xff 0xec 0x8b
+
+light_goldenrod2        :: RGBi
+light_goldenrod2        = RGBi 0xee 0xdc 0x82
+
+light_goldenrod3        :: RGBi
+light_goldenrod3        = RGBi 0xcd 0xbe 0x70
+
+light_goldenrod4        :: RGBi
+light_goldenrod4        = RGBi 0x8b 0x81 0x4c
+
+light_pink1             :: RGBi
+light_pink1             = RGBi 0xff 0xae 0xb9
+
+light_pink2             :: RGBi
+light_pink2             = RGBi 0xee 0xa2 0xad
+
+light_pink3             :: RGBi
+light_pink3             = RGBi 0xcd 0x8c 0x95
+
+light_pink4             :: RGBi
+light_pink4             = RGBi 0x8b 0x5f 0x65
+
+light_salmon1           :: RGBi
+light_salmon1           = RGBi 0xff 0xa0 0x7a
+
+light_salmon2           :: RGBi
+light_salmon2           = RGBi 0xee 0x95 0x72
+
+light_salmon3           :: RGBi
+light_salmon3           = RGBi 0xcd 0x81 0x62
+
+light_salmon4           :: RGBi
+light_salmon4           = RGBi 0x8b 0x57 0x42
+
+light_sky_blue1         :: RGBi
+light_sky_blue1         = RGBi 0xb0 0xe2 0xff
+
+light_sky_blue2         :: RGBi
+light_sky_blue2         = RGBi 0xa4 0xd3 0xee
+
+light_sky_blue3         :: RGBi
+light_sky_blue3         = RGBi 0x8d 0xb6 0xcd
+
+light_sky_blue4         :: RGBi
+light_sky_blue4         = RGBi 0x60 0x7b 0x8b
+
+light_steel_blue1       :: RGBi
+light_steel_blue1       = RGBi 0xca 0xe1 0xff
+
+light_steel_blue2       :: RGBi
+light_steel_blue2       = RGBi 0xbc 0xd2 0xee
+
+light_steel_blue3       :: RGBi
+light_steel_blue3       = RGBi 0xa2 0xb5 0xcd
+
+light_steel_blue4       :: RGBi
+light_steel_blue4       = RGBi 0x6e 0x7b 0x8b
+
+light_yellow1           :: RGBi
+light_yellow1           = RGBi 0xff 0xff 0xe0
+
+light_yellow2           :: RGBi
+light_yellow2           = RGBi 0xee 0xee 0xd1
+
+light_yellow3           :: RGBi
+light_yellow3           = RGBi 0xcd 0xcd 0xb4
+
+light_yellow4           :: RGBi
+light_yellow4           = RGBi 0x8b 0x8b 0x7a
+
+magenta1                :: RGBi
+magenta1                = RGBi 0xff 0x00 0xff
+
+magenta2                :: RGBi
+magenta2                = RGBi 0xee 0x00 0xee
+
+magenta3                :: RGBi
+magenta3                = RGBi 0xcd 0x00 0xcd
+
+magenta4                :: RGBi
+magenta4                = RGBi 0x8b 0x00 0x8b
+
+maroon1                 :: RGBi
+maroon1                 = RGBi 0xff 0x34 0xb3
+
+maroon2                 :: RGBi
+maroon2                 = RGBi 0xee 0x30 0xa7
+
+maroon3                 :: RGBi
+maroon3                 = RGBi 0xcd 0x29 0x90
+
+maroon4                 :: RGBi
+maroon4                 = RGBi 0x8b 0x1c 0x62
+
+medium_orchid1          :: RGBi
+medium_orchid1          = RGBi 0xe0 0x66 0xff
+
+medium_orchid2          :: RGBi
+medium_orchid2          = RGBi 0xd1 0x5f 0xee
+
+medium_orchid3          :: RGBi
+medium_orchid3          = RGBi 0xb4 0x52 0xcd
+
+medium_orchid4          :: RGBi
+medium_orchid4          = RGBi 0x7a 0x37 0x8b
+
+medium_purple1          :: RGBi
+medium_purple1          = RGBi 0xab 0x82 0xff
+
+medium_purple2          :: RGBi
+medium_purple2          = RGBi 0x9f 0x79 0xee
+
+medium_purple3          :: RGBi
+medium_purple3          = RGBi 0x89 0x68 0xcd
+
+medium_purple4          :: RGBi
+medium_purple4          = RGBi 0x5d 0x47 0x8b
+
+misty_rose1             :: RGBi
+misty_rose1             = RGBi 0xff 0xe4 0xe1
+
+misty_rose2             :: RGBi
+misty_rose2             = RGBi 0xee 0xd5 0xd2
+
+misty_rose3             :: RGBi
+misty_rose3             = RGBi 0xcd 0xb7 0xb5
+
+misty_rose4             :: RGBi
+misty_rose4             = RGBi 0x8b 0x7d 0x7b
+
+navajo_white1           :: RGBi
+navajo_white1           = RGBi 0xff 0xde 0xad
+
+navajo_white2           :: RGBi
+navajo_white2           = RGBi 0xee 0xcf 0xa1
+
+navajo_white3           :: RGBi
+navajo_white3           = RGBi 0xcd 0xb3 0x8b
+
+navajo_white4           :: RGBi
+navajo_white4           = RGBi 0x8b 0x79 0x5e
+
+olive_drab1             :: RGBi
+olive_drab1             = RGBi 0xc0 0xff 0x3e
+
+olive_drab2             :: RGBi
+olive_drab2             = RGBi 0xb3 0xee 0x3a
+
+olive_drab3             :: RGBi
+olive_drab3             = RGBi 0x9a 0xcd 0x32
+
+olive_drab4             :: RGBi
+olive_drab4             = RGBi 0x69 0x8b 0x22
+
+orange1                 :: RGBi
+orange1                 = RGBi 0xff 0xa5 0x00
+
+orange2                 :: RGBi
+orange2                 = RGBi 0xee 0x9a 0x00
+
+orange3                 :: RGBi
+orange3                 = RGBi 0xcd 0x85 0x00
+
+orange4                 :: RGBi
+orange4                 = RGBi 0x8b 0x5a 0x00
+
+orange_red1             :: RGBi
+orange_red1             = RGBi 0xff 0x45 0x00
+
+orange_red2             :: RGBi
+orange_red2             = RGBi 0xee 0x40 0x00
+
+orange_red3             :: RGBi
+orange_red3             = RGBi 0xcd 0x37 0x00
+
+orange_red4             :: RGBi
+orange_red4             = RGBi 0x8b 0x25 0x00
+
+orchid1                 :: RGBi
+orchid1                 = RGBi 0xff 0x83 0xfa
+
+orchid2                 :: RGBi
+orchid2                 = RGBi 0xee 0x7a 0xe9
+
+orchid3                 :: RGBi
+orchid3                 = RGBi 0xcd 0x69 0xc9
+
+orchid4                 :: RGBi
+orchid4                 = RGBi 0x8b 0x47 0x89
+
+pale_green1             :: RGBi
+pale_green1             = RGBi 0x9a 0xff 0x9a
+
+pale_green2             :: RGBi
+pale_green2             = RGBi 0x90 0xee 0x90
+
+pale_green3             :: RGBi
+pale_green3             = RGBi 0x7c 0xcd 0x7c
+
+pale_green4             :: RGBi
+pale_green4             = RGBi 0x54 0x8b 0x54
+
+pale_turquoise1         :: RGBi
+pale_turquoise1         = RGBi 0xbb 0xff 0xff
+
+pale_turquoise2         :: RGBi
+pale_turquoise2         = RGBi 0xae 0xee 0xee
+
+pale_turquoise3         :: RGBi
+pale_turquoise3         = RGBi 0x96 0xcd 0xcd
+
+pale_turquoise4         :: RGBi
+pale_turquoise4         = RGBi 0x66 0x8b 0x8b
+
+pale_violet_red1        :: RGBi
+pale_violet_red1        = RGBi 0xff 0x82 0xab
+
+pale_violet_red2        :: RGBi
+pale_violet_red2        = RGBi 0xee 0x79 0x9f
+
+pale_violet_red3        :: RGBi
+pale_violet_red3        = RGBi 0xcd 0x68 0x89
+
+pale_violet_red4        :: RGBi
+pale_violet_red4        = RGBi 0x8b 0x47 0x5d
+
+peach_puff1             :: RGBi
+peach_puff1             = RGBi 0xff 0xda 0xb9
+
+peach_puff2             :: RGBi
+peach_puff2             = RGBi 0xee 0xcb 0xad
+
+peach_puff3             :: RGBi
+peach_puff3             = RGBi 0xcd 0xaf 0x95
+
+peach_puff4             :: RGBi
+peach_puff4             = RGBi 0x8b 0x77 0x65
+
+pink1                   :: RGBi
+pink1                   = RGBi 0xff 0xb5 0xc5
+
+pink2                   :: RGBi
+pink2                   = RGBi 0xee 0xa9 0xb8
+
+pink3                   :: RGBi
+pink3                   = RGBi 0xcd 0x91 0x9e
+
+pink4                   :: RGBi
+pink4                   = RGBi 0x8b 0x63 0x6c
+
+plum1                   :: RGBi
+plum1                   = RGBi 0xff 0xbb 0xff
+
+plum2                   :: RGBi
+plum2                   = RGBi 0xee 0xae 0xee
+
+plum3                   :: RGBi
+plum3                   = RGBi 0xcd 0x96 0xcd
+
+plum4                   :: RGBi
+plum4                   = RGBi 0x8b 0x66 0x8b
+
+purple1                 :: RGBi
+purple1                 = RGBi 0x9b 0x30 0xff
+
+purple2                 :: RGBi
+purple2                 = RGBi 0x91 0x2c 0xee
+
+purple3                 :: RGBi
+purple3                 = RGBi 0x7d 0x26 0xcd
+
+purple4                 :: RGBi
+purple4                 = RGBi 0x55 0x1a 0x8b
+
+red1                    :: RGBi
+red1                    = RGBi 0xff 0x00 0x00
+
+red2                    :: RGBi
+red2                    = RGBi 0xee 0x00 0x00
+
+red3                    :: RGBi
+red3                    = RGBi 0xcd 0x00 0x00
+
+red4                    :: RGBi
+red4                    = RGBi 0x8b 0x00 0x00
+
+rosy_brown1             :: RGBi
+rosy_brown1             = RGBi 0xff 0xc1 0xc1
+
+rosy_brown2             :: RGBi
+rosy_brown2             = RGBi 0xee 0xb4 0xb4
+
+rosy_brown3             :: RGBi
+rosy_brown3             = RGBi 0xcd 0x9b 0x9b
+
+rosy_brown4             :: RGBi
+rosy_brown4             = RGBi 0x8b 0x69 0x69
+
+royal_blue1             :: RGBi
+royal_blue1             = RGBi 0x48 0x76 0xff
+
+royal_blue2             :: RGBi
+royal_blue2             = RGBi 0x43 0x6e 0xee
+
+royal_blue3             :: RGBi
+royal_blue3             = RGBi 0x3a 0x5f 0xcd
+
+royal_blue4             :: RGBi
+royal_blue4             = RGBi 0x27 0x40 0x8b
+
+
+salmon1                 :: RGBi
+salmon1                 = RGBi 0xff 0x8c 0x69
+
+salmon2                 :: RGBi
+salmon2                 = RGBi 0xee 0x82 0x62
+
+salmon3                 :: RGBi
+salmon3                 = RGBi 0xcd 0x70 0x54
+
+salmon4                 :: RGBi
+salmon4                 = RGBi 0x8b 0x4c 0x39
+
+sea_green1              :: RGBi
+sea_green1              = RGBi 0x54 0xff 0x9f
+
+sea_green2              :: RGBi
+sea_green2              = RGBi 0x4e 0xee 0x94
+
+sea_green3              :: RGBi
+sea_green3              = RGBi 0x43 0xcd 0x80
+
+sea_green4              :: RGBi
+sea_green4              = RGBi 0x2e 0x8b 0x57
+
+seashell1               :: RGBi
+seashell1               = RGBi 0xff 0xf5 0xee
+
+seashell2               :: RGBi
+seashell2               = RGBi 0xee 0xe5 0xde
+
+seashell3               :: RGBi
+seashell3               = RGBi 0xcd 0xc5 0xbf
+
+seashell4               :: RGBi
+seashell4               = RGBi 0x8b 0x86 0x82
+
+sienna1                 :: RGBi
+sienna1                 = RGBi 0xff 0x82 0x47
+
+sienna2                 :: RGBi
+sienna2                 = RGBi 0xee 0x79 0x42
+
+sienna3                 :: RGBi
+sienna3                 = RGBi 0xcd 0x68 0x39
+
+sienna4                 :: RGBi
+sienna4                 = RGBi 0x8b 0x47 0x26
+
+sky_blue1               :: RGBi
+sky_blue1               = RGBi 0x87 0xce 0xff
+
+sky_blue2               :: RGBi
+sky_blue2               = RGBi 0x7e 0xc0 0xee
+
+sky_blue3               :: RGBi
+sky_blue3               = RGBi 0x6c 0xa6 0xcd
+
+sky_blue4               :: RGBi
+sky_blue4               = RGBi 0x4a 0x70 0x8b
+
+slate_blue1             :: RGBi
+slate_blue1             = RGBi 0x83 0x6f 0xff
+
+slate_blue2             :: RGBi
+slate_blue2             = RGBi 0x7a 0x67 0xee
+
+slate_blue3             :: RGBi
+slate_blue3             = RGBi 0x69 0x59 0xcd
+
+slate_blue4             :: RGBi
+slate_blue4             = RGBi 0x47 0x3c 0x8b
+
+slate_gray1             :: RGBi
+slate_gray1             = RGBi 0xc6 0xe2 0xff
+
+slate_gray2             :: RGBi
+slate_gray2             = RGBi 0xb9 0xd3 0xee
+
+slate_gray3             :: RGBi
+slate_gray3             = RGBi 0x9f 0xb6 0xcd
+
+slate_gray4             :: RGBi
+slate_gray4             = RGBi 0x6c 0x7b 0x8b
+
+snow1                   :: RGBi
+snow1                   = RGBi 0xff 0xfa 0xfa
+
+snow2                   :: RGBi
+snow2                   = RGBi 0xee 0xe9 0xe9
+
+snow3                   :: RGBi
+snow3                   = RGBi 0xcd 0xc9 0xc9
+
+snow4                   :: RGBi
+snow4                   = RGBi 0x8b 0x89 0x89
+
+spring_green1           :: RGBi
+spring_green1           = RGBi 0x00 0xff 0x7f
+
+spring_green2           :: RGBi
+spring_green2           = RGBi 0x00 0xee 0x76
+
+spring_green3           :: RGBi
+spring_green3           = RGBi 0x00 0xcd 0x66
+
+spring_green4           :: RGBi
+spring_green4           = RGBi 0x00 0x8b 0x45
+
+steel_blue1             :: RGBi
+steel_blue1             = RGBi 0x63 0xb8 0xff
+
+steel_blue2             :: RGBi
+steel_blue2             = RGBi 0x5c 0xac 0xee
+
+steel_blue3             :: RGBi
+steel_blue3             = RGBi 0x4f 0x94 0xcd
+
+steel_blue4             :: RGBi
+steel_blue4             = RGBi 0x36 0x64 0x8b
+
+tan1                    :: RGBi
+tan1                    = RGBi 0xff 0xa5 0x4f
+
+tan2                    :: RGBi
+tan2                    = RGBi 0xee 0x9a 0x49
+
+tan3                    :: RGBi
+tan3                    = RGBi 0xcd 0x85 0x3f
+
+tan4                    :: RGBi
+tan4                    = RGBi 0x8b 0x5a 0x2b
+
+thistle1                :: RGBi
+thistle1                = RGBi 0xff 0xe1 0xff
+
+thistle2                :: RGBi
+thistle2                = RGBi 0xee 0xd2 0xee
+
+thistle3                :: RGBi
+thistle3                = RGBi 0xcd 0xb5 0xcd
+
+thistle4                :: RGBi
+thistle4                = RGBi 0x8b 0x7b 0x8b
+
+tomato1                 :: RGBi
+tomato1                 = RGBi 0xff 0x63 0x47
+
+tomato2                 :: RGBi
+tomato2                 = RGBi 0xee 0x5c 0x42
+
+tomato3                 :: RGBi
+tomato3                 = RGBi 0xcd 0x4f 0x39
+
+tomato4                 :: RGBi
+tomato4                 = RGBi 0x8b 0x36 0x26
+
+turquoise1              :: RGBi
+turquoise1              = RGBi 0x00 0xf5 0xff
+
+turquoise2              :: RGBi
+turquoise2              = RGBi 0x00 0xe5 0xee
+
+turquoise3              :: RGBi
+turquoise3              = RGBi 0x00 0xc5 0xcd
+
+turquoise4              :: RGBi
+turquoise4              = RGBi 0x00 0x86 0x8b
+
+violet_red1             :: RGBi
+violet_red1             = RGBi 0xff 0x3e 0x96
+
+violet_red2             :: RGBi
+violet_red2             = RGBi 0xee 0x3a 0x8c
+
+violet_red3             :: RGBi
+violet_red3             = RGBi 0xcd 0x32 0x78
+
+violet_red4             :: RGBi
+violet_red4             = RGBi 0x8b 0x22 0x52
+
+wheat1                  :: RGBi
+wheat1                  = RGBi 0xff 0xe7 0xba
+
+wheat2                  :: RGBi
+wheat2                  = RGBi 0xee 0xd8 0xae
+
+wheat3                  :: RGBi
+wheat3                  = RGBi 0xcd 0xba 0x96
+
+wheat4                  :: RGBi
+wheat4                  = RGBi 0x8b 0x7e 0x66
+
+yellow1                 :: RGBi
+yellow1                 = RGBi 0xff 0xff 0x00
+
+yellow2                 :: RGBi
+yellow2                 = RGBi 0xee 0xee 0x00
+
+yellow3                 :: RGBi
+yellow3                 = RGBi 0xcd 0xcd 0x00
+
+yellow4                 :: RGBi
+yellow4                 = RGBi 0x8b 0x8b 0x00
+
+
+
+
+
+
diff --git a/src/Wumpus/Basic/Dots/Base.hs b/src/Wumpus/Basic/Dots/Base.hs
--- a/src/Wumpus/Basic/Dots/Base.hs
+++ b/src/Wumpus/Basic/Dots/Base.hs
@@ -128,7 +128,7 @@
     dvn   = (.+^ vvec hh)
     dvw   = (.+^ hvec (-hw))
 
-type PathF u = Point2 u -> Path u
+type PathF u = Point2 u -> PrimPath u
 
 dotDiamond :: (Fractional u, FromPtSize u) => DrawingAttr -> GraphicF u
 dotDiamond attr = 
diff --git a/src/Wumpus/Basic/Graphic.hs b/src/Wumpus/Basic/Graphic.hs
--- a/src/Wumpus/Basic/Graphic.hs
+++ b/src/Wumpus/Basic/Graphic.hs
@@ -122,7 +122,7 @@
 drawGraphic f = post $ f []
   where
     post [] = Nothing
-    post xs = Just $ frameMulti $ xs 
+    post xs = Just $ frame xs 
 
 
 -- | /Unsafe/ version of 'drawGraphic' - this function throws 
@@ -170,12 +170,12 @@
 filledRectangle :: (Fill t, Fractional u) => t -> u -> u -> GraphicF u
 filledRectangle t w h = wrapG . fill t . rectangle w h
 
-rectangle :: Fractional u => u -> u -> Point2 u -> Path u
+rectangle :: Fractional u => u -> u -> Point2 u -> PrimPath u
 rectangle w h ctr = rectanglePath w h (ctr .-^ vec (0.5*w) (0.5*h))
 
 -- | Supplied point is /bottom-left/.
 --
-rectanglePath :: Num u => u -> u -> Point2 u -> Path u
+rectanglePath :: Num u => u -> u -> Point2 u -> PrimPath u
 rectanglePath w h bl = path bl [ lineTo br, lineTo tr, lineTo tl ]
   where
     br = bl .+^ hvec w
diff --git a/src/Wumpus/Basic/Graphic/DrawingAttr.hs b/src/Wumpus/Basic/Graphic/DrawingAttr.hs
--- a/src/Wumpus/Basic/Graphic/DrawingAttr.hs
+++ b/src/Wumpus/Basic/Graphic/DrawingAttr.hs
@@ -41,7 +41,7 @@
 
 
 import Wumpus.Basic.SafeFonts
-import Wumpus.Basic.SVGColours
+import Wumpus.Basic.Colour.SVGColours
 import Wumpus.Basic.Utils.Combinators
 
 import Wumpus.Core                      -- package: wumpus-core
@@ -51,8 +51,8 @@
 data DrawingAttr = DrawingAttr 
       { line_width         :: Double
       , font_props         :: FontAttr
-      , stroke_colour      :: DRGB
-      , fill_colour        :: DRGB
+      , stroke_colour      :: RGBi
+      , fill_colour        :: RGBi
       }
   deriving (Eq,Show)
 
@@ -63,13 +63,13 @@
                               , fill_colour        = gold  }
 
  
-strokeAttr :: DrawingAttr -> (DRGB, StrokeAttr)
+strokeAttr :: DrawingAttr -> (RGBi, StrokeAttr)
 strokeAttr = liftA2 (,) stroke_colour (LineWidth . line_width)
 
-fillAttr :: DrawingAttr -> DRGB
+fillAttr :: DrawingAttr -> RGBi
 fillAttr = fill_colour
 
-textAttr :: DrawingAttr -> (DRGB,FontAttr)
+textAttr :: DrawingAttr -> (RGBi,FontAttr)
 textAttr = liftA2 (,) stroke_colour font_props
 
 -- | A Mark is consider to be the height of a lowercase letter
diff --git a/src/Wumpus/Basic/Monads/TurtleMonad.hs b/src/Wumpus/Basic/Monads/TurtleMonad.hs
--- a/src/Wumpus/Basic/Monads/TurtleMonad.hs
+++ b/src/Wumpus/Basic/Monads/TurtleMonad.hs
@@ -35,7 +35,6 @@
   , runTurtle
   , runTurtleT
 
-
   , TurtleDrawing
   , runTurtleDrawing
   , execTurtleDrawing
@@ -50,7 +49,6 @@
 import Wumpus.Basic.Monads.TurtleClass
 
 
-import MonadLib ( MonadT(..) )          -- package: monadLib
 
 import Control.Applicative
 import Control.Monad
@@ -112,11 +110,8 @@
                                (getTurtleT . k) a r s' >>= \(b,s'') ->
                                return (b,s'')
 
-instance MonadT (TurtleT u) where
-  lift m = TurtleT $ \_ s -> m >>= \a -> return (a,s)
 
 
-
 instance TurtleM (Turtle u) where
   getLoc      = Turtle $ \_ s@(TurtleState _ c) -> (c,s)
   setLoc c    = Turtle $ \_   (TurtleState o _) -> ((),TurtleState o c)
@@ -150,6 +145,7 @@
 
 
 
+
 ----------------------------------------------------------------------------------
 -- Cross instances
 
@@ -196,16 +192,19 @@
   xStep    = TurtleDrawing $ xStep
   yStep    = TurtleDrawing $ yStep
 
+
+-- Lifters no longer supplied...
 -- TraceM 
 
 instance TraceM (TurtleDrawing u) u where
-  trace a = TurtleDrawing $ lift (trace a)
+  trace a = TurtleDrawing $ trace a
 
 
+
 -- DrawingCtxM
 
 instance DrawingCtxM (TurtleDrawing u) where
-  askDrawingCtx   = TurtleDrawing $ lift askDrawingCtx
+  askDrawingCtx   = TurtleDrawing $ askDrawingCtx
   localCtx ctx ma = TurtleDrawing $ localCtx ctx (getTurtleDrawing ma)
 
 
diff --git a/src/Wumpus/Basic/Paths.hs b/src/Wumpus/Basic/Paths.hs
--- a/src/Wumpus/Basic/Paths.hs
+++ b/src/Wumpus/Basic/Paths.hs
@@ -46,40 +46,40 @@
 
 
 
-connectS :: Floating u => BPathF u
+connectS :: Floating u => PathF u
 connectS = \p0 p1 -> execPath p0 $ lineto p1
 
 
 
 -- This one might be more useful...
 
-pathGraphic :: Num u => BPath u -> DrawingAttr -> Graphic u
-pathGraphic bpath attr = wrapG $ ostroke (strokeAttr attr) $ toPathU bpath
+pathGraphic :: Num u => Path u -> DrawingAttr -> Graphic u
+pathGraphic bpath attr = wrapG $ ostroke (strokeAttr attr) $ toPrimPathU bpath
 
 
 
 
-shorten  :: (Real u, Floating u, Ord u) => u -> BPath u -> BPath u
+shorten  :: (Real u, Floating u, Ord u) => u -> Path u -> Path u
 shorten u p = shortenL u $ shortenR u p
 
 --------------------------------------------------------------------------------
 -- shorten from the left...
 
-shortenL :: (Real u, Floating u, Ord u) => u -> BPath u -> BPath u
-shortenL n (BPath u bp) | n >= u         = emptyPath
-                        | otherwise      = step n (viewl bp)
+shortenL :: (Real u, Floating u, Ord u) => u -> Path u -> Path u
+shortenL n (Path u bp) | n >= u         = emptyPath
+                       | otherwise      = step n (viewl bp)
   where
     step _ EmptyL     = emptyPath
     step d (e :< se)  = let z = segmentLength e in
                         case compare d z of
                           GT -> step (d-z) (viewl se)
-                          EQ -> BPath (u-n) se
-                          _  -> BPath (u-n) (shortenSegL d e <| se)
+                          EQ -> Path (u-n) se
+                          _  -> Path (u-n) (shortenSegL d e <| se)
 
 
-shortenSegL :: (Real u, Floating u) => u -> BPathSeg u -> BPathSeg u
-shortenSegL n (BLineSeg  u l) = BLineSeg  (u-n) (shortenLineL n l) 
-shortenSegL n (BCurveSeg u c) = BCurveSeg (u-n) (snd $ subdividet (n/u) c)
+shortenSegL :: (Real u, Floating u) => u -> PathSeg u -> PathSeg u
+shortenSegL n (LineSeg  u l) = LineSeg  (u-n) (shortenLineL n l) 
+shortenSegL n (CurveSeg u c) = CurveSeg (u-n) (snd $ subdividet (n/u) c)
 
 shortenLineL :: (Real u, Floating u) => u -> Line u -> Line u
 shortenLineL n (Line p1 p2) = Line (p1 .+^ v) p2
@@ -90,22 +90,22 @@
 --------------------------------------------------------------------------------
 -- shorten from the right ...
  
-shortenR :: (Real u, Floating u, Ord u) => u -> BPath u -> BPath u
-shortenR n (BPath u bp) | n >= u         = emptyPath
-                        | otherwise      = step n (viewr bp)
+shortenR :: (Real u, Floating u, Ord u) => u -> Path u -> Path u
+shortenR n (Path u bp) | n >= u         = emptyPath
+                       | otherwise      = step n (viewr bp)
   where
     step _ EmptyR     = emptyPath
     step d (se :> e)  = let z = segmentLength e in
                         case compare d z of
                           GT -> step (d-z) (viewr se)
-                          EQ -> BPath (u-n) se
-                          _  -> BPath (u-n) (se |> shortenSegR d e)
+                          EQ -> Path (u-n) se
+                          _  -> Path (u-n) (se |> shortenSegR d e)
 
 
 
-shortenSegR :: (Real u, Floating u) => u -> BPathSeg u -> BPathSeg u
-shortenSegR n (BLineSeg  u l) = BLineSeg  (u-n) (shortenLineR n l) 
-shortenSegR n (BCurveSeg u c) = BCurveSeg (u-n) (fst $ subdividet ((u-n)/u) c)
+shortenSegR :: (Real u, Floating u) => u -> PathSeg u -> PathSeg u
+shortenSegR n (LineSeg  u l) = LineSeg  (u-n) (shortenLineR n l) 
+shortenSegR n (CurveSeg u c) = CurveSeg (u-n) (fst $ subdividet ((u-n)/u) c)
 
 
 shortenLineR :: (Real u, Floating u) => u -> Line u -> Line u
@@ -118,8 +118,8 @@
 
 --------------------------------------------------------------------------------
 
-midpoint :: (Real u, Floating u) => BPath u -> Point2 u
-midpoint (BPath u bp) = step (u/2) (viewl bp)
+midpoint :: (Real u, Floating u) => Path u -> Point2 u
+midpoint (Path u bp) = step (u/2) (viewl bp)
   where
     step _ EmptyL    = zeroPt
     step d (e :< se) = let z = segmentLength e in
@@ -136,19 +136,19 @@
 -- tangents
 
 
-directionL :: (Real u, Floating u) => BPath u -> Radian
-directionL (BPath _ se) = step $ viewl se
+directionL :: (Real u, Floating u) => Path u -> Radian
+directionL (Path _ se) = step $ viewl se
   where
-    step (BLineSeg  _ l :< _) = lineDirectionL l 
-    step (BCurveSeg _ c :< _) = curveDirectionL c
-    step _                    = 0
+    step (LineSeg  _ l :< _) = lineDirectionL l 
+    step (CurveSeg _ c :< _) = curveDirectionL c
+    step _                   = 0
 
-directionR :: (Real u, Floating u) => BPath u -> Radian
-directionR (BPath _ se) = step $ viewr se
+directionR :: (Real u, Floating u) => Path u -> Radian
+directionR (Path _ se) = step $ viewr se
   where
-    step (_ :> BLineSeg  _ l) = lineDirectionR l 
-    step (_ :> BCurveSeg _ c) = curveDirectionR c
-    step _                    = 0
+    step (_ :> LineSeg  _ l) = lineDirectionR l 
+    step (_ :> CurveSeg _ c) = curveDirectionR c
+    step _                   = 0
 
 
 lineDirectionL :: (Real u, Floating u) => Line u -> Radian
diff --git a/src/Wumpus/Basic/Paths/Base.hs b/src/Wumpus/Basic/Paths/Base.hs
--- a/src/Wumpus/Basic/Paths/Base.hs
+++ b/src/Wumpus/Basic/Paths/Base.hs
@@ -22,10 +22,10 @@
 module Wumpus.Basic.Paths.Base
   ( 
 
-    BPathF
+    PathF
 
-  , BPath(..)
-  , BPathSeg(..)
+  , Path(..)
+  , PathSeg(..)
   , Curve(..)
   , Line(..)
   , emptyPath
@@ -36,8 +36,8 @@
   , segmentStart
   , segmentEnd
 
-  , toPath 
-  , toPathU
+  , toPrimPath 
+  , toPrimPathU
   , subdivide
   , subdividet
     
@@ -53,20 +53,20 @@
 import qualified Data.Sequence as S
 
 
-type BPathF u = Point2 u -> Point2 u -> BPath u
+type PathF u = Point2 u -> Point2 u -> Path u
 
 
-data BPath u = BPath 
+data Path u = Path 
        { path_length    :: u 
-       , path_elements  :: Seq (BPathSeg u)
+       , path_elements  :: Seq (PathSeg u)
        }
   deriving (Eq,Ord,Show)
 
 
 -- Annotation is length...
 -- 
-data BPathSeg u = BLineSeg  u (Line u)
-                | BCurveSeg u (Curve u)
+data PathSeg u = LineSeg  u (Line u)
+               | CurveSeg u (Curve u)
   deriving (Eq,Ord,Show)
 
 
@@ -85,36 +85,36 @@
   deriving (Eq,Ord,Show)
 
 
-emptyPath :: Num u => BPath u 
-emptyPath = BPath 0 S.empty
+emptyPath :: Num u => Path u 
+emptyPath = Path 0 S.empty
 
 
-addSegment :: Num u => BPath u -> BPathSeg u -> BPath u
-addSegment (BPath n se) e@(BLineSeg u _)  = BPath (n+u) (se |> e)
-addSegment (BPath n se) e@(BCurveSeg u _) = BPath (n+u) (se |> e)
+addSegment :: Num u => Path u -> PathSeg u -> Path u
+addSegment (Path n se) e@(LineSeg u _)  = Path (n+u) (se |> e)
+addSegment (Path n se) e@(CurveSeg u _) = Path (n+u) (se |> e)
 
-segmentLength :: BPathSeg u -> u
-segmentLength (BLineSeg  u _) = u
-segmentLength (BCurveSeg u _) = u
+segmentLength :: PathSeg u -> u
+segmentLength (LineSeg  u _) = u
+segmentLength (CurveSeg u _) = u
 
-segmentStart :: BPathSeg u -> Point2 u
-segmentStart (BLineSeg  _ (Line p0 _))      = p0
-segmentStart (BCurveSeg _ (Curve p0 _ _ _)) = p0
+segmentStart :: PathSeg u -> Point2 u
+segmentStart (LineSeg  _ (Line p0 _))      = p0
+segmentStart (CurveSeg _ (Curve p0 _ _ _)) = p0
 
-segmentEnd :: BPathSeg u -> Point2 u
-segmentEnd (BLineSeg  _ (Line _ p1))      = p1
-segmentEnd (BCurveSeg _ (Curve _ _ _ p3)) = p3
+segmentEnd :: PathSeg u -> Point2 u
+segmentEnd (LineSeg  _ (Line _ p1))      = p1
+segmentEnd (CurveSeg _ (Curve _ _ _ p3)) = p3
 
 
 
 
-pline :: Floating u => Point2 u -> Point2 u -> BPathSeg u 
-pline p0 p1 = BLineSeg (vlength $ pvec p0 p1) (Line p0 p1)
+pline :: Floating u => Point2 u -> Point2 u -> PathSeg u 
+pline p0 p1 = LineSeg (vlength $ pvec p0 p1) (Line p0 p1)
 
 pcurve :: (Floating u, Ord u)
-       => Point2 u -> Point2 u -> Point2 u -> Point2 u -> BPathSeg u 
+       => Point2 u -> Point2 u -> Point2 u -> Point2 u -> PathSeg u 
 pcurve p0 p1 p2 p3 = 
-    let c = Curve p0 p1 p2 p3 in BCurveSeg (curveLength c) c
+    let c = Curve p0 p1 p2 p3 in CurveSeg (curveLength c) c
 
 
 -- | Turn a BasicPath into an ordinary Path.
@@ -127,8 +127,8 @@
 -- segment is the same point as the start point of the next
 -- segment.
 --
-toPath :: BPath u -> Maybe (Path u)
-toPath = step1 . viewl . path_elements
+toPrimPath :: Path u -> Maybe (PrimPath u)
+toPrimPath = step1 . viewl . path_elements
   where
     step1 EmptyL               = Nothing
     step1 (e :< se)            = let (p1,s) = elemP e in 
@@ -137,14 +137,14 @@
     step2 EmptyL               = []
     step2 (e :< se)            = snd (elemP e) : step2 (viewl se)
     
-    elemP (BLineSeg  _ l)      = elemL l
-    elemP (BCurveSeg _ c)      = elemC c
+    elemP (LineSeg  _ l)       = elemL l
+    elemP (CurveSeg _ c)       = elemC c
  
     elemL (Line p1 p2)         = (p1, lineTo p2)
     elemC (Curve p1 p2 p3 p4)  = (p1, curveTo p2 p3 p4)
 
-toPathU :: BPath u -> Path u
-toPathU = fromMaybe errK . toPath
+toPrimPathU :: Path u -> PrimPath u
+toPrimPathU = fromMaybe errK . toPrimPath
   where
     errK = error "toPathU - empty Path"
 
diff --git a/src/Wumpus/Basic/Paths/Construction.hs b/src/Wumpus/Basic/Paths/Construction.hs
--- a/src/Wumpus/Basic/Paths/Construction.hs
+++ b/src/Wumpus/Basic/Paths/Construction.hs
@@ -43,7 +43,7 @@
 
 data PathState u = PathState 
       { current_point :: Point2 u 
-      , path_accum    :: BPath u
+      , path_accum    :: Path u
       }
 
 newtype MPath u a = MPath { getMPath :: PathState u -> (a,PathState u) }
@@ -66,18 +66,18 @@
                             (getMPath . k) a s'
 
 
-runPath :: Num u => Point2 u -> MPath u a -> (a, BPath u)
+runPath :: Num u => Point2 u -> MPath u a -> (a, Path u)
 runPath start mf = let (a,s') = getMPath mf s in (a, path_accum s')
   where
     s = PathState { current_point = start
                   , path_accum    = emptyPath
                   }
 
-execPath :: Num u => Point2 u -> MPath u a -> BPath u
+execPath :: Num u => Point2 u -> MPath u a -> Path u
 execPath start mf = snd $ runPath start mf
 
 
-exchTip :: Point2 u -> (Point2 u -> BPath u -> BPath u) -> MPath u ()
+exchTip :: Point2 u -> (Point2 u -> Path u -> Path u) -> MPath u ()
 exchTip new updP = 
     MPath $ \(PathState old bp) -> ((), PathState new (updP old bp)) 
 
@@ -107,7 +107,7 @@
 
 
 pcurveAng :: (Floating u, Ord u) 
-        => Point2 u -> Radian -> Radian -> Point2 u -> BPathSeg u
+        => Point2 u -> Radian -> Radian -> Point2 u -> PathSeg u
 pcurveAng start cin cout end = pcurve start (start .+^ v1) (end .+^ v2) end
   where
     sz     = 0.375 * (vlength $ pvec start end)
diff --git a/src/Wumpus/Basic/PictureLanguage.hs b/src/Wumpus/Basic/PictureLanguage.hs
new file mode 100644
--- /dev/null
+++ b/src/Wumpus/Basic/PictureLanguage.hs
@@ -0,0 +1,481 @@
+{-# OPTIONS -Wall #-}
+
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Wumpus.Basic.PictureLanguage
+-- Copyright   :  (c) Stephen Tetley 2009-2010
+-- License     :  BSD3
+--
+-- Maintainer  :  stephen.tetley@gmail.com
+-- Stability   :  unstable
+-- Portability :  GHC
+--
+-- Composition operators for Pictures.
+--
+-- Note - empty pictures cannot exist in Wumpus hence the /list/ 
+-- functions in this module are always supplied with an initial 
+-- picture, as well as the (possibly empty) list.
+--
+--------------------------------------------------------------------------------
+
+module Wumpus.Basic.PictureLanguage 
+  (
+  -- * Data types for alignment 
+    HAlign(..)
+  , VAlign(..)
+
+  -- * Operations on boundary
+  , centerPoint
+
+  -- * Composition
+  , over 
+  , under
+
+  , centerOver
+  , nextToH
+  , nextToV
+  
+  , atPoint 
+  , centeredAt
+
+  , stackOver
+  , zconcat
+
+  , hcat 
+  , vcat
+  , stackOverCenter
+
+
+  , hspace
+  , vspace
+  , hsep
+  , vsep
+ 
+  -- * Compose with alignment
+  , alignH
+  , alignV
+  , alignHSep
+  , alignVSep
+  , hcatA
+  , vcatA
+  , hsepA
+  , vsepA
+
+  ) where
+
+import Wumpus.Core
+
+import Data.AdditiveGroup
+import Data.AffineSpace
+
+import Data.List ( foldl' )
+
+
+--------------------------------------------------------------------------------
+-- Data types
+
+-- Alignment
+
+-- | Horizontal alignment - align to the top, center or bottom.
+data HAlign = HTop | HCenter | HBottom
+  deriving (Eq,Show)
+
+-- | Vertical alignment - align to the left, center or bottom.
+data VAlign = VLeft | VCenter | VRight
+  deriving (Eq,Show)
+
+
+--------------------------------------------------------------------------------
+
+-- Operations on bounds
+
+-- Corresponding operations are available on bounding boxes - the 
+-- definitions here have different type class obligations.
+
+-- | The center of a picture.
+centerPoint :: Fractional u => Picture u -> Point2 u
+centerPoint = fn . boundary
+  where  
+    fn (BBox (P2 x0 y0) (P2 x1 y1)) = P2 (x0 + ((x1-x0)*0.5)) 
+                                         (y0 + ((y1-y0)*0.5))
+
+rightBound :: Picture u -> u
+rightBound = fn . ur_corner . boundary
+  where
+    fn (P2 x _) = x
+
+
+leftBound :: Picture u -> u
+leftBound = fn . ll_corner . boundary
+  where
+    fn (P2 x _) = x
+
+bottomBound :: Picture u -> u
+bottomBound = fn . ll_corner . boundary
+  where
+    fn (P2 _ y) = y
+
+topBound :: Picture u -> u
+topBound = fn . ur_corner . boundary
+  where
+    fn (P2 _ y) = y
+
+
+
+--------------------------------------------------------------------------------
+-- Composition operators
+
+-- | > a `over` b
+-- 
+-- Place \'picture\' a over b. The idea of @over@ here is in 
+-- terms z-ordering, nither picture a or b are actually moved.
+--
+over    :: (Num u, Ord u) => Picture u -> Picture u -> Picture u
+over = picOver
+
+
+-- | > a `under` b
+--
+-- Similarly @under@ draws the first picture behind 
+-- the second but move neither.
+--
+-- @under@ was previously @beneath@.
+--
+under :: (Num u, Ord u) => Picture u -> Picture u -> Picture u
+
+under = flip over
+
+
+  
+-- | Move in both the horizontal and vertical.
+--
+move :: (Num u, Ord u) => Vec2 u -> Picture u -> Picture u
+move = flip picMoveBy
+
+
+
+
+
+
+
+-- | Extract the top-left corner.
+--
+topleft       :: Picture u -> Point2 u
+topleft       = fn . boundary 
+  where
+    fn (BBox (P2 x0 _) (P2 _ y1)) = P2 x0 y1
+
+-- | Extract the top-right corner.
+--
+topright      :: Picture u -> Point2 u
+topright      = ur_corner . boundary
+
+-- | Extract the bottom-left corner.
+--
+bottomleft    :: Picture u -> Point2 u
+bottomleft    = ll_corner . boundary
+
+-- | Extract the bottom-right corner.
+--
+bottomright   :: Picture u -> Point2 u
+bottomright   = fn . boundary
+  where
+    fn (BBox (P2 _ y0) (P2 x1 _)) = P2 x1 y0
+
+
+--------------------------------------------------------------------------------
+-- Internal helpers
+
+leftmid       :: Fractional u => Picture u -> Point2 u
+leftmid a     = P2 (leftBound a) (midpt (bottomBound a) (topBound a))
+
+rightmid      :: Fractional u => Picture u -> Point2 u
+rightmid a    = P2 (rightBound a) (midpt (bottomBound a) (topBound a))
+
+
+topmid        :: Fractional u => Picture u -> Point2 u
+topmid a      = P2 (midpt (leftBound a) (rightBound a)) (topBound a)
+
+bottommid     :: Fractional u => Picture u -> Point2 u
+bottommid a   = P2 (midpt (leftBound a) (rightBound a)) (bottomBound a)
+
+
+midpt :: Fractional a => a -> a -> a
+midpt a b = a + 0.5*(b-a)
+
+
+--------------------------------------------------------------------------------
+-- Composition
+
+infixr 5 `nextToV`
+infixr 6 `nextToH`, `centerOver`
+
+
+-- Note - `centerOver` moves the first argument, whereas other 
+-- functions move the second...
+
+-- | Draw a centered over b - a is moved, b is static.
+--
+-- > a `centerOver` b 
+--
+-- 'centerOver' was previously the (-\@-) operator.
+-- 
+centerOver :: (Fractional u, Ord u) => Picture u -> Picture u -> Picture u
+p1 `centerOver` p2 = (move v p1) `over` p2 
+  where 
+    v = centerPoint p2 .-. centerPoint p1
+
+
+-- | > a `nextToH` b
+-- 
+-- Horizontal composition - move @b@, placing it to the right 
+-- of @a@.
+-- 
+-- 'nextToH' was previously the (->-) operator.
+--
+nextToH :: (Num u, Ord u) => Picture u -> Picture u -> Picture u
+a `nextToH` b = a `over` move hv b 
+  where 
+    hv = hvec $ rightBound a - leftBound b 
+
+
+
+-- | > a `nextToV` b
+--
+-- Vertical composition - move @b@, placing it below @a@.
+--
+-- nextToV  was previously the (-//-) operator.
+--
+nextToV :: (Num u, Ord u) => Picture u -> Picture u -> Picture u
+a `nextToV` b = a `over` move vv b 
+  where 
+    vv = vvec $ bottomBound a - topBound b 
+
+
+-- | Place the picture at the supplied point.
+--
+-- `atPoint` was previous the `at` operator.
+-- 
+atPoint :: (Num u, Ord u) => Picture u -> Point2 u  -> Picture u
+p `atPoint` (P2 x y) = move (V2 x y) p
+
+
+-- | Center the picture at the supplied point.
+--
+centeredAt :: (Fractional u, Ord u) => Picture u -> Point2 u ->Picture u
+centeredAt p (P2 x y) = move (vec dx dy) p 
+  where
+    bb = boundary p
+    dx = x - (boundaryWidth  bb * 0.5)
+    dy = y - (boundaryHeight bb * 0.5)
+
+
+
+-- | > xs `stackOver` x
+-- 
+-- Stack the list of pictures @xs@ 'over' @x@.
+--
+-- Note, the first picture in the list is drawn at the top, all 
+-- the pictures in the list are drawn \'over\' @x@. No pictures
+-- are moved 
+--
+-- @ [p1,p2,p3] `stackOver` p4 => [p1,p2,p3,p4] @
+--
+stackOver :: (Num u, Ord u) => [Picture u] -> Picture u -> Picture u
+stackOver = flip (foldr over)
+
+
+
+-- | > x `zconcat` xs
+-- 
+-- Concatenate @x@ over the list of pictures @xs@. 
+--
+-- @x@ is drawn at the top. No pictures are moved. 
+--
+-- @ p1 `zconcat` [p2,p3,p4] => [p1,p2,p3,p4] @
+--
+zconcat :: (Num u, Ord u) => Picture u -> [Picture u] -> Picture u
+zconcat = foldl' over
+
+
+
+
+
+-- | Concatenate the list pictures @xs@ horizontally with @nextToH@ 
+-- starting at @x@.
+-- 
+hcat :: (Num u, Ord u) => Picture u -> [Picture u] -> Picture u
+hcat = foldl' nextToH
+
+
+-- | Concatenate the list of pictures @xs@ vertically with @nextToV@ 
+-- starting at @x@.
+--
+vcat :: (Num u, Ord u) => Picture u -> [Picture u] -> Picture u
+vcat = foldl' nextToV
+
+
+
+-- | Stack pictures centered ontop of each other - the first 
+-- picture in the list is drawn at the top, last picture is on 
+-- drawn at the bottom.
+--
+stackOverCenter :: (Fractional u, Ord u) 
+                => [Picture u] -> Picture u -> Picture u
+stackOverCenter = flip $ foldr centerOver
+
+
+
+--------------------------------------------------------------------------------
+
+
+
+
+-- | > hspace n a b
+--
+-- Horizontal composition - move @b@, placing it to the right 
+-- of @a@ with a horizontal gap of @n@ separating the pictures.
+--
+hspace :: (Num u, Ord u) => u -> Picture u -> Picture u -> Picture u
+hspace n a b = a `over` move hv b
+  where
+    hv = hvec $ n + rightBound a - leftBound b 
+
+    
+
+
+
+-- | > vspace n a b
+--
+-- Vertical composition - move @b@, placing it below @a@ with a
+-- vertical gap of @n@ separating the pictures.
+--
+vspace :: (Num u, Ord u) => u -> Picture u -> Picture u -> Picture u
+vspace n a b = a `over` move vv b 
+  where 
+    vv = vvec $ bottomBound a - topBound b - n
+
+
+
+-- | > hsep n x xs
+--
+-- Concatenate the list of pictures @xs@ horizontally with 
+-- @hspace@ starting at @x@. The pictures are interspersed with 
+-- spaces of @n@ units.
+--
+hsep :: (Num u, Ord u) => u -> Picture u -> [Picture u] -> Picture u
+hsep n = foldl' (hspace n)
+
+
+
+-- | > vsep n x xs
+--
+-- Concatenate the list of pictures @xs@ vertically with 
+-- @vspace@ starting at @x@. The pictures are interspersed with 
+-- spaces of @n@ units.
+--
+vsep :: (Num u, Ord u) => u -> Picture u -> [Picture u] -> Picture u
+vsep n = foldl' (vspace n)
+
+
+--------------------------------------------------------------------------------
+-- Aligning pictures
+
+vecMove :: (Num u, Ord u) => Picture u -> Picture u -> (Vec2 u) -> Picture u 
+vecMove a b v = a `over` (move v b)
+
+
+
+-- | > alignH align a b
+-- 
+-- Horizontal composition - move @b@, placing it to the right 
+-- of @a@ and align it with the top, center or bottom of @a@.
+-- 
+alignH :: (Fractional u, Ord u) 
+       =>  HAlign -> Picture u -> Picture u -> Picture u
+alignH align p1 p2 = vecMove p1 p2 $ fn align
+  where
+    fn HTop    = topright p1    .-. topleft p2
+    fn HCenter = rightmid p1    .-. leftmid p2
+    fn HBottom = bottomright p1 .-. bottomleft p2
+
+
+-- | > alignV align a b
+-- 
+-- Vertical composition - move @b@, placing it below @a@ 
+-- and align it with the left, center or right of @a@.
+-- 
+alignV :: (Fractional u, Ord u) 
+           => VAlign -> Picture u -> Picture u -> Picture u
+alignV align p1 p2 = vecMove p1 p2 $ fn align
+  where
+    fn VLeft   = bottomleft p1  .-. topleft p2
+    fn VCenter = bottommid p1   .-. topmid p2
+    fn VRight  = bottomright p1 .-. topright p2
+
+
+
+-- | > alignHSep align sep a b
+-- 
+-- Spacing version of alignH - move @b@ to the right of @a@ 
+-- separated by @sep@ units, align @b@ according to @align@.
+-- 
+alignHSep :: (Fractional u, Ord u) 
+              =>  HAlign -> u -> Picture u -> Picture u -> Picture u
+alignHSep align dx p1 p2 = vecMove p1 p2 $ hvec dx ^+^ fn align
+  where
+    fn HTop    = topright p1    .-. topleft p2
+    fn HCenter = rightmid p1    .-. leftmid p2
+    fn HBottom = bottomright p1 .-. bottomleft p2
+
+-- | > alignHSep align sep a b
+-- 
+-- Spacing version of alignV - move @b@ below @a@ 
+-- separated by @sep@ units, align @b@ according to @align@.
+-- 
+alignVSep :: (Fractional u, Ord u) 
+           => VAlign -> u -> Picture u -> Picture u -> Picture u
+alignVSep align dy p1 p2 = vecMove p1 p2 $ vvec (-dy) ^+^ fn align
+  where
+    fn VLeft   = bottomleft p1  .-. topleft p2
+    fn VCenter = bottommid p1   .-. topmid p2
+    fn VRight  = bottomright p1 .-. topright p2
+
+
+
+-- | Variant of 'hcat' that aligns the pictures as well as
+-- concatenating them.
+--
+hcatA :: (Fractional u, Ord u) 
+      => HAlign -> Picture u -> [Picture u] -> Picture u
+hcatA ha = foldl' (alignH ha)
+
+-- | Variant of 'vcat' that aligns the pictures as well as
+-- concatenating them.
+--
+vcatA :: (Fractional u, Ord u) 
+      => VAlign -> Picture u -> [Picture u] -> Picture u
+vcatA va = foldl' (alignV va)
+
+
+-- | Variant of @hsep@ that aligns the pictures as well as
+-- concatenating and spacing them.
+--
+hsepA :: (Fractional u, Ord u) 
+      => HAlign -> u -> Picture u -> [Picture u] -> Picture u
+hsepA ha n = foldl' op 
+  where 
+    a `op` b = alignHSep ha n a b 
+
+
+-- | Variant of @vsep@ that aligns the pictures as well as
+-- concatenating and spacing them.
+--
+vsepA :: (Fractional u, Ord u) 
+      => VAlign -> u -> Picture u -> [Picture u] -> Picture u
+vsepA va n = foldl' op 
+  where 
+    a `op` b = alignVSep va n a b 
+
+
+
diff --git a/src/Wumpus/Basic/SVGColours.hs b/src/Wumpus/Basic/SVGColours.hs
deleted file mode 100644
--- a/src/Wumpus/Basic/SVGColours.hs
+++ /dev/null
@@ -1,626 +0,0 @@
-{-# OPTIONS -Wall #-}
-
---------------------------------------------------------------------------------
--- |
--- Module      :  Wumpus.Basic.SVGColours
--- Copyright   :  (c) Stephen Tetley 2009-2010
--- License     :  BSD3
---
--- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
--- Stability   :  highly unstable
--- Portability :  GHC with TypeFamilies and more
---
--- The SVG \'named colours\', as rgb [0,1] values 
---
---------------------------------------------------------------------------------
-
-module Wumpus.Basic.SVGColours 
-  (
-    
-  -- * Named colours
-    aliceBlue
-  , antiqueWhite
-  , aqua
-  , aquamarine
-  , azure
-  , beige
-  , bisque
-  , black
-  , blanchedAlmond
-  , blue
-  , blueViolet
-  , brown
-  , burlywood
-  , cadetBlue
-  , chartreuse
-  , chocolate
-  , coral
-  , cornflowerBlue
-  , cornsilk
-  , crimson
-  , cyan
-  , darkBlue
-  , darkCyan
-  , darkGoldenrod
-  , darkGray
-  , darkGreen
-  , darkGrey
-  , darkKhaki
-  , darkMagenta
-  , darkOliveGreen
-  , darkOrange
-  , darkOrchid
-  , darkRed
-  , darkSalmon
-  , darkSeaGreen
-  , darkSlateBlue
-  , darkSlateGray
-  , darkSlateGrey
-  , darkTurquoise
-  , darkViolet
-  , deepPink
-  , deepSkyBlue
-  , dimGray
-  , dimGrey
-  , dodgerBlue
-  , firebrick
-  , floralWhite
-  , forestGreen
-  , fuchsia
-  , gainsboro
-  , ghostWhite
-  , gold
-  , goldenrod
-  , gray
-  , grey
-  , green
-  , greenYellow
-  , honeydew
-  , hotPink
-  , indianRed
-  , indigo
-  , ivory
-  , khaki
-  , lavender
-  , lavenderBlush
-  , lawnGreen
-  , lemonChiffon
-  , lightBlue
-  , lightCoral
-  , lightCyan
-  , lightGoldenrodYellow
-  , lightGray
-  , lightGreen
-  , lightGrey
-  , lightPink
-  , lightSalmon
-  , lightSeaGreen
-  , lightSkyBlue
-  , lightSlateGray
-  , lightSlateGrey
-  , lightSteelBlue
-  , lightYellow
-  , lime
-  , limeGreen
-  , linen
-  , magenta
-  , maroon
-  , mediumAquamarine
-  , mediumBlue
-  , mediumOrchid
-  , mediumPurple
-  , mediumSeaGreen
-  , mediumSlateBlue
-  , mediumSpringGreen
-  , mediumTurquoise
-  , mediumVioletRed
-  , midnightBlue
-  , mintcream
-  , mistyrose
-  , moccasin
-  , navajoWhite
-  , navy
-  , oldlace
-  , olive
-  , oliveDrab
-  , orange
-  , orangeRed
-  , orchid
-  , paleGoldenrod
-  , paleGreen
-  , paleTurquoise
-  , paleVioletRed
-  , papayawhip
-  , peachpuff
-  , peru
-  , pink
-  , plum
-  , powderBlue
-  , purple
-  , red
-  , rosyBrown
-  , royalBlue
-  , saddleBrown
-  , salmon
-  , sandyBrown
-  , seaGreen
-  , seashell
-  , sienna
-  , silver
-  , skyBlue
-  , slateBlue
-  , slateGray
-  , slateGrey
-  , snow
-  , springGreen
-  , steelBlue
-  , tan
-  , teal
-  , thistle
-  , tomato
-  , turquoise
-  , violet
-  , wheat
-  , white
-  , whitesmoke
-  , yellow
-  , yellowGreen
-  
-  ) where
-
-
-import Wumpus.Core.Colour ( RGB3(..), DRGB )
-
-
-import Prelude ( )
-  
-
-
-
---------------------------------------------------------------------------------
-  
-aliceBlue           :: DRGB
-aliceBlue           = RGB3 0.941  0.973  1.0
-
-antiqueWhite        :: DRGB
-antiqueWhite        = RGB3 0.980  0.922  0.843
-
-aqua                :: DRGB
-aqua                = RGB3 0.0  1.0  1.0
-
-aquamarine          :: DRGB
-aquamarine          = RGB3 0.498  1.0  0.831
-
-azure               :: DRGB
-azure               = RGB3 0.941  1.0  1.0
-
-beige               :: DRGB  
-beige               = RGB3 0.961  0.961  0.863
-
-bisque              :: DRGB
-bisque              = RGB3 1.0  0.894  0.769
-
-black               :: DRGB
-black               = RGB3 0.0  0.0  0.0
-
-blanchedAlmond      :: DRGB
-blanchedAlmond      = RGB3 1.0  0.922  0.804
-
-blue                :: DRGB
-blue                = RGB3 0.0  0.0  1.0
-
-blueViolet          :: DRGB
-blueViolet          = RGB3 0.541  0.169  0.886
-
-brown               :: DRGB
-brown               = RGB3 0.647  0.165  0.165
-
-burlywood           :: DRGB
-burlywood           = RGB3 0.871  0.722  0.529
-
-cadetBlue           :: DRGB
-cadetBlue           = RGB3 0.373  0.620  0.627
-
-chartreuse          :: DRGB
-chartreuse          = RGB3 0.498  1.0  0.0
-
-chocolate           :: DRGB
-chocolate           = RGB3 0.824  0.412  0.118
-
-coral               :: DRGB
-coral               = RGB3 1.0  0.498  0.314
-
-cornflowerBlue      :: DRGB
-cornflowerBlue      = RGB3 0.392  0.584  0.929
-
-cornsilk            :: DRGB
-cornsilk            = RGB3 1.0  0.973  0.863
-
-crimson             :: DRGB
-crimson             = RGB3 0.863  0.078  0.235
-
-cyan                :: DRGB
-cyan                = RGB3 0.0  1.0  1.0
-
-darkBlue            :: DRGB
-darkBlue            = RGB3 0.0  0.0  0.545
-
-darkCyan            :: DRGB
-darkCyan            = RGB3 0.0  0.545  0.545
-
-darkGoldenrod       :: DRGB
-darkGoldenrod       = RGB3 0.722  0.545  0.043
-
-darkGray            :: DRGB
-darkGray            = RGB3 0.663  0.663  0.663
-
-darkGreen           :: DRGB
-darkGreen           = RGB3 0.0  0.392  0.0
-
-darkGrey            :: DRGB
-darkGrey            = RGB3 0.663  0.663  0.663
-
-darkKhaki           :: DRGB
-darkKhaki           = RGB3 0.741  0.718  0.420
-
-darkMagenta         :: DRGB
-darkMagenta         = RGB3 0.545  0.0  0.545
-
-darkOliveGreen      :: DRGB
-darkOliveGreen      = RGB3 0.333  0.420  0.184
-
-darkOrange          :: DRGB
-darkOrange          = RGB3 1.0  0.549  0.0
-
-darkOrchid          :: DRGB
-darkOrchid          = RGB3 0.600  0.196  0.800
-
-darkRed             :: DRGB
-darkRed             = RGB3 0.545  0.0  0.0
-
-darkSalmon          :: DRGB
-darkSalmon          = RGB3 0.914  0.588  0.478
-
-darkSeaGreen        :: DRGB
-darkSeaGreen        = RGB3 0.561  0.737  0.561
-
-darkSlateBlue       :: DRGB
-darkSlateBlue       = RGB3 0.282  0.239  0.545
-
-darkSlateGray       :: DRGB
-darkSlateGray       = RGB3 0.184  0.310  0.310
-
-darkSlateGrey       :: DRGB
-darkSlateGrey       = RGB3 0.184  0.310  0.310
-
-darkTurquoise       :: DRGB
-darkTurquoise       = RGB3 0.0  0.808  0.820
-
-darkViolet          :: DRGB
-darkViolet          = RGB3 0.580  0.0  0.827
-
-deepPink            :: DRGB
-deepPink            = RGB3 1.0  0.078  0.576
-
-deepSkyBlue         :: DRGB
-deepSkyBlue         = RGB3 0.0  0.750  1.0
-
-dimGray             :: DRGB
-dimGray             = RGB3 0.412  0.412  0.412
-
-dimGrey             :: DRGB
-dimGrey             = RGB3 0.412  0.412  0.412
-
-dodgerBlue          :: DRGB
-dodgerBlue          = RGB3 0.118  0.565  1.0
-
-firebrick           :: DRGB
-firebrick           = RGB3 0.698  0.133  0.133
-
-floralWhite         :: DRGB
-floralWhite         = RGB3 1.0  0.980  0.941
-
-forestGreen         :: DRGB
-forestGreen         = RGB3 0.133  0.545  0.133
-
-fuchsia             :: DRGB
-fuchsia             = RGB3 1.0  0.0  1.0
-
-gainsboro           :: DRGB
-gainsboro           = RGB3 0.863  0.863  0.863
-
-ghostWhite          :: DRGB
-ghostWhite          = RGB3 0.973  0.973  1.0
-
-gold                :: DRGB
-gold                = RGB3 1.0  0.843  0.0
-
-goldenrod           :: DRGB
-goldenrod           = RGB3 0.855  0.647  0.125
-
-gray                :: DRGB
-gray                = RGB3 0.5  0.5  0.5
-
-grey                :: DRGB
-grey                = RGB3 0.5  0.5  0.5
-
-green               :: DRGB
-green               = RGB3 0.0  0.5  0.0
-
-greenYellow         :: DRGB
-greenYellow         = RGB3 0.678  1.0  0.184
-
-honeydew            :: DRGB
-honeydew            = RGB3 0.941  1.0  0.941
-
-hotPink             :: DRGB
-hotPink             = RGB3 1.0  0.412  0.706
-
-indianRed           :: DRGB
-indianRed           = RGB3 0.804  0.361  0.361
-
-indigo              :: DRGB
-indigo              = RGB3 0.294  0.0  0.510
-
-ivory               :: DRGB
-ivory               = RGB3 1.0  1.0  0.941
-
-khaki               :: DRGB
-khaki               = RGB3 0.941  0.902  0.549
-
-lavender            :: DRGB
-lavender            = RGB3 0.902  0.902  0.980
-
-lavenderBlush       :: DRGB
-lavenderBlush       = RGB3 1.0  0.941  0.961
-
-lawnGreen           :: DRGB
-lawnGreen           = RGB3 0.486  0.988  0.0
-
-lemonChiffon        :: DRGB
-lemonChiffon        = RGB3 1.0  0.980  0.804
-
-lightBlue           :: DRGB
-lightBlue           = RGB3 0.678  0.847  0.902
-
-lightCoral          :: DRGB
-lightCoral          = RGB3 0.941  0.5  0.5
-
-lightCyan           :: DRGB
-lightCyan           = RGB3 0.878  1.0  1.0
-
-lightGoldenrodYellow  :: DRGB
-lightGoldenrodYellow  = RGB3 0.980  0.980  0.824
-
-lightGray           :: DRGB
-lightGray           = RGB3 0.827  0.827  0.827
-
-lightGreen          :: DRGB
-lightGreen          = RGB3 0.565  0.933  0.565
-
-lightGrey           :: DRGB
-lightGrey           = RGB3 0.827  0.827  0.827
-
-lightPink           :: DRGB
-lightPink           = RGB3 1.0  0.714  0.757
-
-lightSalmon         :: DRGB
-lightSalmon         = RGB3 1.0  0.627  0.478
-
-lightSeaGreen       :: DRGB
-lightSeaGreen       = RGB3 0.125  0.698  0.666
-
-lightSkyBlue        :: DRGB
-lightSkyBlue        = RGB3 0.529  0.808  0.980
-
-lightSlateGray      :: DRGB
-lightSlateGray      = RGB3 0.466  0.533  0.600
-
-lightSlateGrey      :: DRGB
-lightSlateGrey      = RGB3 0.466  0.533  0.600
-
-lightSteelBlue      :: DRGB
-lightSteelBlue      = RGB3 0.690  0.769  0.871
-
-lightYellow         :: DRGB
-lightYellow         = RGB3 1.0  1.0  0.878
-
-lime                :: DRGB
-lime                = RGB3 0.0  1.0  0.0
-
-limeGreen           :: DRGB
-limeGreen           = RGB3 0.196  0.804  0.196
-
-linen               :: DRGB
-linen               = RGB3 0.980  0.941  0.902
-
-magenta             :: DRGB
-magenta             = RGB3 1.0  0.0  1.0
-
-maroon              :: DRGB
-maroon              = RGB3 0.5  0.0  0.0
-
-mediumAquamarine    :: DRGB
-mediumAquamarine    = RGB3 0.4  0.804  0.666
-
-mediumBlue          :: DRGB
-mediumBlue          = RGB3 0.0  0.0  0.804
-
-mediumOrchid        :: DRGB
-mediumOrchid        = RGB3 0.729  0.333  0.827
-
-mediumPurple        :: DRGB
-mediumPurple        = RGB3 0.576  0.439  0.859
-
-mediumSeaGreen      :: DRGB
-mediumSeaGreen      = RGB3 0.235  0.702  0.443
-
-mediumSlateBlue     :: DRGB
-mediumSlateBlue     = RGB3 0.482  0.408  0.933
-
-mediumSpringGreen   :: DRGB
-mediumSpringGreen   = RGB3 0.0  0.980  0.604
-
-mediumTurquoise     :: DRGB
-mediumTurquoise     = RGB3 0.282  0.820  0.800
-
-mediumVioletRed     :: DRGB
-mediumVioletRed     = RGB3 0.780  0.082  0.522
-
-midnightBlue        :: DRGB
-midnightBlue        = RGB3 0.098  0.098  0.439
-
-mintcream           :: DRGB
-mintcream           = RGB3 0.961  1.0  0.980
-
-mistyrose           :: DRGB
-mistyrose           = RGB3 1.0  0.894  0.882
-
-moccasin            :: DRGB
-moccasin            = RGB3 1.0  0.894  0.710
-
-navajoWhite         :: DRGB
-navajoWhite         = RGB3 1.0  0.871  0.678
-
-navy                :: DRGB
-navy                = RGB3 0.0  0.0  0.5
-
-oldlace             :: DRGB
-oldlace             = RGB3 0.992  0.961  0.902
-
-olive               :: DRGB
-olive               = RGB3 0.5  0.5  0.0
-
-oliveDrab           :: DRGB
-oliveDrab           = RGB3 0.420  0.557  0.137
-
-orange              :: DRGB
-orange              = RGB3 1.0  0.647  0.0
-
-orangeRed           :: DRGB
-orangeRed           = RGB3 1.0  0.271  0.0
-
-orchid              :: DRGB
-orchid              = RGB3 0.855  0.439  0.839
-
-paleGoldenrod       :: DRGB
-paleGoldenrod       = RGB3 0.933  0.910  0.666
-
-paleGreen           :: DRGB
-paleGreen           = RGB3 0.596  0.984  0.596
-
-paleTurquoise       :: DRGB
-paleTurquoise       = RGB3 0.686  0.933  0.933
-
-paleVioletRed       :: DRGB
-paleVioletRed       = RGB3 0.859  0.439  0.576
-
-papayawhip          :: DRGB
-papayawhip          = RGB3 1.0  0.937  0.835
-
-peachpuff           :: DRGB
-peachpuff           = RGB3 1.0  0.855  0.725
-
-peru                :: DRGB
-peru                = RGB3 0.804  0.522  0.247
-
-pink                :: DRGB
-pink                = RGB3 1.0  0.753  0.796
-
-plum                :: DRGB
-plum                = RGB3 0.867  0.627  0.867
-
-powderBlue          :: DRGB
-powderBlue          = RGB3 0.690  0.878  0.902
-
-purple              :: DRGB
-purple              = RGB3 0.5  0.0  0.5
-
-red                 :: DRGB
-red                 = RGB3 1.0  0.0  0.0
-
-rosyBrown           :: DRGB
-rosyBrown           = RGB3 0.737  0.561  0.561
-
-royalBlue           :: DRGB
-royalBlue           = RGB3 0.255  0.412  0.882
-
-saddleBrown         :: DRGB
-saddleBrown         = RGB3 0.545  0.271  0.075
-
-salmon              :: DRGB
-salmon              = RGB3 0.980  0.5  0.447
-
-sandyBrown          :: DRGB
-sandyBrown          = RGB3 0.957  0.643  0.376
-
-seaGreen            :: DRGB
-seaGreen            = RGB3 0.180  0.545  0.341
-
-seashell            :: DRGB
-seashell            = RGB3 1.0  0.961  0.933
-
-sienna              :: DRGB
-sienna              = RGB3 0.627  0.322  0.176
-
-silver              :: DRGB
-silver              = RGB3 0.753  0.753  0.753
-
-skyBlue             :: DRGB
-skyBlue             = RGB3 0.529  0.808  0.922
-
-slateBlue           :: DRGB
-slateBlue           = RGB3 0.416  0.353  0.804
-
-slateGray           :: DRGB
-slateGray           = RGB3 0.439  0.5  0.565
-
-slateGrey           :: DRGB
-slateGrey           = RGB3 0.439  0.5  0.565
-
-snow                :: DRGB
-snow                = RGB3 1.0  0.980  0.980
-
-springGreen         :: DRGB
-springGreen         = RGB3 0.0  1.0  0.498
-
-steelBlue           :: DRGB
-steelBlue           = RGB3 0.275  0.510  0.706
-
-tan                 :: DRGB
-tan                 = RGB3 0.824  0.706  0.549
-
-teal                :: DRGB
-teal                = RGB3 0.0  0.5  0.5
-
-thistle             :: DRGB
-thistle             = RGB3 0.847  0.750  0.847
-
-tomato              :: DRGB
-tomato              = RGB3 1.0  0.388  0.278
-
-turquoise           :: DRGB
-turquoise           = RGB3 0.251  0.878  0.816
-
-violet              :: DRGB
-violet              = RGB3 0.933  0.510  0.933
-
-wheat               :: DRGB
-wheat               = RGB3 0.961  0.871  0.702
-
-white               :: DRGB
-white               = RGB3 1.0  1.0  1.0
-
-whitesmoke          :: DRGB
-whitesmoke          = RGB3 0.961  0.961  0.961
-
-yellow              :: DRGB
-yellow              = RGB3 1.0  1.0  0.0
-
-yellowGreen         :: DRGB
-yellowGreen         = RGB3 0.604  0.804  0.196
-
-
-
-
-
diff --git a/src/Wumpus/Basic/Text/LRText.hs b/src/Wumpus/Basic/Text/LRText.hs
--- a/src/Wumpus/Basic/Text/LRText.hs
+++ b/src/Wumpus/Basic/Text/LRText.hs
@@ -70,7 +70,7 @@
 -- Vertical distance between baselines.
 type VDist = PtSize       
 
-type Env = (VDist, DRGB)
+type Env = (VDist, RGBi)
 
 newtype TextM u a = TextM { getTextM :: Env -> St u -> (a, St u) }
 
@@ -100,7 +100,7 @@
 -- line at the base line...
 
 runTextM :: (Num u, FromPtSize u) 
-         => PtSize -> (DRGB,FontAttr) -> (TextM u a) -> (a,GraphicF u)
+         => PtSize -> (RGBi,FontAttr) -> (TextM u a) -> (a,GraphicF u)
 runTextM vdistance (rgb,font) ma = post $ getTextM ma env st
   where
     post (a,s)  = let gf = getTGraphicF $ acc_graphic s
diff --git a/src/Wumpus/Basic/Utils/Intersection.hs b/src/Wumpus/Basic/Utils/Intersection.hs
--- a/src/Wumpus/Basic/Utils/Intersection.hs
+++ b/src/Wumpus/Basic/Utils/Intersection.hs
@@ -27,7 +27,7 @@
   , intersection
 
   , rectangleLines
-
+  , langle
   ) 
   where
 
@@ -92,7 +92,7 @@
 
 quadrantCheck :: (Real u, Floating u) 
               => Radian -> Point2 u -> Point2 u -> Bool
-quadrantCheck theta ctr pt = theta `req` langle ctr pt
+quadrantCheck theta ctr pt = theta == langle ctr pt
 
 intersection :: (Fractional u, Ord u) 
              => LineSegment u -> LineEqn u -> Maybe (Point2 u)
@@ -131,3 +131,25 @@
     tr = ctr .+^ (vec hw    hh)
     tl = ctr .+^ (vec (-hw) hh)
     bl = ctr .+^ (vec (-hw) (-hh))
+
+
+
+-- | Calculate the counter-clockwise angle between two points 
+-- and the x-axis.
+--
+langle :: (Floating u, Real u) => Point2 u -> Point2 u -> Radian
+langle (P2 x1 y1) (P2 x2 y2) = step (x2 - x1) (y2 - y1)
+  where
+    -- north-east quadrant 
+    step x y | pve x && pve y = toRadian $ atan (y/x)          
+    
+    -- north-west quadrant
+    step x y | pve y          = pi     - (toRadian $ atan (y / abs x))
+
+    -- south-east quadrant
+    step x y | pve x          = (2*pi) - (toRadian $ atan (abs y / x)) 
+
+    -- otherwise... south-west quadrant
+    step x y                  = pi     + (toRadian $ atan (y/x))
+
+    pve a                     = signum a >= 0
diff --git a/src/Wumpus/Basic/VersionNumber.hs b/src/Wumpus/Basic/VersionNumber.hs
--- a/src/Wumpus/Basic/VersionNumber.hs
+++ b/src/Wumpus/Basic/VersionNumber.hs
@@ -23,7 +23,7 @@
 
 -- | Version number
 --
--- > (0,4,0)
+-- > (0,5,0)
 --
 wumpus_basic_version :: (Int,Int,Int)
-wumpus_basic_version = (0,4,0)
+wumpus_basic_version = (0,5,0)
diff --git a/src/Wumpus/Basic/X11Colours.hs b/src/Wumpus/Basic/X11Colours.hs
deleted file mode 100644
--- a/src/Wumpus/Basic/X11Colours.hs
+++ /dev/null
@@ -1,1060 +0,0 @@
-{-# OPTIONS -Wall #-}
-
---------------------------------------------------------------------------------
--- |
--- Module      :  Wumpus.Basic.X11Colours
--- Copyright   :  (c) Stephen Tetley 2009-2010
--- License     :  BSD3
---
--- Maintainer  :  Stephen Tetley <stephen.tetley@gmail.com>
--- Stability   :  highly unstable
--- Portability :  GHC with TypeFamilies and more
---
--- The X11 \'named colours\', as rgb [0,1] values 
---
---------------------------------------------------------------------------------
-
-module Wumpus.Basic.X11Colours
-  ( 
-  
-  -- * Named X11 colours
-    antiqueWhite1
-  , antiqueWhite2
-  , antiqueWhite3
-  , antiqueWhite4
-  , aquamarine1
-  , aquamarine2
-  , aquamarine3
-  , aquamarine4
-  , azure1
-  , azure2
-  , azure3
-  , azure4
-  , bisque1
-  , bisque2
-  , bisque3
-  , bisque4
-  , blue1
-  , blue2
-  , blue3
-  , blue4
-  , brown1
-  , brown2
-  , brown3
-  , brown4
-  , burlywood1
-  , burlywood2
-  , burlywood3
-  , burlywood4
-  , cadetBlue1
-  , cadetBlue2
-  , cadetBlue3
-  , cadetBlue4
-  , chartreuse1
-  , chartreuse2
-  , chartreuse3
-  , chartreuse4
-  , chocolate1
-  , chocolate2
-  , chocolate3
-  , chocolate4
-  , coral1
-  , coral2
-  , coral3
-  , coral4
-  , cornsilk1
-  , cornsilk2
-  , cornsilk3
-  , cornsilk4
-  , cyan1
-  , cyan2
-  , cyan3
-  , cyan4
-  , darkGoldenrod1
-  , darkGoldenrod2
-  , darkGoldenrod3
-  , darkGoldenrod4
-  , darkOliveGreen1
-  , darkOliveGreen2
-  , darkOliveGreen3
-  , darkOliveGreen4
-  , darkOrange1
-  , darkOrange2
-  , darkOrange3
-  , darkOrange4
-  , darkOrchid1
-  , darkOrchid2
-  , darkOrchid3
-  , darkOrchid4
-  , darkSeaGreen1
-  , darkSeaGreen2
-  , darkSeaGreen3
-  , darkSeaGreen4
-  , darkSlateGray1
-  , darkSlateGray2
-  , darkSlateGray3
-  , darkSlateGray4
-  , deepPink1
-  , deepPink2
-  , deepPink3
-  , deepPink4
-  , deepSkyBlue1
-  , deepSkyBlue2
-  , deepSkyBlue3
-  , deepSkyBlue4
-  , dodgerBlue1
-  , dodgerBlue2
-  , dodgerBlue3
-  , dodgerBlue4
-  , firebrick1
-  , firebrick2
-  , firebrick3
-  , firebrick4
-  , gold1
-  , gold2
-  , gold3
-  , gold4
-  , goldenrod1
-  , goldenrod2
-  , goldenrod3
-  , goldenrod4
-  , green1
-  , green2
-  , green3
-  , green4
-  , honeydew1
-  , honeydew2
-  , honeydew3
-  , honeydew4
-  , hotPink1
-  , hotPink2
-  , hotPink3
-  , hotPink4
-  , indianRed1
-  , indianRed2
-  , indianRed3
-  , indianRed4
-  , ivory1
-  , ivory2
-  , ivory3
-  , ivory4
-  , khaki1
-  , khaki2
-  , khaki3
-  , khaki4
-  , lavenderBlush1
-  , lavenderBlush2
-  , lavenderBlush3
-  , lavenderBlush4
-  , lemonChiffon1
-  , lemonChiffon2
-  , lemonChiffon3
-  , lemonChiffon4
-  , lightBlue1
-  , lightBlue2
-  , lightBlue3
-  , lightBlue4
-  , lightCyan1
-  , lightCyan2
-  , lightCyan3
-  , lightCyan4
-  , lightGoldenrod1
-  , lightGoldenrod2
-  , lightGoldenrod3
-  , lightGoldenrod4
-  , lightPink1
-  , lightPink2
-  , lightPink3
-  , lightPink4
-  , lightSalmon1
-  , lightSalmon2
-  , lightSalmon3
-  , lightSalmon4
-  , lightSkyBlue1
-  , lightSkyBlue2
-  , lightSkyBlue3
-  , lightSkyBlue4
-  , lightSteelBlue1
-  , lightSteelBlue2
-  , lightSteelBlue3
-  , lightSteelBlue4
-  , lightYellow1
-  , lightYellow2
-  , lightYellow3
-  , lightYellow4
-  , magenta1
-  , magenta2
-  , magenta3
-  , magenta4
-  , maroon1
-  , maroon2
-  , maroon3
-  , maroon4
-  , mediumOrchid1
-  , mediumOrchid2
-  , mediumOrchid3
-  , mediumOrchid4
-  , mediumPurple1
-  , mediumPurple2
-  , mediumPurple3
-  , mediumPurple4
-  , mistyRose1
-  , mistyRose2
-  , mistyRose3
-  , mistyRose4
-  , navajoWhite1
-  , navajoWhite2
-  , navajoWhite3
-  , navajoWhite4
-  , oliveDrab1
-  , oliveDrab2
-  , oliveDrab3
-  , oliveDrab4
-  , orange1
-  , orange2
-  , orange3
-  , orange4
-  , orangeRed1
-  , orangeRed2
-  , orangeRed3
-  , orangeRed4
-  , orchid1
-  , orchid2
-  , orchid3
-  , orchid4
-  , paleGreen1
-  , paleGreen2
-  , paleGreen3
-  , paleGreen4
-  , paleTurquoise1
-  , paleTurquoise2
-  , paleTurquoise3
-  , paleTurquoise4
-  , paleVioletRed1
-  , paleVioletRed2
-  , paleVioletRed3
-  , paleVioletRed4
-  , peachPuff1
-  , peachPuff2
-  , peachPuff3
-  , peachPuff4
-  , pink1
-  , pink2
-  , pink3
-  , pink4
-  , plum1
-  , plum2
-  , plum3
-  , plum4
-  , purple1
-  , purple2
-  , purple3
-  , purple4
-  , red1
-  , red2
-  , red3
-  , red4
-  , rosyBrown1
-  , rosyBrown2
-  , rosyBrown3
-  , rosyBrown4
-  , royalBlue1
-  , royalBlue2
-  , royalBlue3
-  , royalBlue4
-  , salmon1
-  , salmon2
-  , salmon3
-  , salmon4
-  , seaGreen1
-  , seaGreen2
-  , seaGreen3
-  , seaGreen4
-  , seashell1
-  , seashell2
-  , seashell3
-  , seashell4
-  , sienna1
-  , sienna2
-  , sienna3
-  , sienna4
-  , skyBlue1
-  , skyBlue2
-  , skyBlue3
-  , skyBlue4
-  , slateBlue1
-  , slateBlue2
-  , slateBlue3
-  , slateBlue4
-  , slateGray1
-  , slateGray2
-  , slateGray3
-  , slateGray4
-  , snow1
-  , snow2
-  , snow3
-  , snow4
-  , springGreen1
-  , springGreen2
-  , springGreen3
-  , springGreen4
-  , steelBlue1
-  , steelBlue2
-  , steelBlue3
-  , steelBlue4
-  , tan1
-  , tan2
-  , tan3
-  , tan4
-  , thistle1
-  , thistle2
-  , thistle3
-  , thistle4
-  , tomato1
-  , tomato2
-  , tomato3
-  , tomato4
-  , turquoise1
-  , turquoise2
-  , turquoise3
-  , turquoise4
-  , violetRed1
-  , violetRed2
-  , violetRed3
-  , violetRed4
-  , wheat1
-  , wheat2
-  , wheat3
-  , wheat4
-  , yellow1
-  , yellow2
-  , yellow3
-  , yellow4
-  , gray0
-  , green0
-  , grey0
-  , maroon0
-  , purple0
-
-  ) where
-
-import Wumpus.Core.Colour ( RGB3(..), DRGB )
-
---------------------------------------------------------------------------------
-
-antiqueWhite1           :: DRGB
-antiqueWhite2           :: DRGB
-antiqueWhite3           :: DRGB
-antiqueWhite4           :: DRGB
-antiqueWhite1           = RGB3 1   0.936   0.86
-antiqueWhite2           = RGB3 0.932   0.875   0.8
-antiqueWhite3           = RGB3 0.804   0.752   0.69
-antiqueWhite4           = RGB3 0.545   0.512   0.47
-
-aquamarine1             :: DRGB
-aquamarine2             :: DRGB
-aquamarine3             :: DRGB
-aquamarine4             :: DRGB
-aquamarine1             = RGB3 0.498  1   0.83
-aquamarine2             = RGB3 0.464   0.932   0.776
-aquamarine3             = RGB3 0.4   0.804   0.668
-aquamarine4             = RGB3 0.27   0.545   0.455
-
-azure1                  :: DRGB
-azure2                  :: DRGB
-azure3                  :: DRGB
-azure4                  :: DRGB
-azure1                  = RGB3 0.94  1  1
-azure2                  = RGB3 0.88   0.932   0.932
-azure3                  = RGB3 0.756   0.804   0.804
-azure4                  = RGB3 0.512   0.545   0.545
-
-bisque1                 :: DRGB
-bisque2                 :: DRGB
-bisque3                 :: DRGB
-bisque4                 :: DRGB
-bisque1                 = RGB3 1   0.894   0.77
-bisque2                 = RGB3 0.932   0.835   0.716
-bisque3                 = RGB3 0.804   0.716   0.62
-bisque4                 = RGB3 0.545   0.49   0.42
-
-blue1                   :: DRGB
-blue2                   :: DRGB
-blue3                   :: DRGB
-blue4                   :: DRGB
-blue1                   = RGB3 0  0  1
-blue2                   = RGB3 0  0   0.932
-blue3                   = RGB3 0  0   0.804
-blue4                   = RGB3 0  0   0.545
-
-brown1                  :: DRGB
-brown2                  :: DRGB
-brown3                  :: DRGB
-brown4                  :: DRGB
-brown1                  = RGB3 1   0.25   0.25
-brown2                  = RGB3 0.932   0.23   0.23
-brown3                  = RGB3 0.804   0.2   0.2
-brown4                  = RGB3 0.545   0.136   0.136
-
-burlywood1              :: DRGB
-burlywood2              :: DRGB
-burlywood3              :: DRGB
-burlywood4              :: DRGB
-burlywood1              = RGB3 1   0.828   0.608
-burlywood2              = RGB3 0.932   0.772   0.57
-burlywood3              = RGB3 0.804   0.668   0.49
-burlywood4              = RGB3 0.545   0.45   0.332
-
-cadetBlue1              :: DRGB
-cadetBlue2              :: DRGB
-cadetBlue3              :: DRGB
-cadetBlue4              :: DRGB
-cadetBlue1              = RGB3 0.596   0.96  1
-cadetBlue2              = RGB3 0.556   0.898   0.932
-cadetBlue3              = RGB3 0.48   0.772   0.804
-cadetBlue4              = RGB3 0.325   0.525   0.545
-
-chartreuse1             :: DRGB
-chartreuse2             :: DRGB
-chartreuse3             :: DRGB
-chartreuse4             :: DRGB
-chartreuse1             = RGB3 0.498  1  0
-chartreuse2             = RGB3 0.464   0.932  0
-chartreuse3             = RGB3 0.4   0.804  0
-chartreuse4             = RGB3 0.27   0.545  0
-
-chocolate1              :: DRGB
-chocolate2              :: DRGB
-chocolate3              :: DRGB
-chocolate4              :: DRGB
-chocolate1              = RGB3 1   0.498   0.14
-chocolate2              = RGB3 0.932   0.464   0.13
-chocolate3              = RGB3 0.804   0.4   0.112
-chocolate4              = RGB3 0.545   0.27   0.075
-
-coral1                  :: DRGB
-coral2                  :: DRGB
-coral3                  :: DRGB
-coral4                  :: DRGB
-coral1                  = RGB3 1   0.448   0.336
-coral2                  = RGB3 0.932   0.415   0.312
-coral3                  = RGB3 0.804   0.356   0.27
-coral4                  = RGB3 0.545   0.244   0.185
-
-cornsilk1               :: DRGB
-cornsilk2               :: DRGB
-cornsilk3               :: DRGB
-cornsilk4               :: DRGB
-cornsilk1               = RGB3 1   0.972   0.864
-cornsilk2               = RGB3 0.932   0.91   0.804
-cornsilk3               = RGB3 0.804   0.785   0.694
-cornsilk4               = RGB3 0.545   0.532   0.47
-
-cyan1                   :: DRGB
-cyan2                   :: DRGB
-cyan3                   :: DRGB
-cyan4                   :: DRGB
-cyan1                   = RGB3 0   1   1
-cyan2                   = RGB3 0   0.932   0.932
-cyan3                   = RGB3 0   0.804   0.804
-cyan4                   = RGB3 0   0.545   0.545
-
-darkGoldenrod1          :: DRGB
-darkGoldenrod2          :: DRGB
-darkGoldenrod3          :: DRGB
-darkGoldenrod4          :: DRGB
-darkGoldenrod1          = RGB3 1   0.725   0.06
-darkGoldenrod2          = RGB3 0.932   0.68   0.055
-darkGoldenrod3          = RGB3 0.804   0.585   0.048
-darkGoldenrod4          = RGB3 0.545   0.396   0.03
-
-darkOliveGreen1         :: DRGB
-darkOliveGreen2         :: DRGB
-darkOliveGreen3         :: DRGB
-darkOliveGreen4         :: DRGB
-darkOliveGreen1         = RGB3 0.792  1   0.44
-darkOliveGreen2         = RGB3 0.736   0.932   0.408
-darkOliveGreen3         = RGB3 0.635   0.804   0.352
-darkOliveGreen4         = RGB3 0.43   0.545   0.24
-
-darkOrange1             :: DRGB
-darkOrange2             :: DRGB
-darkOrange3             :: DRGB
-darkOrange4             :: DRGB
-darkOrange1             = RGB3 1   0.498  0
-darkOrange2             = RGB3 0.932   0.464  0
-darkOrange3             = RGB3 0.804   0.4  0
-darkOrange4             = RGB3 0.545   0.27  0
-
-darkOrchid1             :: DRGB
-darkOrchid2             :: DRGB
-darkOrchid3             :: DRGB
-darkOrchid4             :: DRGB
-darkOrchid1             = RGB3 0.75   0.244  1
-darkOrchid2             = RGB3 0.698   0.228   0.932
-darkOrchid3             = RGB3 0.604   0.196   0.804
-darkOrchid4             = RGB3 0.408   0.132   0.545
-
-darkSeaGreen1           :: DRGB
-darkSeaGreen2           :: DRGB
-darkSeaGreen3           :: DRGB
-darkSeaGreen4           :: DRGB
-darkSeaGreen1           = RGB3 0.756  1   0.756
-darkSeaGreen2           = RGB3 0.705   0.932   0.705
-darkSeaGreen3           = RGB3 0.608   0.804   0.608
-darkSeaGreen4           = RGB3 0.41   0.545   0.41
-
-darkSlateGray1          :: DRGB
-darkSlateGray2          :: DRGB
-darkSlateGray3          :: DRGB
-darkSlateGray4          :: DRGB
-darkSlateGray1          = RGB3 0.592  1  1
-darkSlateGray2          = RGB3 0.552   0.932   0.932
-darkSlateGray3          = RGB3 0.475   0.804   0.804
-darkSlateGray4          = RGB3 0.32   0.545   0.545
-
-deepPink1               :: DRGB
-deepPink2               :: DRGB
-deepPink3               :: DRGB
-deepPink4               :: DRGB
-deepPink1               = RGB3 1   0.08   0.576
-deepPink2               = RGB3 0.932   0.07   0.536
-deepPink3               = RGB3 0.804   0.064   0.464
-deepPink4               = RGB3 0.545   0.04   0.312
-
-deepSkyBlue1            :: DRGB
-deepSkyBlue2            :: DRGB
-deepSkyBlue3            :: DRGB
-deepSkyBlue4            :: DRGB
-deepSkyBlue1            = RGB3 0   0.75  1
-deepSkyBlue2            = RGB3 0   0.698   0.932
-deepSkyBlue3            = RGB3 0   0.604   0.804
-deepSkyBlue4            = RGB3 0   0.408   0.545
-
-dodgerBlue1             :: DRGB
-dodgerBlue2             :: DRGB
-dodgerBlue3             :: DRGB
-dodgerBlue4             :: DRGB
-dodgerBlue1             = RGB3 0.116   0.565  1
-dodgerBlue2             = RGB3 0.11   0.525   0.932
-dodgerBlue3             = RGB3 0.094   0.455   0.804
-dodgerBlue4             = RGB3 0.064   0.305   0.545
-
-firebrick1              :: DRGB
-firebrick2              :: DRGB
-firebrick3              :: DRGB
-firebrick4              :: DRGB
-firebrick1              = RGB3 1   0.19   0.19
-firebrick2              = RGB3 0.932   0.172   0.172
-firebrick3              = RGB3 0.804   0.15   0.15
-firebrick4              = RGB3 0.545   0.1   0.1
-
-gold1                   :: DRGB
-gold2                   :: DRGB
-gold3                   :: DRGB
-gold4                   :: DRGB
-gold1                   = RGB3 1   0.844  0
-gold2                   = RGB3 0.932   0.79  0
-gold3                   = RGB3 0.804   0.68  0
-gold4                   = RGB3 0.545   0.46  0
-
-goldenrod1              :: DRGB
-goldenrod2              :: DRGB
-goldenrod3              :: DRGB
-goldenrod4              :: DRGB
-goldenrod1              = RGB3 1   0.756   0.145
-goldenrod2              = RGB3 0.932   0.705   0.132
-goldenrod3              = RGB3 0.804   0.608   0.112
-goldenrod4              = RGB3 0.545   0.41   0.08
-
-green1                  :: DRGB
-green2                  :: DRGB
-green3                  :: DRGB
-green4                  :: DRGB
-green1                  = RGB3 0  1  0
-green2                  = RGB3 0   0.932  0
-green3                  = RGB3 0   0.804  0
-green4                  = RGB3 0   0.545  0
-
-honeydew1               :: DRGB
-honeydew2               :: DRGB
-honeydew3               :: DRGB
-honeydew4               :: DRGB
-honeydew1               = RGB3 0.94  1   0.94
-honeydew2               = RGB3 0.88   0.932   0.88
-honeydew3               = RGB3 0.756   0.804   0.756
-honeydew4               = RGB3 0.512   0.545   0.512
-
-hotPink1                :: DRGB
-hotPink2                :: DRGB
-hotPink3                :: DRGB
-hotPink4                :: DRGB
-hotPink1                = RGB3 1   0.43   0.705
-hotPink2                = RGB3 0.932   0.415   0.655
-hotPink3                = RGB3 0.804   0.376   0.565
-hotPink4                = RGB3 0.545   0.228   0.385
-
-indianRed1              :: DRGB
-indianRed2              :: DRGB
-indianRed3              :: DRGB
-indianRed4              :: DRGB
-indianRed1              = RGB3 1   0.415   0.415
-indianRed2              = RGB3 0.932   0.39   0.39
-indianRed3              = RGB3 0.804   0.332   0.332
-indianRed4              = RGB3 0.545   0.228   0.228
-
-ivory1                  :: DRGB
-ivory2                  :: DRGB
-ivory3                  :: DRGB
-ivory4                  :: DRGB
-ivory1                  = RGB3 1   1   0.94
-ivory2                  = RGB3 0.932   0.932   0.88
-ivory3                  = RGB3 0.804   0.804   0.756
-ivory4                  = RGB3 0.545   0.545   0.512
-
-khaki1                  :: DRGB
-khaki2                  :: DRGB
-khaki3                  :: DRGB
-khaki4                  :: DRGB
-khaki1                  = RGB3 1   0.965   0.56
-khaki2                  = RGB3 0.932   0.9   0.52
-khaki3                  = RGB3 0.804   0.776   0.45
-khaki4                  = RGB3 0.545   0.525   0.305
-
-lavenderBlush1          :: DRGB
-lavenderBlush2          :: DRGB
-lavenderBlush3          :: DRGB
-lavenderBlush4          :: DRGB
-lavenderBlush1          = RGB3 1   0.94   0.96
-lavenderBlush2          = RGB3 0.932   0.88   0.898
-lavenderBlush3          = RGB3 0.804   0.756   0.772
-lavenderBlush4          = RGB3 0.545   0.512   0.525
-
-lemonChiffon1           :: DRGB
-lemonChiffon2           :: DRGB
-lemonChiffon3           :: DRGB
-lemonChiffon4           :: DRGB
-lemonChiffon1           = RGB3 1   0.98   0.804
-lemonChiffon2           = RGB3 0.932   0.912   0.75
-lemonChiffon3           = RGB3 0.804   0.79   0.648
-lemonChiffon4           = RGB3 0.545   0.536   0.44
-
-lightBlue1              :: DRGB
-lightBlue2              :: DRGB
-lightBlue3              :: DRGB
-lightBlue4              :: DRGB
-lightBlue1              = RGB3 0.75   0.936  1
-lightBlue2              = RGB3 0.698   0.875   0.932
-lightBlue3              = RGB3 0.604   0.752   0.804
-lightBlue4              = RGB3 0.408   0.512   0.545
-
-lightCyan1              :: DRGB
-lightCyan2              :: DRGB
-lightCyan3              :: DRGB
-lightCyan4              :: DRGB
-lightCyan1              = RGB3 0.88  1  1
-lightCyan2              = RGB3 0.82   0.932   0.932
-lightCyan3              = RGB3 0.705   0.804   0.804
-lightCyan4              = RGB3 0.48   0.545   0.545
-
-lightGoldenrod1         :: DRGB
-lightGoldenrod2         :: DRGB
-lightGoldenrod3         :: DRGB
-lightGoldenrod4         :: DRGB
-lightGoldenrod1         = RGB3 1   0.925   0.545
-lightGoldenrod2         = RGB3 0.932   0.864   0.51
-lightGoldenrod3         = RGB3 0.804   0.745   0.44
-lightGoldenrod4         = RGB3 0.545   0.505   0.298
-
-lightPink1              :: DRGB
-lightPink2              :: DRGB
-lightPink3              :: DRGB
-lightPink4              :: DRGB
-lightPink1              = RGB3 1   0.684   0.725
-lightPink2              = RGB3 0.932   0.635   0.68
-lightPink3              = RGB3 0.804   0.55   0.585
-lightPink4              = RGB3 0.545   0.372   0.396
-
-lightSalmon1            :: DRGB
-lightSalmon2            :: DRGB
-lightSalmon3            :: DRGB
-lightSalmon4            :: DRGB
-lightSalmon1            = RGB3 1   0.628   0.48
-lightSalmon2            = RGB3 0.932   0.585   0.448
-lightSalmon3            = RGB3 0.804   0.505   0.385
-lightSalmon4            = RGB3 0.545   0.34   0.26
-
-lightSkyBlue1           :: DRGB
-lightSkyBlue2           :: DRGB
-lightSkyBlue3           :: DRGB
-lightSkyBlue4           :: DRGB
-lightSkyBlue1           = RGB3 0.69   0.888  1
-lightSkyBlue2           = RGB3 0.644   0.828   0.932
-lightSkyBlue3           = RGB3 0.552   0.712   0.804
-lightSkyBlue4           = RGB3 0.376   0.484   0.545
-
-lightSteelBlue1         :: DRGB
-lightSteelBlue2         :: DRGB
-lightSteelBlue3         :: DRGB
-lightSteelBlue4         :: DRGB
-lightSteelBlue1         = RGB3 0.792   0.884  1
-lightSteelBlue2         = RGB3 0.736   0.824   0.932
-lightSteelBlue3         = RGB3 0.635   0.71   0.804
-lightSteelBlue4         = RGB3 0.43   0.484   0.545
-
-lightYellow1            :: DRGB
-lightYellow2            :: DRGB
-lightYellow3            :: DRGB
-lightYellow4            :: DRGB
-lightYellow1            = RGB3 1  1   0.88
-lightYellow2            = RGB3 0.932   0.932   0.82
-lightYellow3            = RGB3 0.804   0.804   0.705
-lightYellow4            = RGB3 0.545   0.545   0.48
-
-magenta1                :: DRGB
-magenta2                :: DRGB
-magenta3                :: DRGB
-magenta4                :: DRGB
-magenta1                = RGB3 1  0  1
-magenta2                = RGB3 0.932  0   0.932
-magenta3                = RGB3 0.804  0   0.804
-magenta4                = RGB3 0.545  0   0.545
-
-maroon1                 :: DRGB
-maroon2                 :: DRGB
-maroon3                 :: DRGB
-maroon4                 :: DRGB
-maroon1                 = RGB3 1   0.204   0.7
-maroon2                 = RGB3 0.932   0.19   0.655
-maroon3                 = RGB3 0.804   0.16   0.565
-maroon4                 = RGB3 0.545   0.11   0.385
-
-mediumOrchid1           :: DRGB
-mediumOrchid2           :: DRGB
-mediumOrchid3           :: DRGB
-mediumOrchid4           :: DRGB
-mediumOrchid1           = RGB3 0.88   0.4  1
-mediumOrchid2           = RGB3 0.82   0.372   0.932
-mediumOrchid3           = RGB3 0.705   0.32   0.804
-mediumOrchid4           = RGB3 0.48   0.215   0.545
-
-mediumPurple1           :: DRGB
-mediumPurple2           :: DRGB
-mediumPurple3           :: DRGB
-mediumPurple4           :: DRGB
-mediumPurple1           = RGB3 0.67   0.51  1
-mediumPurple2           = RGB3 0.624   0.475   0.932
-mediumPurple3           = RGB3 0.536   0.408   0.804
-mediumPurple4           = RGB3 0.365   0.28   0.545
-
-mistyRose1              :: DRGB
-mistyRose2              :: DRGB
-mistyRose3              :: DRGB
-mistyRose4              :: DRGB
-mistyRose1              = RGB3 1   0.894   0.884
-mistyRose2              = RGB3 0.932   0.835   0.824
-mistyRose3              = RGB3 0.804   0.716   0.71
-mistyRose4              = RGB3 0.545   0.49   0.484
-
-navajoWhite1            :: DRGB
-navajoWhite2            :: DRGB
-navajoWhite3            :: DRGB
-navajoWhite4            :: DRGB
-navajoWhite1            = RGB3 1   0.87   0.68
-navajoWhite2            = RGB3 0.932   0.81   0.63
-navajoWhite3            = RGB3 0.804   0.7   0.545
-navajoWhite4            = RGB3 0.545   0.475   0.37
-
-oliveDrab1              :: DRGB
-oliveDrab2              :: DRGB
-oliveDrab3              :: DRGB
-oliveDrab4              :: DRGB
-oliveDrab1              = RGB3 0.752  1   0.244
-oliveDrab2              = RGB3 0.7   0.932   0.228
-oliveDrab3              = RGB3 0.604   0.804   0.196
-oliveDrab4              = RGB3 0.41   0.545   0.132
-
-orange1                 :: DRGB
-orange2                 :: DRGB
-orange3                 :: DRGB
-orange4                 :: DRGB
-orange1                 = RGB3 1   0.648  0
-orange2                 = RGB3 0.932   0.604  0
-orange3                 = RGB3 0.804   0.52  0
-orange4                 = RGB3 0.545   0.352  0
-
-orangeRed1              :: DRGB
-orangeRed2              :: DRGB
-orangeRed3              :: DRGB
-orangeRed4              :: DRGB
-orangeRed1              = RGB3 1   0.27  0
-orangeRed2              = RGB3 0.932   0.25  0
-orangeRed3              = RGB3 0.804   0.215  0
-orangeRed4              = RGB3 0.545   0.145  0
-
-orchid1                 :: DRGB
-orchid2                 :: DRGB
-orchid3                 :: DRGB
-orchid4                 :: DRGB
-orchid1                 = RGB3 1   0.512   0.98
-orchid2                 = RGB3 0.932   0.48   0.912
-orchid3                 = RGB3 0.804   0.41   0.79
-orchid4                 = RGB3 0.545   0.28   0.536
-
-paleGreen1              :: DRGB
-paleGreen2              :: DRGB
-paleGreen3              :: DRGB
-paleGreen4              :: DRGB
-paleGreen1              = RGB3 0.604  1   0.604
-paleGreen2              = RGB3 0.565   0.932   0.565
-paleGreen3              = RGB3 0.488   0.804   0.488
-paleGreen4              = RGB3 0.33   0.545   0.33
-
-paleTurquoise1          :: DRGB
-paleTurquoise2          :: DRGB
-paleTurquoise3          :: DRGB
-paleTurquoise4          :: DRGB
-paleTurquoise1          = RGB3 0.732  1  1
-paleTurquoise2          = RGB3 0.684   0.932   0.932
-paleTurquoise3          = RGB3 0.59   0.804   0.804
-paleTurquoise4          = RGB3 0.4   0.545   0.545
-
-paleVioletRed1          :: DRGB
-paleVioletRed2          :: DRGB
-paleVioletRed3          :: DRGB
-paleVioletRed4          :: DRGB
-paleVioletRed1          = RGB3 1   0.51   0.67
-paleVioletRed2          = RGB3 0.932   0.475   0.624
-paleVioletRed3          = RGB3 0.804   0.408   0.536
-paleVioletRed4          = RGB3 0.545   0.28   0.365
-
-peachPuff1              :: DRGB
-peachPuff2              :: DRGB
-peachPuff3              :: DRGB
-peachPuff4              :: DRGB
-peachPuff1              = RGB3 1   0.855   0.725
-peachPuff2              = RGB3 0.932   0.796   0.68
-peachPuff3              = RGB3 0.804   0.688   0.585
-peachPuff4              = RGB3 0.545   0.468   0.396
-
-pink1                   :: DRGB
-pink2                   :: DRGB
-pink3                   :: DRGB
-pink4                   :: DRGB
-pink1                   = RGB3 1   0.71   0.772
-pink2                   = RGB3 0.932   0.664   0.72
-pink3                   = RGB3 0.804   0.57   0.62
-pink4                   = RGB3 0.545   0.39   0.424
-
-plum1                   :: DRGB
-plum2                   :: DRGB
-plum3                   :: DRGB
-plum4                   :: DRGB
-plum1                   = RGB3 1   0.732  1
-plum2                   = RGB3 0.932   0.684   0.932
-plum3                   = RGB3 0.804   0.59   0.804
-plum4                   = RGB3 0.545   0.4   0.545
-
-purple1                 :: DRGB
-purple2                 :: DRGB
-purple3                 :: DRGB
-purple4                 :: DRGB
-purple1                 = RGB3 0.608   0.19  1
-purple2                 = RGB3 0.57   0.172   0.932
-purple3                 = RGB3 0.49   0.15   0.804
-purple4                 = RGB3 0.332   0.1   0.545
-
-red1                    :: DRGB
-red2                    :: DRGB
-red3                    :: DRGB
-red4                    :: DRGB
-red1                    = RGB3 1  0  0
-red2                    = RGB3 0.932  0  0
-red3                    = RGB3 0.804  0  0
-red4                    = RGB3 0.545  0  0
-
-rosyBrown1              :: DRGB
-rosyBrown2              :: DRGB
-rosyBrown3              :: DRGB
-rosyBrown4              :: DRGB
-rosyBrown1              = RGB3 1   0.756   0.756
-rosyBrown2              = RGB3 0.932   0.705   0.705
-rosyBrown3              = RGB3 0.804   0.608   0.608
-rosyBrown4              = RGB3 0.545   0.41   0.41
-
-royalBlue1              :: DRGB
-royalBlue2              :: DRGB
-royalBlue3              :: DRGB
-royalBlue4              :: DRGB
-royalBlue1              = RGB3 0.284   0.464  1
-royalBlue2              = RGB3 0.264   0.43   0.932
-royalBlue3              = RGB3 0.228   0.372   0.804
-royalBlue4              = RGB3 0.152   0.25   0.545
-
-salmon1                 :: DRGB
-salmon2                 :: DRGB
-salmon3                 :: DRGB
-salmon4                 :: DRGB
-salmon1                 = RGB3 1   0.55   0.41
-salmon2                 = RGB3 0.932   0.51   0.385
-salmon3                 = RGB3 0.804   0.44   0.33
-salmon4                 = RGB3 0.545   0.298   0.224
-
-seaGreen1               :: DRGB
-seaGreen2               :: DRGB
-seaGreen3               :: DRGB
-seaGreen4               :: DRGB
-seaGreen1               = RGB3 0.33  1   0.624
-seaGreen2               = RGB3 0.305   0.932   0.58
-seaGreen3               = RGB3 0.264   0.804   0.5
-seaGreen4               = RGB3 0.18   0.545   0.34
-
-seashell1               :: DRGB
-seashell2               :: DRGB
-seashell3               :: DRGB
-seashell4               :: DRGB
-seashell1               = RGB3 1   0.96   0.932
-seashell2               = RGB3 0.932   0.898   0.87
-seashell3               = RGB3 0.804   0.772   0.75
-seashell4               = RGB3 0.545   0.525   0.51
-
-sienna1                 :: DRGB
-sienna2                 :: DRGB
-sienna3                 :: DRGB
-sienna4                 :: DRGB
-sienna1                 = RGB3 1   0.51   0.28
-sienna2                 = RGB3 0.932   0.475   0.26
-sienna3                 = RGB3 0.804   0.408   0.224
-sienna4                 = RGB3 0.545   0.28   0.15
-
-skyBlue1                :: DRGB
-skyBlue2                :: DRGB
-skyBlue3                :: DRGB
-skyBlue4                :: DRGB
-skyBlue1                = RGB3 0.53   0.808  1
-skyBlue2                = RGB3 0.494   0.752   0.932
-skyBlue3                = RGB3 0.424   0.65   0.804
-skyBlue4                = RGB3 0.29   0.44   0.545
-
-slateBlue1              :: DRGB
-slateBlue2              :: DRGB
-slateBlue3              :: DRGB
-slateBlue4              :: DRGB
-slateBlue1              = RGB3 0.512   0.435  1
-slateBlue2              = RGB3 0.48   0.404   0.932
-slateBlue3              = RGB3 0.41   0.35   0.804
-slateBlue4              = RGB3 0.28   0.235   0.545
-
-slateGray1              :: DRGB
-slateGray2              :: DRGB
-slateGray3              :: DRGB
-slateGray4              :: DRGB
-slateGray1              = RGB3 0.776   0.888  1
-slateGray2              = RGB3 0.725   0.828   0.932
-slateGray3              = RGB3 0.624   0.712   0.804
-slateGray4              = RGB3 0.424   0.484   0.545
-
-snow1                   :: DRGB
-snow2                   :: DRGB
-snow3                   :: DRGB
-snow4                   :: DRGB
-snow1                   = RGB3 1   0.98   0.98
-snow2                   = RGB3 0.932   0.912   0.912
-snow3                   = RGB3 0.804   0.79   0.79
-snow4                   = RGB3 0.545   0.536   0.536
-
-springGreen1            :: DRGB
-springGreen2            :: DRGB
-springGreen3            :: DRGB
-springGreen4            :: DRGB
-springGreen1            = RGB3 0  1   0.498
-springGreen2            = RGB3 0   0.932   0.464
-springGreen3            = RGB3 0   0.804   0.4
-springGreen4            = RGB3 0   0.545   0.27
-
-steelBlue1              :: DRGB
-steelBlue2              :: DRGB
-steelBlue3              :: DRGB
-steelBlue4              :: DRGB
-steelBlue1              = RGB3 0.39   0.72  1
-steelBlue2              = RGB3 0.36   0.675   0.932
-steelBlue3              = RGB3 0.31   0.58   0.804
-steelBlue4              = RGB3 0.21   0.392   0.545
-
-tan1                    :: DRGB
-tan2                    :: DRGB
-tan3                    :: DRGB
-tan4                    :: DRGB
-tan1                    = RGB3 1   0.648   0.31
-tan2                    = RGB3 0.932   0.604   0.288
-tan3                    = RGB3 0.804   0.52   0.248
-tan4                    = RGB3 0.545   0.352   0.17
-
-thistle1                :: DRGB
-thistle2                :: DRGB
-thistle3                :: DRGB
-thistle4                :: DRGB
-thistle1                = RGB3 1   0.884  1
-thistle2                = RGB3 0.932   0.824   0.932
-thistle3                = RGB3 0.804   0.71   0.804
-thistle4                = RGB3 0.545   0.484   0.545
-
-tomato1                 :: DRGB
-tomato2                 :: DRGB
-tomato3                 :: DRGB
-tomato4                 :: DRGB
-tomato1                 = RGB3 1   0.39   0.28
-tomato2                 = RGB3 0.932   0.36   0.26
-tomato3                 = RGB3 0.804   0.31   0.224
-tomato4                 = RGB3 0.545   0.21   0.15
-
-turquoise1              :: DRGB
-turquoise2              :: DRGB
-turquoise3              :: DRGB
-turquoise4              :: DRGB
-turquoise1              = RGB3 0   0.96  1
-turquoise2              = RGB3 0   0.898   0.932
-turquoise3              = RGB3 0   0.772   0.804
-turquoise4              = RGB3 0   0.525   0.545
-
-violetRed1              :: DRGB
-violetRed2              :: DRGB
-violetRed3              :: DRGB
-violetRed4              :: DRGB
-violetRed1              = RGB3 1   0.244   0.59
-violetRed2              = RGB3 0.932   0.228   0.55
-violetRed3              = RGB3 0.804   0.196   0.47
-violetRed4              = RGB3 0.545   0.132   0.32
-
-wheat1                  :: DRGB
-wheat2                  :: DRGB
-wheat3                  :: DRGB
-wheat4                  :: DRGB
-wheat1                  = RGB3 1   0.905   0.73
-wheat2                  = RGB3 0.932   0.848   0.684
-wheat3                  = RGB3 0.804   0.73   0.59
-wheat4                  = RGB3 0.545   0.494   0.4
-
-yellow1                 :: DRGB
-yellow2                 :: DRGB
-yellow3                 :: DRGB
-yellow4                 :: DRGB
-yellow1                 = RGB3 1  1  0
-yellow2                 = RGB3 0.932   0.932  0
-yellow3                 = RGB3 0.804   0.804  0
-yellow4                 = RGB3 0.545   0.545  0
-
-gray0                   :: DRGB
-green0                  :: DRGB
-grey0                   :: DRGB
-maroon0                 :: DRGB
-purple0                 :: DRGB
-gray0                   = RGB3 0.745  0.745  0.745
-green0                  = RGB3 0      1      0
-grey0                   = RGB3 0.745  0.745  0.745
-maroon0                 = RGB3 0.69   0.19   0.376
-purple0                 = RGB3 0.628  0.125  0.94
-
-
-
-
diff --git a/src/Wumpus/Deprecated/PictureLanguage.hs b/src/Wumpus/Deprecated/PictureLanguage.hs
deleted file mode 100644
--- a/src/Wumpus/Deprecated/PictureLanguage.hs
+++ /dev/null
@@ -1,543 +0,0 @@
-{-# LANGUAGE TypeFamilies               #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# OPTIONS -Wall #-}
-
---------------------------------------------------------------------------------
--- |
--- Module      :  Wumpus.Deprecated.PictureLanguage
--- Copyright   :  (c) Stephen Tetley 2009-2010
--- License     :  BSD3
---
--- Maintainer  :  stephen.tetley@gmail.com
--- Stability   :  unstable
--- Portability :  GHC with TypeFamilies and more
---
--- Type classes and derived functions to compose 2D /pictures/.
---
--- WARNING - this module is deprecated.
---
---------------------------------------------------------------------------------
-
-module Wumpus.Deprecated.PictureLanguage 
-  (
-  -- * Data types for alignment 
-    HAlign(..)
-  , VAlign(..)
-
-  -- * Type family and classes
-  , PUnit 
-  , Horizontal(..)
-  , Vertical(..)
-  , Composite(..)
-  , Move(..)
-  , Blank(..)
-
-  -- * Bounds
-  -- $boundsdoc
-  , center
-  , topleft
-  , topright
-  , bottomleft
-  , bottomright
-
-  -- * Composition
-  , ( -@- )
-  , ( ->- )
-  , ( -<- )
-  , ( -//- )
-  , above
-  , below
-  , at
-  , centeredAt
-  , stackOnto
-  , hcat 
-  , vcat
-  , stackOntoCenter
-
-  , hspace
-  , vspace
-  , hsep
-  , vsep
- 
-  -- * Compose with alignment
-  , alignH
-  , alignV
-  , hcatA
-  , vcatA
-  , hsepA
-  , vsepA
-
-  -- * Special function for text
-  , multilabel
-
-
-  ) where
-
-import Wumpus.Core
-
-import Data.AffineSpace
-
-import Data.List ( foldl' )
-
-
---------------------------------------------------------------------------------
--- Data types
-
--- Alignment
-
--- | Horizontal alignment - align to the top, center or bottom.
-data HAlign = HTop | HCenter | HBottom
-  deriving (Eq,Show)
-
--- | Vertical alignment - align to the left, center or bottom.
-data VAlign = VLeft | VCenter | VRight
-  deriving (Eq,Show)
-
-
-
-
---------------------------------------------------------------------------------
--- Type family and classes
-
-
--- | The type of /points/ within a Picture.
-type family PUnit a
-
-
--- | > a `over` b
--- 
--- Place \'picture\' a over b. The idea of @over@ here is the same
--- as z-ordering in 2D design programs. Implementations of this 
--- class should \'draw\' picture a over b but move neither.
--- 
--- Similarly @beneath@ should \'draw\' the first picture behind 
--- the second but move neither.
---
--- Beneath has a default definition:
---
--- > beneath = flip over
---
-class Composite a where
-  over    :: a -> a -> a
-  beneath :: a -> a -> a
-
-  beneath = flip over
-
-
--- | Create a /picture/ that has no content but occupies space 
--- (i.e. it has a bounding box).
-class Blank a where
-  blank :: PUnit a -> PUnit a -> a
-
-
--- | Move horizontally.
-class Horizontal a where
-  moveH      :: PUnit a -> a -> a
-  leftBound  :: a -> PUnit a
-  rightBound :: a -> PUnit a
-
--- | Move vertically.
-class Vertical a where
-  moveV       :: PUnit a -> a -> a
-  topBound    :: a -> PUnit a
-  bottomBound :: a -> PUnit a
-
-
-  
--- | Move in both the horizontal and vertical.
-class Move a where
-  move :: PUnit a -> PUnit a -> a -> a
-
-
-
-
---------------------------------------------------------------------------------
-
--- Operations on bounds
-
--- $boundsdoc
--- Corresponding operations are available on bounding boxes - the 
--- definitions here have different type class obligations.
-
--- | The center of a picture.
-center :: (Horizontal a, Vertical a, Fractional u, u ~ PUnit a) => a -> Point2 u
-center a = P2 hcenter vcenter where  
-    hcenter = leftBound a   + 0.5 * (rightBound a - leftBound a)
-    vcenter = bottomBound a + 0.5 * (topBound a   - bottomBound a)
-
--- | Extract the top-left corner.
-topleft       :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
-topleft a     = P2 (leftBound a)  (topBound a)
-
--- | Extract the top-right corner.
-topright      :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
-topright a    = P2 (rightBound a) (topBound a)
-
--- | Extract the bottom-left corner.
-bottomleft    :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
-bottomleft a  = P2 (leftBound a)  (bottomBound a)
-
--- | Extract the bottom-right corner.
-bottomright   :: (Horizontal a, Vertical a, u ~ PUnit a) => a -> Point2 u
-bottomright a = P2 (rightBound a) (bottomBound a)
-
---------------------------------------------------------------------------------
--- Internal helpers
-
-leftmid       :: (Fractional u, Horizontal a, Vertical a, u ~ PUnit a) 
-              => a -> Point2 u
-leftmid a     = P2 (leftBound a) (midpt (bottomBound a) (topBound a))
-
-rightmid      :: (Fractional u, Horizontal a, Vertical a, u ~ PUnit a) 
-              => a -> Point2 u
-rightmid a    = P2 (rightBound a) (midpt (bottomBound a) (topBound a))
-
-
-topmid        :: (Fractional u, Horizontal a, Vertical a, u ~ PUnit a) 
-              => a -> Point2 u
-topmid a      = P2 (midpt (leftBound a) (rightBound a)) (topBound a)
-
-bottommid     :: (Fractional u, Horizontal a, Vertical a, u ~ PUnit a) 
-              => a -> Point2 u
-bottommid a   = P2 (midpt (leftBound a) (rightBound a)) (bottomBound a)
-
-
-midpt :: Fractional a => a -> a -> a
-midpt a b = a + 0.5*(b-a)
-
---------------------------------------------------------------------------------
--- Composition
-
-infixr 5 -//-, `above`, `below`
-infixr 6 ->-, -@-
-
-
--- | > a -@- b
--- 
--- Center @a@ on top of @b@, @a@ is potentially moved and drawn 
--- 'over' @b@.
---
-(-@-) :: (Horizontal a, Vertical a, Composite a, Move a, Fractional u, 
-             u ~ PUnit a)
-         => a -> a -> a
-p1 -@- p2 = (move x y p1) `over` p2 where V2 x y = center p2 .-. center p1
-
-
--- | > a ->- b
--- 
--- Horizontal composition - move @b@, placing it to the right 
--- of @a@.
--- 
-(->-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
-a ->- b = a `over` (moveH disp b) where disp = rightBound a - leftBound b 
-
--- | > a -<- b
--- 
--- Horizontal composition - move @a@, placing it to the left 
--- of @b@.
---
-(-<-) :: (Horizontal a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
-a -<- b = (moveH disp a) `over` b where disp = leftBound b - rightBound a
-
-
--- | > a -//- b
---
--- Vertical composition - move @b@, placing it below @a@.
---
-(-//-) :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
-a -//- b = a `over` (moveV disp b) where disp = bottomBound a - topBound b 
-
-
--- | > a `below` b
--- 
--- Vertical composition - move @a@, placing it below @b@
---
-below :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
-a `below` b = (moveV disp a) `over` b where disp = bottomBound a - topBound b
-
-
-
--- | > a `above` b
--- 
--- Vertical composition - move @a@, placing it above @b@.
---
-above :: (Vertical a, Composite a, Num u, u ~ PUnit a) => a -> a -> a
-a `above` b = (moveV disp a) `over` b where disp = topBound b - bottomBound a 
-
-
--- | Place the picture at the supplied point.
--- 
-at :: (Move a, u ~ PUnit a) => a -> Point2 u  -> a
-p `at` (P2 x y) = move x y p
-
--- | Center the picture at the supplied point.
---
-centeredAt :: (Horizontal a, Vertical a, Move a, Composite a, Blank a, 
-               Fractional u, u ~ PUnit a) 
-           => a -> Point2 u -> a
-centeredAt p pt = p -@- (blank 0 0 `at` pt) 
-
-
-
--- | > xs `stackOnto` a
--- 
--- Stack the list of pictures @xs@ 'over' @a@.
---
--- Note, the first picture in the list is drawn at the top, the
--- last picture is draw 'over' @a@.
---
-stackOnto :: (Composite a) => [a] -> a -> a
-stackOnto = flip (foldr over)
-
--- | > x ->- xs
--- 
--- Concatenate the list pictures @xs@ horizontally with @(->-)@ 
--- starting at @x@.
--- 
-hcat :: (Horizontal a, Composite a, Num u, u ~ PUnit a)
-     => a -> [a] -> a
-hcat = foldl' (->-)
-
--- | > x -//- xs
--- 
--- Concatenate the list of pictures @xs@ vertically with @(-\/\/-)@ 
--- starting at @x@.
---
-vcat :: (Vertical a, Composite a, Num u, u ~ PUnit a)
-     => a -> [a] -> a
-vcat = foldl' (-//-)
-
-
-
--- | Stack pictures centered ontop of each other - the first 
--- picture in the list is drawn at the top, last picture is on 
--- drawn at the bottom.
-stackOntoCenter :: (Horizontal a, Vertical a, Composite a, 
-                Move a, Fractional u,
-                u ~ PUnit a)
-            => [a] -> a -> a
-stackOntoCenter = flip $ foldr (-@-)
-
-
-
---------------------------------------------------------------------------------
-
--- Helpers
-blankH  :: (Num u, Blank a, u ~ PUnit a) => u -> a
-blankH = blank `flip` 0
-
-blankV  :: (Num u, Blank a, u ~ PUnit a) => u -> a
-blankV = blank 0
-
-
--- NOTE
--- The following simple definition of hspace is invalid:
---
--- > hspace n a b = a ->- (moveH n b)
--- 
--- The movement due to @moveH n@ is annulled by the @->-@ 
--- operator which moves relative to the bounding box.
--- 
--- The almost as simple definition below, seems to justify 
--- including Blank as a Picture constructor.
---
-
-
--- | > hspace n a b
---
--- Concatenate the pictures @a@ and @b@ with @(->-)@ - injecting 
--- a space of @n@ units to separate the pictures.
---
-hspace :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) 
-       => u -> a -> a -> a
-hspace n a b = a ->- blankH n ->- b
-
--- | > vspace n a b
---
--- Concatenate the pictures @a@ and @b@ with @(-\/\/-)@ - injecting 
--- a space of @n@ units to separate the pictures.
---
-vspace :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) 
-       => u -> a -> a -> a
-vspace n a b = a -//- blankV n -//-  b
-
-
-
--- | > hsep n x xs
---
--- Concatenate the list of pictures @xs@ horizontally with 
--- @hspace@ starting at @x@. The pictures are interspersed with 
--- spaces of @n@ units.
---
-hsep :: (Num u, Composite a, Horizontal a, Blank a, u ~ PUnit a) 
-       => u -> a -> [a] -> a
-hsep n = foldl' (hspace n)
-
-
-
--- | > vsep n x xs
---
--- Concatenate the list of pictures @xs@ vertically with 
--- @vspace@ starting at @x@. The pictures are interspersed with 
--- spaces of @n@ units.
---
-vsep :: (Num u, Composite a, Vertical a, Blank a, u ~ PUnit a) 
-       => u -> a -> [a] -> a
-vsep n = foldl' (vspace n)
-
-
---------------------------------------------------------------------------------
--- Aligning pictures
-
-
--- | > alignH z a b
---
--- Move picture @b@ up or down to be horizontally aligned along a 
--- line from the top, center or bottom of picture @a@
--- 
-alignH :: ( Fractional u, Composite a, Horizontal a, Vertical a, Move a
-          , u ~ PUnit a ) 
-       => HAlign -> a -> a -> a
-alignH HTop    p1 p2 = vecMove p1 p2 (vvec $ topBound p1 - topBound p2)
-alignH HBottom p1 p2 = vecMove p1 p2 (vvec $ bottomBound p1 - bottomBound p2)
-alignH HCenter p1 p2 = vecMove p1 p2 (vvec v)
-  where V2 _ v = rightmid p1    .-. leftmid p2
-
-
--- | > alignV z a b
---
--- Move picture @b@ left or right to be vertically aligned along a 
--- line from the left side, center or right side of picture @a@
--- 
-alignV :: ( Fractional u, Composite a, Horizontal a, Vertical a, Move a
-          , u ~ PUnit a ) 
-       => VAlign -> a -> a -> a
-alignV VLeft   p1 p2 = vecMove p1 p2 (hvec $ leftBound p1 - leftBound p2) 
-alignV VRight  p1 p2 = vecMove p1 p2 (hvec $ rightBound p1 - rightBound p2)
-alignV VCenter p1 p2 = vecMove p1 p2 (hvec h) 
-  where V2 h _ = bottommid p1   .-. topmid p2
-
-
--- Helpers
-
-vecMove :: (Composite a, Move a, u ~ PUnit a) => a -> a -> (Vec2 u) -> a 
-vecMove a b (V2 x y) = a `over` (move x y) b 
-
--- Unlike alignH this function \"moves and concatenates\".
-moveAlignH :: ( Fractional u, Composite a, Horizontal a, Vertical a, Move a
-          , u ~ PUnit a ) 
-       => HAlign -> a -> a -> a
-moveAlignH HTop    p1 p2 = vecMove p1 p2 (topright p1    .-. topleft p2)
-moveAlignH HCenter p1 p2 = vecMove p1 p2 (rightmid p1    .-. leftmid p2)
-moveAlignH HBottom p1 p2 = vecMove p1 p2 (bottomright p1 .-. bottomleft p2)
-
-
--- Unlike alignV this function \"moves and concatenates\".
-moveAlignV :: ( Fractional u, Composite a, Horizontal a, Vertical a, Move a
-          , u ~ PUnit a ) 
-       => VAlign -> a -> a -> a
-moveAlignV VLeft   p1 p2 = vecMove p1 p2 (bottomleft p1  .-. topleft p2)
-moveAlignV VCenter p1 p2 = vecMove p1 p2 (bottommid p1   .-. topmid p2)
-moveAlignV VRight  p1 p2 = vecMove p1 p2 (bottomright p1 .-. topright p2)
-
-
--- | Variant of 'hcat' that aligns the pictures as well as
--- concatenating them.
-hcatA :: ( Fractional u, Horizontal a, Vertical a
-         , Composite a, Move a, u ~ PUnit a)
-     => HAlign -> a -> [a] -> a
-hcatA ha = foldl' (moveAlignH ha)
-
--- | Variant of 'vcat' that aligns the pictures as well as
--- concatenating them.
-vcatA :: ( Fractional u, Horizontal a, Vertical a
-         , Composite a, Move a, u ~ PUnit a)
-     => VAlign -> a -> [a] -> a
-vcatA va = foldl' (moveAlignV va)
-
-
--- | Variant of @hsep@ that aligns the pictures as well as
--- concatenating and spacing them.
-hsepA :: ( Fractional u, Horizontal a, Vertical a
-         , Composite a, Move a, Blank a, u ~ PUnit a)
-     => HAlign -> u -> a -> [a] -> a
-hsepA ha n = foldl' op where 
-   a `op` b = moveAlignH ha (moveAlignH ha a (blankH n)) b 
-
--- | Variant of @vsep@ that aligns the pictures as well as
--- concatenating and spacing them.
-vsepA :: ( Fractional u, Horizontal a, Vertical a
-         , Composite a, Move a, Blank a, u ~ PUnit a)
-     => VAlign -> u -> a -> [a] -> a
-vsepA va n = foldl' op where 
-   a `op` b = moveAlignV va (moveAlignV va a (blankV n)) b 
-
---------------------------------------------------------------------------------
-
--- TO DETERMINE
--- What should leftBound and rightBound be for an empty picture?
-
-type instance PUnit (Picture u) = u
-
-instance (Num u, Ord u) => Horizontal (Picture u) where
-  moveH a p  = p `picMoveBy` (hvec a) 
-  leftBound  = leftPlane . boundary
-  rightBound = rightPlane . boundary
-
-instance (Num u, Ord u) => Vertical (Picture u) where
-  moveV a p   = p `picMoveBy` (vvec a) 
-  topBound    = upperPlane . boundary
-  bottomBound = lowerPlane . boundary
-
--- Note - picture is a binary tree and drawing is depth-first,
--- left-to-right so pictures in the right of the tree potentially
--- are drawn on top of pictures on the left.
---
--- So to print picture a _over_ picture b we form this node:
---
--- >  locale 
--- >    /\
--- >   /  \
--- >  b    a
---
--- Hence `over` flips b and a
-
-
-instance (Num u, Ord u) => Composite (Picture u) where
-  over = picOver       
-
-instance (Num u, Ord u) => Move (Picture u) where
-  move x y p = p `picMoveBy` (V2 x y)
-
-
-instance (Num u, Ord u) => Blank (Picture u) where
-  blank w h = blankPicture (bbox zeroPt (P2 w h))
-
-
-
---------------------------------------------------------------------------------
--- 
-
-
--- | Create multiple lines of text.
---
--- The dimension argument is the linespacing, measured as the
--- distance between the upper lines descender and the lower 
--- lines ascender.
---
--- An error is throw if the list of strings is empty
--- 
-multilabel :: (Real u, Floating u, FromPtSize u, TextLabel t) 
-           => t -> u -> VAlign -> [String] -> Point2 u -> Picture u
-multilabel _    _ _  []     _  = error $ 
-    "Wumpus.Core.PictureLanguage.multilabel - empty list."
-
-multilabel attr n va (x:xs) pt = 
-    moveAll $ vsepA va n line1 (map mkPic xs)
-  where
-    line1     = mkPic x
-    mkPic s   = frame $ textlabel attr s zeroPt
-    vdelta p  = boundaryHeight (boundary p) - boundaryHeight (boundary line1)
-    moveAll p = moveV (vdelta p) $ p `at` pt
-
-
diff --git a/wumpus-basic.cabal b/wumpus-basic.cabal
--- a/wumpus-basic.cabal
+++ b/wumpus-basic.cabal
@@ -1,5 +1,5 @@
 name:             wumpus-basic
-version:          0.4.0
+version:          0.5.0
 license:          BSD3
 license-file:     LICENSE
 copyright:        Stephen Tetley <stephen.tetley@gmail.com>
@@ -20,6 +20,16 @@
   .
   Changelog:
   .
+  0.4.0 to 0.5.0:
+  .
+  * Re-worked the PictureLanguage module.
+  .
+  * SVGColours and X11Colours moved into @Wumpus.Basic.Colour@.
+    Naming scheme for colours changed to use underscore between 
+    words rather than camelCase.
+  .
+  * Updates to work with wumpus-core-0.30.0.
+  .
   0.3.0 to 0.4.0:
   .
   * Reworked the monads. Monads.DrawingMonad replaces 
@@ -72,14 +82,15 @@
   build-depends:      base            <  5, 
                       containers      >= 0.3     && <= 0.4, 
                       vector-space    >= 0.6,
-                      monadLib        >= 3.6,
-                      wumpus-core     >= 0.23.0
+                      wumpus-core     >= 0.30.0
 
   
   exposed-modules:
     Wumpus.Basic.Anchors,
     Wumpus.Basic.Arrows,
     Wumpus.Basic.Arrows.Tips,
+    Wumpus.Basic.Colour.SVGColours,
+    Wumpus.Basic.Colour.X11Colours,
     Wumpus.Basic.Dots,
     Wumpus.Basic.Dots.Base,
     Wumpus.Basic.Graphic,
@@ -95,15 +106,13 @@
     Wumpus.Basic.Paths.Base,
     Wumpus.Basic.Paths.Construction,
     Wumpus.Basic.SafeFonts,
-    Wumpus.Basic.SVGColours,
     Wumpus.Basic.Text.LRSymbol,
     Wumpus.Basic.Text.LRText,
     Wumpus.Basic.Utils.Combinators,
     Wumpus.Basic.Utils.HList,
     Wumpus.Basic.Utils.Intersection,
     Wumpus.Basic.VersionNumber,
-    Wumpus.Basic.X11Colours,
-    Wumpus.Deprecated.PictureLanguage
+    Wumpus.Basic.PictureLanguage
 
   other-modules:
 
