diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,9 @@
+## 0.7.1
+* Remove the `wiki-suite` test suite from `blank-canvas.cabal`, as it was never
+  intended to work as a traditional test suite. The functionality of
+  `wiki-suite` has moved to a subdirectory of the upstream `blank-canvas`
+  repository.
+
 ## 0.7
 * Strengthen the `Monad` constraint on `readColourName` to `MonadFail`.
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2015, The University of Kansas
+Copyright (c) 2012-2020, The University of Kansas
 
 All rights reserved.
 
diff --git a/blank-canvas.cabal b/blank-canvas.cabal
--- a/blank-canvas.cabal
+++ b/blank-canvas.cabal
@@ -1,5 +1,5 @@
 Name:                blank-canvas
-Version:             0.7
+Version:             0.7.1
 Synopsis:            HTML5 Canvas Graphics Library
 
 Description:      @blank-canvas@ is a Haskell binding to the complete
@@ -76,8 +76,8 @@
   default-language:    Haskell2010
   build-depends:       aeson                 >= 0.7     && < 1.5,
                        base64-bytestring     == 1.0.*,
-                       base                  >= 4.7     && < 4.14,
-                       base-compat-batteries >= 0.10    && < 0.11,
+                       base                  >= 4.7     && < 4.15,
+                       base-compat-batteries >= 0.10    && < 0.12,
                        bytestring            == 0.10.*,
                        colour                >= 2.2     && < 2.4,
                        containers             >= 0.5     && < 0.7,
@@ -99,82 +99,6 @@
 
   GHC-options:         -Wall
   GHC-prof-options:    -Wall -fsimpl-tick-factor=100000
-
-
-test-suite wiki-suite
-    build-depends:    base                  >= 4.7  && < 4.14,
-                      base-compat-batteries >= 0.10 && < 0.11,
-                      blank-canvas,
-                      containers            >= 0.5  && < 0.7,
-                      process               >= 1.2  && < 1.7,
-                      directory             >= 1.2,
-                      shake                 >= 0.14,
-                      stm                   >= 2.2  && < 2.6,
-                      text                  >= 1.1  && < 1.3,
-                      time                  >= 1.4  && < 1.10,
-                      unix                  >= 2.7  && < 2.8,
-                      vector                >= 0.10 && < 0.13
-
-    default-language: Haskell2010
-    GHC-options:      -threaded -Wall
-    main-is:          Main.hs
-    hs-source-dirs:   wiki-suite
-    type:             exitcode-stdio-1.0
-    other-modules:    Arc
-                      Bezier_Curve
-                      Bounce
-                      Circle
-                      Clipping_Region
-                      Color_Fill
-                      Color_Square
-                      Custom_Shape
-                      Custom_Transform
-                      Draw_Canvas
-                      Draw_Device
-                      Draw_Image
-                      Favicon
-                      Font_Size_and_Style
-                      Get_Image_Data_URL
-                      Global_Alpha
-                      Global_Composite_Operations
-                      Grayscale
-                      Image_Crop
-                      Image_Loader
-                      Image_Size
-                      Is_Point_In_Path
-                      Key_Read
-                      Line
-                      Line_Cap
-                      Line_Color
-                      Line_Join
-                      Line_Width
-                      Linear_Gradient
-                      Load_Image_Data_URL
-                      Load_Image_Data_URL_2
-                      Miter_Limit
-                      Path
-                      Pattern
-                      Quadratic_Curve
-                      Radial_Gradient
-                      Rectangle
-                      Red_Line
-                      Rotate_Transform
-                      Rotating_Square
-                      Rounded_Corners
-                      Scale_Transform
-                      Semicircle
-                      Shadow
-                      Square
-                      Text_Align
-                      Text_Baseline
-                      Text_Color
-                      Text_Metrics
-                      Text_Stroke
-                      Text_Wrap
-                      Tic_Tac_Toe
-                      Translate_Transform
-                      Wiki
-
 
 source-repository head
   type:     git
diff --git a/wiki-suite/Arc.hs b/wiki-suite/Arc.hs
deleted file mode 100644
--- a/wiki-suite/Arc.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Arc where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let centerX = width context / 2;
-        let centerY = height context / 2;
-        let radius = 75;
-        let startingAngle = 1.1 * pi
-        let endingAngle = 1.9 * pi
-        lineWidth 15
-        strokeStyle "black"
-
-        beginPath()
-        arc(centerX - 50, centerY, radius, startingAngle, endingAngle, False)
-        stroke()
-
-        beginPath()
-        strokeStyle "blue"
-        arc(centerX + 50, centerY, radius, startingAngle, endingAngle, True)
-        stroke()
-
-
-    wiki $ snapShot context "images/Arc.png"
-    wiki $ close context
diff --git a/wiki-suite/Bezier_Curve.hs b/wiki-suite/Bezier_Curve.hs
deleted file mode 100644
--- a/wiki-suite/Bezier_Curve.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Bezier_Curve where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath()
-        moveTo(188, 150)
-        bezierCurveTo(140, 10, 388, 10, 388, 170)
-        lineWidth 10
-        -- line color
-        strokeStyle "black"
-        stroke()
-
-
-    wiki $ snapShot context "images/Bezier_Curve.png"
-    wiki $ close context
diff --git a/wiki-suite/Bounce.hs b/wiki-suite/Bounce.hs
deleted file mode 100644
--- a/wiki-suite/Bounce.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Bounce where
-
-import Control.Concurrent
-import Control.Monad -- wiki $
-import Data.Text (Text)
-import Graphics.Blank
-import Wiki -- (512,384)
-
-main :: IO ()
-main = blankCanvas 3000 { events = ["mousedown"] } $ go
-
-type Ball a = ((Double, Double), Double, a)
-
-type Color = String
-
-epoch :: [Ball ()]
-epoch = []
-
-type State = ([Ball Color])
-
-showBall :: (Double, Double) -> Text -> Canvas ()
-showBall (x,y) col = do
-        beginPath()
-        globalAlpha 0.5
-        fillStyle col
-        arc(x, y, 50, 0, pi*2, False)
-        closePath()
-        fill()
-
-moveBall :: Ball a -> Ball a
-moveBall ((x,y),d,a) = ((x,y+d),d+0.5,a)
-
-go :: DeviceContext -> IO ()
-go context = do
-     let bounce :: Ball a -> Ball a
-         bounce ((x,y),d,a)
-            | y + 25 >= height context && d > 0 = ((x,y),-(d-0.5)*0.97,a)
-            | otherwise         = ((x,y),d,a)
-
-     let loop (balls,cols) = do
-
-             send context $ do
-                clearCanvas
-                sequence_
-                     [ showBall xy col
-                     | (xy,_,col) <- balls
-                     ]
-             threadDelay (20 * 1000) 
-
-             wiki $ counter (\ _ -> True) $ \ n -> do
-                  file <- wiki $ anim_png "Bounce"
-                  wiki $ when (n `mod` 43 == 0) $ send context $ trigger $ Event { eMetaKey = False, ePageXY = return(fromIntegral (100 + length balls * 45),20), eType = "mousedown", eWhich = Nothing}
-                  wiki $ when (n `mod` 3 == 0) $ snapShot context $ file
-                  wiki $ when (n >= 400) $ do { build_anim "Bounce" 7; close context }
-
-             es <- flush context
-             if (null es) then return () else print es
-
-             let newBalls = [ ((x,y),0,head cols) 
-                            | Just (x,y) <- map ePageXY es
-                            ]
-
-             loop (map bounce $ map moveBall $ balls ++ newBalls, tail cols)
-
-
-     loop ([((100,100),0,"blue")],cycle ["red","blue","green","orange","cyan"])
diff --git a/wiki-suite/Circle.hs b/wiki-suite/Circle.hs
deleted file mode 100644
--- a/wiki-suite/Circle.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Circle where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let centerX = width context / 2
-        let centerY = height context / 2
-        let radius = 70
-
-        beginPath()
-        arc(centerX, centerY, radius, 0, 2 * pi, False)
-        fillStyle "#8ED6FF"
-        fill()
-        lineWidth  5
-        strokeStyle "black"
-        stroke()
-
-
-    wiki $ snapShot context "images/Circle.png"
-    wiki $ close context
diff --git a/wiki-suite/Clipping_Region.hs b/wiki-suite/Clipping_Region.hs
deleted file mode 100644
--- a/wiki-suite/Clipping_Region.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Clipping_Region where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-      let x = width context / 2;
-      let y = height context / 2;
-      let radius = 75;
-      let offset = 50;
-
-      {-
-       * save() allows us to save the canvas context before
-       * defining the clipping region so that we can return
-       * to the default state later on
-       -}
-      save();
-      beginPath();
-      arc(x, y, radius, 0, 2 * pi, False);
-      clip();
-
-      -- draw blue circle inside clipping region
-      beginPath();
-      arc(x - offset, y - offset, radius, 0, 2 * pi, False);
-      fillStyle "blue";
-      fill();
-
-      -- draw yellow circle inside clipping region
-      beginPath();
-      arc(x + offset, y, radius, 0, 2 * pi, False);
-      fillStyle "yellow";
-      fill();
-
-      -- draw red circle inside clipping region
-      beginPath();
-      arc(x, y + offset, radius, 0, 2 * pi, False);
-      fillStyle "red";
-      fill();
-
-      {-
-       * restore() restores the canvas context to its original state
-       * before we defined the clipping region
-       -}
-      restore();
-      beginPath();
-      arc(x, y, radius, 0, 2 * pi, False);
-      lineWidth 10;
-      strokeStyle "blue";
-      stroke();
-
-    wiki $ snapShot context "images/Clipping_Region.png"
-    wiki $ close context
diff --git a/wiki-suite/Color_Fill.hs b/wiki-suite/Color_Fill.hs
deleted file mode 100644
--- a/wiki-suite/Color_Fill.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Color_Fill where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath();
-        moveTo(170, 80);
-        bezierCurveTo(130, 100, 130, 150, 230, 150);
-        bezierCurveTo(250, 180, 320, 180, 340, 150);
-        bezierCurveTo(420, 150, 420, 120, 390, 100);
-        bezierCurveTo(430, 40, 370, 30, 340, 50);
-        bezierCurveTo(320, 5, 250, 20, 250, 50);
-        bezierCurveTo(200, 5, 150, 20, 170, 80);
-
-      -- complete custom shape
-        closePath();
-        lineWidth 5;
-        fillStyle "#8ED6FF";
-        fill();
-        strokeStyle "blue";
-        stroke();
-
-    wiki $ snapShot context "images/Color_Fill.png"
-    wiki $ close context
diff --git a/wiki-suite/Color_Square.hs b/wiki-suite/Color_Square.hs
deleted file mode 100644
--- a/wiki-suite/Color_Square.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Color_Square where
-
-import qualified Data.Vector.Unboxed as V
-import           Graphics.Blank
-import           Wiki -- (300,300)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    let v = V.fromList
-          $ concat
-          $ [ [r,g,0,255]
-            | r <- [0..255]
-            , g <- [0..255]
-            ]
-
-    send context $ do
-        putImageData (ImageData 256 256 v, [22,22])
-
-    wiki $ snapShot context "images/Color_Square.png"
-    wiki $ close context
-    
diff --git a/wiki-suite/Custom_Shape.hs b/wiki-suite/Custom_Shape.hs
deleted file mode 100644
--- a/wiki-suite/Custom_Shape.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Custom_Shape where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath();
-        moveTo(170, 80);
-        bezierCurveTo(130, 100, 130, 150, 230, 150);
-        bezierCurveTo(250, 180, 320, 180, 340, 150);
-        bezierCurveTo(420, 150, 420, 120, 390, 100);
-        bezierCurveTo(430, 40, 370, 30, 340, 50);
-        bezierCurveTo(320, 5, 250, 20, 250, 50);
-        bezierCurveTo(200, 5, 150, 20, 170, 80);
-      -- complete custom shape
-        closePath();
-        lineWidth 5;
-        strokeStyle "blue";
-        stroke();
-
-
-    wiki $ snapShot context "images/Custom_Shape.png"
-    wiki $ close context
diff --git a/wiki-suite/Custom_Transform.hs b/wiki-suite/Custom_Transform.hs
deleted file mode 100644
--- a/wiki-suite/Custom_Transform.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Custom_Transform where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let rectWidth = 150;
-        let rectHeight = 75;
-
-        -- translation matrix:
-        --  1  0  tx
-        --  0  1  ty
-        --  0  0  1
-        let tx = width context / 2;
-        let ty = height context / 2;
-
-        -- apply custom transform
-        transform(1, 0, 0, 1, tx, ty);
-
-        fillStyle "blue";
-        fillRect(rectWidth / (-2), rectHeight / (-2), rectWidth, rectHeight);
-
-
-    wiki $ snapShot context "images/Custom_Transform.png"
-    wiki $ close context
diff --git a/wiki-suite/Draw_Canvas.hs b/wiki-suite/Draw_Canvas.hs
deleted file mode 100644
--- a/wiki-suite/Draw_Canvas.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Draw_Canvas where
-
-import Graphics.Blank                     -- import the blank canvas
-import Wiki -- (600,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do -- start blank canvas on port 3000
-        send context $ do                 -- send commands to this specific context
-                moveTo(50,50)
-                lineTo(200,100)
-                lineWidth 10
-                strokeStyle "red"
-                stroke()                  -- this draws the ink into the canvas
-
-                me <- myCanvasContext
-                drawImage(me,[50,50])
-
-        wiki $ snapShot context "images/Draw_Canvas.png"
-        wiki $ close context
diff --git a/wiki-suite/Draw_Device.hs b/wiki-suite/Draw_Device.hs
deleted file mode 100644
--- a/wiki-suite/Draw_Device.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Draw_Device where
-
-import Graphics.Blank                     -- import the blank canvas
-import Wiki -- (600,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do -- start blank canvas on port 3000
-        send context $ do                 -- send commands to this specific context
-                moveTo(50,50)
-                lineTo(200,100)
-                lineWidth 10
-                strokeStyle "red"
-                stroke()                  -- this draws the ink into the canvas
-
-                drawImage(context,[50,50])
-
-        wiki $ snapShot context "images/Draw_Device.png"
-        wiki $ close context
diff --git a/wiki-suite/Draw_Image.hs b/wiki-suite/Draw_Image.hs
deleted file mode 100644
--- a/wiki-suite/Draw_Image.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Draw_Image where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        send context $ do
-            img <- newImage "images/Haskell.jpg"
-            drawImage(img,[69,50])
-
-
-        wiki $ snapShot context "images/Draw_Image.png"
-        wiki $ close context
diff --git a/wiki-suite/Favicon.hs b/wiki-suite/Favicon.hs
deleted file mode 100644
--- a/wiki-suite/Favicon.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Favicon where
-
-import Graphics.Blank                     -- import the blank canvas
-import Wiki -- (32,32)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do -- start blank canvas on port 3000
-        send context $ do                 -- send commands to this specific context
-
-             beginPath()
-             let relPath x xs = do
-                      beginPath()
-                      moveTo x
-                      sequence_ [ lineTo p | ss <- drop 2 $ scanl (flip (:)) [] (x:xs)
-                                           , let p = (sum (map fst ss), sum (map snd ss))
-                                           ]
-                      closePath()
-             
-             translate(height context * 0.07,height context * 0.8)
-             scale (height context / 20,-height context / 20)
-
-             let shape x xs col = do
-                     relPath x xs
-                     lineWidth 0.5
-                     fillStyle col
-                     lineCap "round"
-                     fill()                     
-
-             shape (0,0) [(4,6),(-4,6),(3,0),(4,-6),(-4,-6)] "#E8000D" 
-             shape (8,6) [(-4,6),(3,0),(8,-12),(-3,0),(-2.5,3.75),(-2.5,-3.75),(-3,0)] "#0022B4"
-             shape (17,3.5) [(-3.5,0),(-8/6,12/6),(3.5+8/6,0)] "#FFC82D" 
-             shape (17,6.5) [(-5.5,0),(-8/6,12/6),(5.5+8/6,0)] "#FFC82D" 
-
-        -- wiki $ txt <- send context $ toDataURL() ; print txt
-        wiki $ snapShot context "images/Favicon.png"
-        wiki $ close context
diff --git a/wiki-suite/Font_Size_and_Style.hs b/wiki-suite/Font_Size_and_Style.hs
deleted file mode 100644
--- a/wiki-suite/Font_Size_and_Style.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Font_Size_and_Style where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        font "40pt Calibri"
-        fillText("Hello World!", 150, 100)
-
-
-    wiki $ snapShot context "images/Font_Size_and_Style.png"
-    wiki $ close context
diff --git a/wiki-suite/Get_Image_Data_URL.hs b/wiki-suite/Get_Image_Data_URL.hs
deleted file mode 100644
--- a/wiki-suite/Get_Image_Data_URL.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Get_Image_Data_URL where
-
-import qualified Data.Text as Text
-import           Graphics.Blank
-import           Wiki -- (578,350)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    url <- send context $ do
-        beginPath();
-        moveTo(170, 80);
-        bezierCurveTo(130, 100, 130, 150, 230, 150);
-        bezierCurveTo(250, 180, 320, 180, 340, 150);
-        bezierCurveTo(420, 150, 420, 120, 390, 100);
-        bezierCurveTo(430, 40, 370, 30, 340, 50);
-        bezierCurveTo(320, 5, 250, 20, 250, 50);
-        bezierCurveTo(200, 5, 150, 20, 170, 80);
-      -- complete custom shape
-        closePath();
-        lineWidth 5;
-        strokeStyle "blue";
-        stroke();
-        toDataURL();
-
-    send context $ do
-        font "18pt Calibri"
-        fillText(Text.pack $ show $ Text.take 50 $ url, 10, 300)
-
-    wiki $ snapShot context "images/Get_Image_Data_URL.png"
-    wiki $ close context
diff --git a/wiki-suite/Global_Alpha.hs b/wiki-suite/Global_Alpha.hs
deleted file mode 100644
--- a/wiki-suite/Global_Alpha.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Global_Alpha where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-      -- draw blue rectangle
-      beginPath();
-      rect(200, 20, 100, 100);
-      fillStyle "blue";
-      fill();
-
-      -- draw transparent red circle
-      globalAlpha 0.5;
-      beginPath();
-      arc(320, 120, 60, 0, 2 * pi, False);
-      fillStyle "red";
-      fill();
-
-
-    wiki $ snapShot context "images/Global_Alpha.png"
-    wiki $ close context
diff --git a/wiki-suite/Global_Composite_Operations.hs b/wiki-suite/Global_Composite_Operations.hs
deleted file mode 100644
--- a/wiki-suite/Global_Composite_Operations.hs
+++ /dev/null
@@ -1,70 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Global_Composite_Operations where
-
-import qualified Data.Text as Text
-import           Graphics.Blank
-import           Wiki -- (578,430)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-
-        tempCanvas <- newCanvas (round (width context  :: Double),
-                                 round (height context :: Double))
-        console_log tempCanvas
-        (w,h) <- return (round (width context  :: Double) :: Int,
-                         round (height context :: Double) :: Int)
-        console_log $ Text.pack $ show $ (w,h)
-        
-        let squareWidth = 55;
-        let circleRadius = 35;
-        let shapeOffset = 50;
-
-        let compss = 
-             [["source-atop", "source-in", "source-out", "source-over"]
-             ,["destination-atop","destination-in","destination-out","destination-over"]
-             ,["lighter","darker","xor","copy"]
-             ]
-
-        -- translate context to add 10px padding
-        translate(10, 10);
-
-
-        sequence_ [
-             do
-
-                -- clear temp context
-                with tempCanvas $ do
-                        save();
-
-                        clearRect(0, 0, width context, height context);
-                        -- draw rectangle (destination)
-                        beginPath();
-                        rect(0, 0, squareWidth, squareWidth);
-                        fillStyle "blue";
-                        fill();
-
-                        -- set global composite
-                        globalCompositeOperation thisOperation;
-
-                        -- draw circle (source)
-                        beginPath();
-                        arc(shapeOffset, shapeOffset, circleRadius, 0, 2 * pi, False);
-                        fillStyle "red";
-                        fill();
-
-                        restore();
-
-                        font "10pt Verdana";
-                        fillStyle "black";
-                        fillText(thisOperation, 0, squareWidth + 45);
-
-                drawImage(tempCanvas, [x * 125, y * 125]);
-
-
-              | (comps,y)         <- compss `zip` [0..]
-              , (thisOperation,x) <- comps  `zip` [0..]
-              ]
-
-    wiki $ snapShot context "images/Global_Composite_Operations.png"
-    wiki $ close context
diff --git a/wiki-suite/Grayscale.hs b/wiki-suite/Grayscale.hs
deleted file mode 100644
--- a/wiki-suite/Grayscale.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Grayscale where
-
-import qualified Data.Vector.Unboxed as V
-import           Graphics.Blank
-import           Wiki -- (578,400)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        ImageData w h v <- send context $ do
-            img <- newImage "images/House.jpg"
-            drawImage(img,[50,50])
-            getImageData(50,50, width img, height img)
-        
-        let group4 (a:b:c:d:xs) = (a,b,c,d) : group4 xs
-            group4 _            = []
-        
-        let v' = V.fromList
-              $ concat
-              $ [ let brightness = round
-                                 ( 0.34 * fromIntegral r 
-                                 + 0.5 * fromIntegral g
-                                 + 0.16 * fromIntegral b :: Double)
-                  in [brightness,brightness,brightness,a] 
-                | (r,g,b,a) <- group4 $ V.toList $ v
-                ]
-        
-        send context $ do
-            putImageData (ImageData w h v', [100,100])
-        
-        wiki $ snapShot context "images/Grayscale.png"
-        wiki $ close context
diff --git a/wiki-suite/Image_Crop.hs b/wiki-suite/Image_Crop.hs
deleted file mode 100644
--- a/wiki-suite/Image_Crop.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Image_Crop where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        send context $ do
-            img <- newImage "images/Haskell.jpg"
-            drawImage(img,[150,0,150,150,50,50,150,200])
-        
-        
-        wiki $ snapShot context "images/Image_Crop.png"
-        wiki $ close context
diff --git a/wiki-suite/Image_Loader.hs b/wiki-suite/Image_Loader.hs
deleted file mode 100644
--- a/wiki-suite/Image_Loader.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Image_Loader where
-
-import Graphics.Blank
-import Wiki -- (578,400)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        send context $ do
-            img1 <- newImage "images/Haskell.jpg"
-            img2 <- newImage "images/House.jpg"
-            drawImage(img1,[69,50,97,129])
-            drawImage(img2,[200,50])
-        
-        
-        wiki $ snapShot context "images/Image_Loader.png"
-        wiki $ close context
diff --git a/wiki-suite/Image_Size.hs b/wiki-suite/Image_Size.hs
deleted file mode 100644
--- a/wiki-suite/Image_Size.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Image_Size where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        send context $ do
-            img <- newImage "images/Haskell.jpg"
-            drawImage(img,[69,50,97,129])
-        
-        
-        wiki $ snapShot context "images/Image_Size.png"
-        wiki $ close context
diff --git a/wiki-suite/Is_Point_In_Path.hs b/wiki-suite/Is_Point_In_Path.hs
deleted file mode 100644
--- a/wiki-suite/Is_Point_In_Path.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Is_Point_In_Path where
-
-import Graphics.Blank
-import Wiki -- (400,400)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-
-    send context $ do
-        strokeStyle "blue";
-        beginPath();
-        rect(100,100,200,200)
-        cmds <- sequence [ do
-                   b <- isPointInPath (x,y)
-                   return $ do
-                        beginPath()
-                        fillStyle $ if b then "red" else "green"
-                        arc(x, y, 5, 0, pi*2, False)
-                        fill()
-                 | x <- take 8 [25,25+50..]
-                 , y <- take 8 [25,25+50..]
-                 ]
-        stroke()
-        -- Now draw the points
-        sequence_ cmds
-
-    wiki $ snapShot context "images/Is_Point_In_Path.png"
-    wiki $ close context
diff --git a/wiki-suite/Key_Read.hs b/wiki-suite/Key_Read.hs
deleted file mode 100644
--- a/wiki-suite/Key_Read.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE OverloadedStrings #-}
-module Key_Read where
-
-import           Data.List (nub)
-import qualified Data.Text as Text
--- import           Debug.Trace
-import           Graphics.Blank
-import           Prelude.Compat
-import           Wiki -- (512,200)
-
-data State = State
-        { keys :: [Int]    -- key *codes* for pressed keys
-        , step :: Int
-        }
-     deriving Show
-
-main :: IO ()
-main = blankCanvas 3000 { events = ["keyup","keydown"] } $ \ context -> loop context (State [] 0)
-
-loop :: DeviceContext -> State -> IO ()
-loop context state = do
-        send context $ do
-                clearRect (0,0,width context,height context)
-                lineWidth 1
-                strokeStyle "red"
-                font "30pt Calibri"
-                fillText("Keys currently pressed: " <> Text.pack (show (keys state)),10,50)
-                fillText("Counter: " <> Text.pack (show (step state)),10,150)
-
-        control context state
-
-control :: DeviceContext -> State -> IO ()
-control context state = do
-    wiki $ counter (\ _ -> True) $ \ n -> do
-        file <- wiki $ anim_png "Key_Read"
-        wiki $ snapShot context $ file
-        wiki $ whenM (n == 1) $ ev context "keydown" 90
-        wiki $ whenM (n == 2) $ ev context "keydown" 88
-        wiki $ whenM (n == 3) $ ev context "keyup" 88
-        wiki $ whenM (n == 4) $ ev context "keyup" 90
-        wiki $ whenM (n == 5) $ do { build_anim "Key_Read" 100; close context }
-    event <- wait context
-    print event
-    let down_keys = case (eType event,eWhich event) of
-                     ("keydown",Just c) -> [c]
-                     _ -> []
-    let up_keys = case (eType event,eWhich event) of
-                     ("keyup",Just c) -> [c]
-                     _ -> []
-    let current_keys = [ k | k <- nub (keys state ++ down_keys), not (k `elem` up_keys) ]
-    let state' = state { step = step state + 1, keys = current_keys }
-    loop context state'
diff --git a/wiki-suite/Line.hs b/wiki-suite/Line.hs
deleted file mode 100644
--- a/wiki-suite/Line.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Line where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath()
-        moveTo(100,150)
-        lineTo(450,50)
-        stroke()
-
-
-    wiki $ snapShot context "images/Line.png"
-    wiki $ close context
diff --git a/wiki-suite/Line_Cap.hs b/wiki-suite/Line_Cap.hs
deleted file mode 100644
--- a/wiki-suite/Line_Cap.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Line_Cap where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        sequence_
-           [ do beginPath()
-                moveTo(200, height context / 2 + n)
-                lineTo(width context - 200, height context / 2 + n)
-                lineWidth 20
-                strokeStyle "#0000ff"
-                lineCap cap
-                stroke()
-           | (cap,n) <- zip ["butt","round","square"] [-50,0,50]
-           ]
-
-
-    wiki $ snapShot context "images/Line_Cap.png"
-    wiki $ close context
diff --git a/wiki-suite/Line_Color.hs b/wiki-suite/Line_Color.hs
deleted file mode 100644
--- a/wiki-suite/Line_Color.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Line_Color where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        moveTo(100,150)
-        lineTo(450,50)
-        lineWidth 5
-        strokeStyle "#ff0000"
-        stroke()
-
-
-    wiki $ snapShot context "images/Line_Color.png"
-    wiki $ close context
diff --git a/wiki-suite/Line_Join.hs b/wiki-suite/Line_Join.hs
deleted file mode 100644
--- a/wiki-suite/Line_Join.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Line_Join where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        
-        lineWidth 25;
-
-      -- miter line join (left)
-        beginPath();
-        moveTo(99, 150);
-        lineTo(149, 50);
-        lineTo(199, 150);
-        lineJoin "miter";
-        stroke();
-
-      -- round line join (middle)
-        beginPath();
-        moveTo(239, 150);
-        lineTo(289, 50);
-        lineTo(339, 150);
-        lineJoin "round";
-        stroke();
-
-      -- bevel line join (right)
-        beginPath();
-        moveTo(379, 150);
-        lineTo(429, 50);
-        lineTo(479, 150);
-        lineJoin "bevel";
-        stroke();
- 
-
-    wiki $ snapShot context "images/Line_Join.png"
-    wiki $ close context
diff --git a/wiki-suite/Line_Width.hs b/wiki-suite/Line_Width.hs
deleted file mode 100644
--- a/wiki-suite/Line_Width.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Line_Width where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        moveTo(100,150)
-        lineTo(450,50)
-        lineWidth 15
-        stroke()
-
-
-    wiki $ snapShot context "images/Line_Width.png"
-    wiki $ close context
diff --git a/wiki-suite/Linear_Gradient.hs b/wiki-suite/Linear_Gradient.hs
deleted file mode 100644
--- a/wiki-suite/Linear_Gradient.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Linear_Gradient where
-
-import           Graphics.Blank
-import qualified Graphics.Blank.Style as Style
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do        
-        rect(0, 0, width context, height context)
-        grd <- createLinearGradient(0, 0, width context, height context)
-        -- light blue
-        grd # addColorStop(0, "#8ED6FF")
-        -- dark blue
-        grd # addColorStop(1, "#004CB3")
-        Style.fillStyle grd;
-        fill();
-
-
-    wiki $ snapShot context "images/Linear_Gradient.png"
-    wiki $ close context
diff --git a/wiki-suite/Load_Image_Data_URL.hs b/wiki-suite/Load_Image_Data_URL.hs
deleted file mode 100644
--- a/wiki-suite/Load_Image_Data_URL.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Load_Image_Data_URL where
-
-import qualified Data.Text.IO as Text.IO
-import           Graphics.Blank
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = do
-    blankCanvas 3000 $ \ context -> do
-        url <- Text.IO.readFile "data/dataURL.txt"
-        send context $ do
-               img <- newImage url
-               drawImage (img,[0,0])
-        
-        wiki $ snapShot context "images/Load_Image_Data_URL.png"
-        wiki $ close context
diff --git a/wiki-suite/Load_Image_Data_URL_2.hs b/wiki-suite/Load_Image_Data_URL_2.hs
deleted file mode 100644
--- a/wiki-suite/Load_Image_Data_URL_2.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Load_Image_Data_URL_2 where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    url <- readDataURL "image/jpeg" "images/Haskell.jpg"
-    send context $ do
-           img <- newImage url
-           drawImage (img,[0,0])
-
-    wiki $ snapShot context "images/Load_Image_Data_URL_2.png"
-    wiki $ close context
diff --git a/wiki-suite/Main.hs b/wiki-suite/Main.hs
deleted file mode 100644
--- a/wiki-suite/Main.hs
+++ /dev/null
@@ -1,298 +0,0 @@
--- Shake Generator for wiki pages
-{-# LANGUAGE CPP #-}
-module Main where
-
-import           Prelude hiding ((*>))
-
-import           Control.Concurrent
-
-import           Data.Char
-import           Data.List
-
-import qualified Development.Shake as Shake
-import           Development.Shake hiding (doesFileExist)
-import           Development.Shake.FilePath
-
-import           System.Directory
-import           System.Environment
-import           System.IO
-import           System.Process
-
--- TO test: ghci wiki-suite/Draw_Canvas.hs -idist/build/autogen/:.:wiki-suite
-import qualified Arc
-import qualified Bezier_Curve
-import qualified Bounce
-import qualified Circle
-import qualified Clipping_Region
-import qualified Color_Fill
-import qualified Color_Square
-import qualified Custom_Shape
-import qualified Draw_Canvas
-import qualified Draw_Device
-import qualified Draw_Image
-import qualified Favicon
-import qualified Font_Size_and_Style
-import qualified Get_Image_Data_URL
-import qualified Global_Alpha
-import qualified Global_Composite_Operations
-import qualified Grayscale
-import qualified Image_Crop
-import qualified Image_Loader
-import qualified Image_Size
-import qualified Is_Point_In_Path
-import qualified Key_Read
-import qualified Line
-import qualified Line_Cap
-import qualified Line_Color
-import qualified Line_Join
-import qualified Line_Width
-import qualified Linear_Gradient
-import qualified Load_Image_Data_URL
-import qualified Load_Image_Data_URL_2
-import qualified Miter_Limit
-import qualified Path
-import qualified Pattern
-import qualified Quadratic_Curve
-import qualified Radial_Gradient
-import qualified Rectangle
-import qualified Red_Line
-import qualified Rotating_Square
-import qualified Rounded_Corners
-import qualified Semicircle
-import qualified Shadow
-import qualified Square
-import qualified Text_Align
-import qualified Text_Baseline
-import qualified Text_Color
-import qualified Text_Metrics
-import qualified Text_Stroke
-import qualified Text_Wrap
-import qualified Tic_Tac_Toe
-import qualified Translate_Transform
-import qualified Scale_Transform
-import qualified Rotate_Transform
-import qualified Custom_Transform
-
-import System.Environment
-
-main :: IO ()
-main = do
-     args <- getArgs
-     main2 args
-
-main2 :: [String] -> IO ()
-main2 ["Arc"] = Arc.main
-main2 ["Bezier_Curve"] = Bezier_Curve.main
-main2 ["Bounce"] = Bounce.main
-main2 ["Circle"] = Circle.main
-main2 ["Clipping_Region"] = Clipping_Region.main
-main2 ["Color_Fill"] = Color_Fill.main
-main2 ["Color_Square"] = Color_Square.main
-main2 ["Custom_Shape"] = Custom_Shape.main
-main2 ["Draw_Canvas"] = Draw_Canvas.main
-main2 ["Draw_Device"] = Draw_Device.main
-main2 ["Draw_Image"] = Draw_Image.main
-main2 ["Favicon"] = Favicon.main
-main2 ["Font_Size_and_Style"] = Font_Size_and_Style.main
-main2 ["Get_Image_Data_URL"] = Get_Image_Data_URL.main
-main2 ["Global_Alpha"] = Global_Alpha.main
-main2 ["Global_Composite_Operations"] = Global_Composite_Operations.main
-main2 ["Grayscale"] = Grayscale.main
-main2 ["Image_Crop"] = Image_Crop.main
-main2 ["Image_Loader"] = Image_Loader.main
-main2 ["Miter_Limit"] = Miter_Limit.main
-main2 ["Image_Size"] = Image_Size.main
-main2 ["Is_Point_In_Path"] = Is_Point_In_Path.main
-main2 ["Key_Read"] = Key_Read.main
-main2 ["Line"] = Line.main
-main2 ["Line_Cap"] = Line_Cap.main
-main2 ["Line_Color"] = Line_Color.main
-main2 ["Line_Join"] = Line_Join.main
-main2 ["Line_Width"] = Line_Width.main
-main2 ["Linear_Gradient"] = Linear_Gradient.main
-main2 ["Load_Image_Data_URL"] = Load_Image_Data_URL.main
-main2 ["Load_Image_Data_URL_2"] = Load_Image_Data_URL_2.main
-main2 ["Path"] = Path.main
-main2 ["Pattern"] = Pattern.main
-main2 ["Quadratic_Curve"] = Quadratic_Curve.main
-main2 ["Radial_Gradient"] = Radial_Gradient.main
-main2 ["Rectangle"] = Rectangle.main
-main2 ["Red_Line"] = Red_Line.main
-main2 ["Rotating_Square"] = Rotating_Square.main
-main2 ["Rounded_Corners"] = Rounded_Corners.main
-main2 ["Semicircle"] = Semicircle.main
-main2 ["Shadow"] = Shadow.main
-main2 ["Square"] = Square.main
-main2 ["Text_Align"] = Text_Align.main
-main2 ["Text_Baseline"] = Text_Baseline.main
-main2 ["Text_Color"] = Text_Color.main
-main2 ["Text_Metrics"] = Text_Metrics.main
-main2 ["Text_Stroke"] = Text_Stroke.main
-main2 ["Text_Wrap"] = Text_Wrap.main
-main2 ["Tic_Tac_Toe"] = Tic_Tac_Toe.main
-main2 ["Translate_Transform"] = Translate_Transform.main
-main2 ["Scale_Transform"] = Scale_Transform.main
-main2 ["Rotate_Transform"] = Rotate_Transform.main
-main2 ["Custom_Transform"] = Custom_Transform.main
-
-main2 ["clean"] = do
-        _ <- createProcess $ shell "rm blank-canvas.wiki/images/*.png blank-canvas.wiki/images/*.gif blank-canvas.wiki/examples/*.hs"
-        return ()
-
-main2 args = shakeArgs shakeOptions $ do
-
-    if null args then do
-            want ["blank-canvas.wiki/images/" ++ nm ++ ".gif" | nm <- movies ]
-            want ["blank-canvas.wiki/images/" ++ nm ++ ".png" | nm <- examples ++ tutorial]
-            want ["blank-canvas.wiki/examples/" ++ nm ++ ".hs" | nm <- movies ++ examples ++ tutorial]
-            want ["blank-canvas.wiki/" ++ toMinus nm ++ ".md" | nm <- movies ++ examples ++ tutorial]
-    else return ()
-
-    ["blank-canvas.wiki/images/*.png", "blank-canvas.wiki/images/*.gif"] |%> \out -> do
-        let nm = takeBaseName out
-
-        liftIO $ print (out,nm)
-
-        let tmp = "tmp"
-
-        liftIO $ createDirectoryIfMissing False tmp
-        liftIO $ removeFiles tmp [nm ++ "*.png"]
-        liftIO $ createDirectoryIfMissing False tmp
-
-        need [ "blank-canvas.wiki/" ++ toMinus nm ++ ".md" ]
-        let haskell_file = nm ++ ".hs"
-        need [ "wiki-suite/" ++ haskell_file, "blank-canvas.wiki/examples/" ++ haskell_file ]
-        liftIO $ print nm
-
-        txt <- readFile' $ "wiki-suite/" ++ haskell_file
-
-        let (w,h) = head $
-              [ case words ln of
-                 [_,_,_,n] -> read n
-                 _ -> (512,384)
-              | ln <- lines txt
-              , "import" `isPrefixOf` ln && "Wiki" `isInfixOf` ln
-              ] ++ [(512,384) :: (Int, Int)]
-
-
-        sequence_ [
-             do (_,_,_,ghc) <- liftIO $
-                              createProcess (proc "./dist/build/wiki-suite/wiki-suite" [nm])
-
-                 -- wait a second, for things to start
-                liftIO $ threadDelay (1 * 1000 * 1000)
-
-#if defined(darwin_HOST_OS)
-                command_ [] "/usr/bin/open"
-                                       ["-a"
-                                       ,"/Applications/Google Chrome.app"
-                                       ,"http://localhost:3000/?height=" ++ show (h) ++ "&width=" ++ show (w) ++ hd]
-#else
-                -- TODO: Figure out what Windows/MinTTY uses
-                command_ [] "/usr/bin/xdg-open" ["http://localhost:3000/?height=" ++ show (h) ++ "&width=" ++ show (w) ++ hd]
-#endif
-                 -- wait for haskell program to stop
-                liftIO $ waitForProcess ghc | hd <- [("")] ++ if nm == "Text_Wrap" then [("&hd")] else [] ]
-        return ()
-
-
-    "blank-canvas.wiki/examples/*.hs" %> \ out -> do
-        liftIO $ print out
-        let haskell_file = takeFileName out
-
-        txt <- readFile' $ "./wiki-suite/" ++ haskell_file
-
-        let new = reverse
-                $ dropWhile (all isSpace)
-                $ reverse
-                [ if "module" `isPrefixOf` ln
-                  then "module Main where"
-                  else ln
-                | ln <- lines txt
-                , not ("wiki $" `isInfixOf` ln)         -- remove the wiki stuff
-                , not ("import" `isPrefixOf` ln && "Wiki" `isInfixOf` ln)
-                ]
-
-        writeFileChanged out (unlines $ map (untabify 0) new)
-
-    "blank-canvas.wiki/*.md" %> \ out -> do
-        b <- Shake.doesFileExist out
---        liftIO $ print b
-        txts <- liftIO $ if b then do
-                        h <- openFile out ReadMode
-                        let loop = do
-                             b' <- hIsEOF h
-                             if b'
-                             then return []
-                             else do
-                                ln <- hGetLine h
-                                lns <- loop
-                                return (ln : lns)
-                        txts <- loop
-                        hClose h
-                        return txts
-                else return []
---        liftIO $ print txts
-
-        let p = not . (code_header `isPrefixOf`)
-        let textToKeep = takeWhile p txts
-
-        let haskell_file = map (\ c -> if c == '-' then '_' else c)
-                         $ replaceExtension (takeFileName out) ".hs"
-
-
-        liftIO $ print haskell_file
-        txt <- readFile' $ "blank-canvas.wiki/examples/" ++ haskell_file
-
-        let new = unlines $
-                       [ t | t <- textToKeep
-                       ] ++
-                       [code_header] ++
-                       lines txt ++
-                       [code_footer]
-
---        liftIO $ putStrLn new
-
-        writeFileChanged out new
-
-
--- to clean: rm images/*png images/*gif examples/*hs
--- */
-
-movies :: [String]
-movies = ["Rotating_Square","Tic_Tac_Toe","Bounce","Key_Read","Square"]
-
-examples :: [String]
-examples = ["Red_Line","Favicon"]
-        ++ ["Color_Square"]
-
-tutorial :: [String]
-tutorial = ["Line", "Line_Width", "Line_Color", "Line_Cap","Miter_Limit"]
-        ++ ["Arc","Quadratic_Curve","Bezier_Curve"]
-        ++ ["Path","Line_Join","Rounded_Corners","Is_Point_In_Path"]
-        ++ ["Custom_Shape","Rectangle","Circle","Semicircle"]
-        ++ ["Color_Fill","Linear_Gradient","Radial_Gradient","Pattern"]
-        ++ ["Draw_Image","Image_Size","Image_Crop","Image_Loader", "Draw_Canvas", "Draw_Device"]
-        ++ ["Font_Size_and_Style","Text_Color","Text_Stroke","Text_Align","Text_Baseline","Text_Metrics","Text_Wrap"]
-        ++ ["Translate_Transform","Scale_Transform","Rotate_Transform","Custom_Transform"]
-        ++ ["Shadow","Global_Alpha","Clipping_Region","Global_Composite_Operations"]
-        ++ ["Grayscale","Get_Image_Data_URL","Load_Image_Data_URL"]
-        ++ ["Load_Image_Data_URL_2"]
-
-wiki_dir :: String
-wiki_dir = "."
-
-toMinus :: String -> String
-toMinus = map (\ c -> if c == '_' then '-' else c)
-
-
-untabify :: Int -> String -> String
-untabify _ [] = []
-untabify n (c:cs) | c == '\t' = let t = 8 - n `mod` 8 in take t (cycle " ") ++ untabify (n + t) cs
-                  | otherwise = c : untabify (n + 1) cs
-
-code_header :: String
-code_header = "````Haskell"
-
-code_footer :: String
-code_footer = "````"
diff --git a/wiki-suite/Miter_Limit.hs b/wiki-suite/Miter_Limit.hs
deleted file mode 100644
--- a/wiki-suite/Miter_Limit.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Miter_Limit where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-  send context $ do
-    clearRect(0,0,150,150);
-    -- Draw guides
-    strokeStyle "#09f";
-    lineWidth    2;
-    strokeRect(-5,50,160,50);
- 
-    -- Set line styles
-    strokeStyle "#000";
-    lineWidth 10;
- 
-    -- check input
-    miterLimit 5;
-
-    -- Draw lines
-    beginPath()
-    moveTo(0,100)
-    sequence_ [ lineTo((fromIntegral i ** 1.5)*2,75+(if i `mod` 2 == 0 then 25 else -25))
-              | i <- [0..20] :: [Int]
-              ]
-    stroke();
-
-  wiki $ snapShot context "images/Miter_Limit.png"
-  wiki $ close context
diff --git a/wiki-suite/Path.hs b/wiki-suite/Path.hs
deleted file mode 100644
--- a/wiki-suite/Path.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Path where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath()
-        moveTo(100, 20)
-        -- line 1
-        lineTo(200, 160)
-        -- quadratic curve
-        quadraticCurveTo(230, 200, 250, 120)
-        -- bezier curve
-        bezierCurveTo(290, -40, 300, 200, 400, 150)
-        -- line 2
-        lineTo(500, 90)
-        lineWidth 5
-        strokeStyle "blue"
-        stroke()
-
-
-
-    wiki $ snapShot context "images/Path.png"
-    wiki $ close context
diff --git a/wiki-suite/Pattern.hs b/wiki-suite/Pattern.hs
deleted file mode 100644
--- a/wiki-suite/Pattern.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Pattern where
-
-import           Graphics.Blank
-import qualified Graphics.Blank.Style as Style
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        imageObj <- newImage "images/Haskell.jpg"
-        pattern <- createPattern (imageObj,"repeat")
-        rect(0, 0, width context, height context);
-        Style.fillStyle pattern;
-        fill();
-
-
-    wiki $ snapShot context "images/Pattern.png"
-    wiki $ close context
diff --git a/wiki-suite/Quadratic_Curve.hs b/wiki-suite/Quadratic_Curve.hs
deleted file mode 100644
--- a/wiki-suite/Quadratic_Curve.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Quadratic_Curve where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath()
-        moveTo(188, 150)
-        quadraticCurveTo(288, 0, 388, 150)
-        lineWidth 10
-        -- line color
-        strokeStyle "black"
-        stroke()
-
-
-    wiki $ snapShot context "images/Quadratic_Curve.png"
-    wiki $ close context
diff --git a/wiki-suite/Radial_Gradient.hs b/wiki-suite/Radial_Gradient.hs
deleted file mode 100644
--- a/wiki-suite/Radial_Gradient.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Radial_Gradient where
-
-import           Graphics.Blank
-import qualified Graphics.Blank.Style as Style
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        rect(0, 0, width context, height context)
-        grd <- createRadialGradient (238, 50, 10, 238, 50, 300)
-        -- light blue
-        grd # addColorStop(0, "#8ED6FF")
-        -- dark blue
-        grd # addColorStop(1, "#004CB3")
-        Style.fillStyle grd;
-        fill();
-
-
-    wiki $ snapShot context "images/Radial_Gradient.png"
-    wiki $ close context
diff --git a/wiki-suite/Rectangle.hs b/wiki-suite/Rectangle.hs
deleted file mode 100644
--- a/wiki-suite/Rectangle.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Rectangle where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath();
-        rect(188, 50, 200, 100);
-        fillStyle "yellow";
-        fill();
-        lineWidth 7;
-        strokeStyle "black";
-        stroke();
-      
-
-    wiki $ snapShot context "images/Rectangle.png"
-    wiki $ close context
diff --git a/wiki-suite/Red_Line.hs b/wiki-suite/Red_Line.hs
deleted file mode 100644
--- a/wiki-suite/Red_Line.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Red_Line where
-
-import Graphics.Blank                     -- import the blank canvas
-import Wiki -- (600,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do -- start blank canvas on port 3000
-        send context $ do                 -- send commands to this specific context
-                moveTo(50,50)
-                lineTo(200,100)
-                lineWidth 10
-                strokeStyle "red"
-                stroke()                  -- this draws the ink into the canvas
-
-        wiki $ snapShot context "images/Red_Line.png"
-        wiki $ close context
diff --git a/wiki-suite/Rotate_Transform.hs b/wiki-suite/Rotate_Transform.hs
deleted file mode 100644
--- a/wiki-suite/Rotate_Transform.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Rotate_Transform where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let rectWidth = 150;
-        let rectHeight = 75;
-        translate(width context / 2, height context / 2);
-        rotate (pi/4);
-
-        fillStyle "blue";
-        fillRect(rectWidth / (-2), rectHeight / (-2), rectWidth, rectHeight);
-
-
-    wiki $ snapShot context "images/Rotate_Transform.png"
-    wiki $ close context
diff --git a/wiki-suite/Rotating_Square.hs b/wiki-suite/Rotating_Square.hs
deleted file mode 100644
--- a/wiki-suite/Rotating_Square.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Rotating_Square where
-
-import Control.Concurrent
-import Graphics.Blank
-import Wiki -- (384,384)
-
-main :: IO ()
-main = blankCanvas 3000 $ flip loop 0
-
-loop :: DeviceContext -> Double -> IO ()
-loop context n = do
-        send context $ do
-                clearRect (0,0,width context,height context)
-                beginPath()
-                save()
-                translate (width context / 2,height context / 2)
-                rotate (pi * n)
-                beginPath()
-                moveTo(-100,-100)
-                lineTo(-100,100)
-                lineTo(100,100)
-                lineTo(100,-100)
-                closePath()
-                lineWidth 10
-                strokeStyle "green"
-                stroke()
-                restore()
-        threadDelay (20 * 1000)
-        v <- wiki $ return (round (n*100) :: Int)
-        wiki $ whenM (v `mod` 2 == 0) $ do
-                file <- wiki $ anim_png "Rotating_Square"
-                wiki $ snapShot context $ file
-                wiki $ whenM (v == 48) $ do { build_anim "Rotating_Square" 5; close context }
-        loop context (n + 0.01)
-
diff --git a/wiki-suite/Rounded_Corners.hs b/wiki-suite/Rounded_Corners.hs
deleted file mode 100644
--- a/wiki-suite/Rounded_Corners.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Rounded_Corners where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        
-        lineWidth 25;
-
-        let rectWidth = 200;
-        let rectHeight = 100;
-        let rectX = 189;
-        let rectY = 50;
-        let cornerRadius = 50;
-
-        beginPath();
-        moveTo(rectX, rectY);
-        lineTo(rectX + rectWidth - cornerRadius, rectY);
-        arcTo(rectX + rectWidth, rectY, rectX + rectWidth, rectY + cornerRadius, cornerRadius);
-        lineTo(rectX + rectWidth, rectY + rectHeight);
-        lineWidth 5;
-        stroke();
-
-
-    wiki $ snapShot context "images/Rounded_Corners.png"
-    wiki $ close context
diff --git a/wiki-suite/Scale_Transform.hs b/wiki-suite/Scale_Transform.hs
deleted file mode 100644
--- a/wiki-suite/Scale_Transform.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Scale_Transform where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let rectWidth = 150;
-        let rectHeight = 75;
-        translate(width context / 2, height context / 2);
-        scale(1, 0.5);
-
-        fillStyle "blue";
-        fillRect(rectWidth / (-2), rectHeight / (-2), rectWidth, rectHeight);
-
-
-    wiki $ snapShot context "images/Scale_Transform.png"
-    wiki $ close context
diff --git a/wiki-suite/Semicircle.hs b/wiki-suite/Semicircle.hs
deleted file mode 100644
--- a/wiki-suite/Semicircle.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Semicircle where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        beginPath();
-        arc(288, 75, 70, 0, pi, False);
-        closePath();
-        lineWidth 5;
-        fillStyle "red";
-        fill();
-        strokeStyle "#550000";
-        stroke();
-
-
-    wiki $ snapShot context "images/Semicircle.png"
-    wiki $ close context
diff --git a/wiki-suite/Shadow.hs b/wiki-suite/Shadow.hs
deleted file mode 100644
--- a/wiki-suite/Shadow.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Shadow where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        rect(188, 40, 200, 100);
-        fillStyle "red";
-        shadowColor "#999";
-        shadowBlur 20;
-        shadowOffsetX 15;
-        shadowOffsetY 15;
-        fill()
-
-
-    wiki $ snapShot context "images/Shadow.png"
-    wiki $ close context
diff --git a/wiki-suite/Square.hs b/wiki-suite/Square.hs
deleted file mode 100644
--- a/wiki-suite/Square.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Square where
-
-import Graphics.Blank
-import Wiki -- (512,512)
-
-main :: IO ()
-main = blankCanvas 3000 { events = ["mousedown"] } $ \ context -> do
-          let loop (x,y) (color:colors) = do
-                send context $ saveRestore $ do
-                        translate (x,y)
-                        beginPath()
-                        moveTo(-100,-100)
-                        lineTo(-100,100)
-                        lineTo(100,100)
-                        lineTo(100,-100)
-                        closePath()
-                        lineWidth 10
-                        strokeStyle color
-                        stroke()
-
-
-                wiki $ counter (\ _ -> True) $ \ n -> do
-                    file <- wiki $ anim_png "Square"
-                    wiki $ snapShot context $ file
-                    let e (x',y') = wiki $ send context $ trigger $ Event {
-                        eMetaKey = False
-                      , ePageXY = return (x',y')
-                      , eType = "mousedown"
-                      , eWhich = Nothing
-                    }
-                    wiki $ whenM (n == 1) $ e (x-100,y+50)
-                    wiki $ whenM (n == 2) $ e (x+20, y-60)
-                    wiki $ whenM (n == 3) $ e (x+40, y+20)
-                    wiki $ whenM (n == 4) $ e (x+60, y-60)
-                    wiki $ whenM (n >= 5) $ do { build_anim "Square" 100; close context }
-
-                event <- wait context
-                case ePageXY event of
-                        Nothing -> loop (x,y) colors
-                        Just (x',y') -> loop (x',y') colors
-
-          putStrLn "calling size"                
-          loop (width context / 2,height context / 2)
-               (cycle [ "#749871", "#1887f2", "#808080", "f01234"])
-
-
-
-
diff --git a/wiki-suite/Text_Align.hs b/wiki-suite/Text_Align.hs
deleted file mode 100644
--- a/wiki-suite/Text_Align.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Align where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let x = width context / 2
-        let y = height context / 2
-        font "30pt Calibri"
-        textAlign "center"
-        fillStyle "blue"
-        fillText("Hello World!", x, y)
-
-
-    wiki $ snapShot context "images/Text_Align.png"
-    wiki $ close context
diff --git a/wiki-suite/Text_Baseline.hs b/wiki-suite/Text_Baseline.hs
deleted file mode 100644
--- a/wiki-suite/Text_Baseline.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Baseline where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let x = width context / 2
-        let y = height context / 2
-        font "30pt Calibri"
-        textAlign "center"
-        textBaseline "middle"
-        fillStyle "blue"
-        fillText("Hello World!", x, y)
-
-
-    wiki $ snapShot context "images/Text_Baseline.png"
-    wiki $ close context
diff --git a/wiki-suite/Text_Color.hs b/wiki-suite/Text_Color.hs
deleted file mode 100644
--- a/wiki-suite/Text_Color.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Color where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        font "40pt Calibri"
-        fillStyle "#0000ff"
-        fillText("Hello World!", 150, 100)
-
-
-    wiki $ snapShot context "images/Text_Color.png"
-    wiki $ close context
diff --git a/wiki-suite/Text_Metrics.hs b/wiki-suite/Text_Metrics.hs
deleted file mode 100644
--- a/wiki-suite/Text_Metrics.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Metrics where
-
-import qualified Data.Text as Text
-import           Graphics.Blank
-import           Prelude.Compat
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let x = width context / 2
-        let y = height context / 2 - 10;
-        let text = "Hello World!"
-        font "30pt Calibri"
-        textAlign "center"
-        fillStyle "blue"
-        fillText(text, x, y)
-
-        TextMetrics w <- measureText text
-        font "20pt Calibri"
-        textAlign "center"
-        fillStyle "#555"
-        fillText("(" <> Text.pack (show w) <> "px wide)", x, y + 40)
-
-
-    wiki $ snapShot context "images/Text_Metrics.png"
-    wiki $ close context
diff --git a/wiki-suite/Text_Stroke.hs b/wiki-suite/Text_Stroke.hs
deleted file mode 100644
--- a/wiki-suite/Text_Stroke.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Stroke where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        font "60pt Calibri"
-        lineWidth 3
-        strokeStyle "blue"
-        strokeText("Hello World!", 80, 110)
-
-
-    wiki $ snapShot context "images/Text_Stroke.png"
-    wiki $ close context
diff --git a/wiki-suite/Text_Wrap.hs b/wiki-suite/Text_Wrap.hs
deleted file mode 100644
--- a/wiki-suite/Text_Wrap.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE OverloadedStrings #-}
-module Text_Wrap where
-
-import qualified Data.Text as Text
-import           Graphics.Blank
-import           Prelude.Compat
-import           Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    let r = devicePixelRatio context
-    send context $ do
-        font $ Text.pack $ "lighter " ++ show (16 * r) ++ "pt Calibri"
-        fillStyle "#000"
-        let maxWidth = 400 * r
-        wrapText 0 (Text.words message) ((width context - maxWidth) / 2) 60 maxWidth (25 * r)
-    let ex = wiki $ if r > 1.5 then "@2x" else ""
-    wiki $ snapShot context $ "images/Text_Wrap" ++ ex ++ ".png"
-    wiki $ close context
-    where
-
-        message = "All the world's a stage, and all the men and women merely players. " <>
-                  "They have their exits and their entrances; And one man in his time plays many parts."
-
-        wrapText _  []   _ _ _        _          = return ()
-        wrapText wc text x y maxWidth lineHeight = do
-             TextMetrics testWidth <- measureText $ Text.unwords $ take (wc+1) $ text
-             if (testWidth > maxWidth && wc > 0) || length text <= wc
-             then do fillText(Text.unwords $ take wc $ text,x,y)
-                     wrapText 0      (drop wc text) x (y + lineHeight) maxWidth lineHeight
-             else do wrapText (wc+1) text           x y                maxWidth lineHeight
-
-
-
diff --git a/wiki-suite/Tic_Tac_Toe.hs b/wiki-suite/Tic_Tac_Toe.hs
deleted file mode 100644
--- a/wiki-suite/Tic_Tac_Toe.hs
+++ /dev/null
@@ -1,132 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Tic_Tac_Toe where
-
-import           Control.Concurrent -- wiki $
-
-import qualified Data.Map as Map
-import           Data.Map (Map)
-import           Data.Text (Text)
-
--- import           Debug.Trace
-
-import           Graphics.Blank
-
-import           Wiki -- (512,384)
-
-main :: IO ()
-main = blankCanvas 3000 { events = ["mousedown"] } $ \ context -> loop context Map.empty X
-
-data XO = X | O  deriving (Eq,Ord,Show)
-
-swap :: XO -> XO
-swap X = O
-swap O = X
-
-loop :: DeviceContext -> Map (Int, Int) XO -> XO -> IO ()
-loop context board turn = do
-        sz <- send context $ do
-                clearRect (0,0,width context,height context)
-                beginPath()
-
-                let sz = min (width context) (height context)
-                save()
-                translate (width context / 2,height context / 2)
-                sequence_ [ do bigLine (-sz * 0.45,n) (sz * 0.45,n)
-                               bigLine (n,-sz * 0.45) (n,sz * 0.45)
-                          | n <- [-sz * 0.15,sz * 0.15]
-                          ]
-
-
-                sequence_ [ do save()
-                               translate (fromIntegral x * sz * 0.3,fromIntegral y * sz * 0.3)
-                               case Map.lookup (x,y) board of
-                                  Just X -> drawX (sz * 0.1)
-                                  Just O -> drawO (sz * 0.1)
-                                  Nothing -> return ()
-                               restore()
-                          | x <- [-1,0,1]
-                          , y <- [-1,0,1]
-                          ]
-                restore()
-                return sz
-
-        let pointToSq :: (Double, Double) -> Maybe (Int, Int)
-            pointToSq (x,y) = do
-                    x' <- fd ((x - width context / 2) / sz)
-                    y' <- fd ((y - height context / 2) / sz)
-                    return (x',y')
-
-            fd x = 
---                    trace (show ("fx",x,r)) $
-                    if r `elem` [-1..1] then Just (signum r) else Nothing
-                where r = round (x * 3.3333)
-
-        let press = (width context / 2 + fromIntegral x * (sz / 4),height context / 2 + fromIntegral y * (sz / 4)) -- wiki $
-                where (x,y) = head [ ix | (ix,Nothing)                                   -- wiki $
-                                                 <- [ ((x',y'),Map.lookup (x',y') board) -- wiki $
-                                                    | y' <- [-1,0,1]                     -- wiki $
-                                                    , x' <- [-1,0,1]                     -- wiki $
-                                                    ]]                                   -- wiki $
-
-        _ <- wiki $ forkIO $ send context $ trigger $ Event {
-              eMetaKey = False
-            , ePageXY = return $ press
-            , eType = "keypress"
-            , eWhich = Nothing
-        }
-        event <- wait context
-
-        file <- wiki $ anim_png "Tic_Tac_Toe"
-        wiki $ snapShot context $ file
-        wiki $ whenM (Map.size board == 7) $ do { build_anim "Tic_Tac_Toe" 100; close context ; quit }
-
-        print event
-        case ePageXY event of
-           -- if no mouse location, ignore, and redraw
-           Nothing -> loop context board turn
-           Just (x',y') -> case pointToSq (x',y') of
-                             Nothing -> loop context board turn
-                             Just pos -> case Map.lookup pos board of
-                                           Nothing -> loop context
-                                                            (Map.insert pos turn board)
-                                                            (swap turn)
-                                                    -- already something here
-                                           Just _ -> loop context board turn
-
-xColor, oColor, boardColor :: Text
-xColor = "#ff0000"
-oColor = "#00a000"
-boardColor = "#000080"
-
-drawX :: Double -> Canvas ()
-drawX size = do
-        strokeStyle xColor
-        lineCap "butt"
-        beginPath()
-        moveTo(-size,-size)
-        lineTo(size,size)
-        lineWidth 10
-        stroke()
-        beginPath()
-        moveTo(-size,size)
-        lineTo(size,-size)
-        lineWidth 10
-        stroke()
-
-drawO :: Double -> Canvas ()
-drawO radius = do
-        beginPath()
-        arc(0, 0, radius, 0, 2 * pi, False)
-        lineWidth 10
-        strokeStyle oColor
-        stroke()
-
-bigLine :: (Double, Double) -> (Double, Double) -> Canvas ()
-bigLine (x,y) (x',y') = do
-        beginPath()
-        moveTo(x,y)
-        lineTo(x',y')
-        lineWidth 20
-        strokeStyle boardColor
-        lineCap "round"
-        stroke()
diff --git a/wiki-suite/Translate_Transform.hs b/wiki-suite/Translate_Transform.hs
deleted file mode 100644
--- a/wiki-suite/Translate_Transform.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-module Translate_Transform where
-
-import Graphics.Blank
-import Wiki -- (578,200)
-
-main :: IO ()
-main = blankCanvas 3000 $ \ context -> do
-    send context $ do
-        let rectWidth = 150;
-        let rectHeight = 75;
-        translate(width context / 2, height context / 2);
-        fillStyle "blue";
-        fillRect(rectWidth / (-2), rectHeight / (-2), rectWidth, rectHeight);
-
-
-    wiki $ snapShot context "images/Translate_Transform.png"
-    wiki $ close context
diff --git a/wiki-suite/Wiki.hs b/wiki-suite/Wiki.hs
deleted file mode 100644
--- a/wiki-suite/Wiki.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
--- wiki generator support
-
-module Wiki where
-
-import           Control.Concurrent
-import           Control.Concurrent.STM
-import qualified Control.Monad as M
-
-import           Data.Text (Text)
-import           Data.Time.Clock.POSIX
-
-import           Graphics.Blank
-
-import           System.Exit
-import           System.IO.Unsafe
-import           System.Posix.Process
-import           System.Process
-
-import           Text.Printf
-
--- import           Trace.Hpc.Reflect
--- import           Trace.Hpc.Tix
-
-snapShot :: DeviceContext -> FilePath -> IO ()
-snapShot context fileName = do
-        txt <- send context $ do
-
-                tempCanvas <- newCanvas (round (width context + 20  :: Double),
-                                         round (height context + 20 :: Double))
-
-                top' <- myCanvasContext
-
-                with tempCanvas $ do
-                        -- print a border, because we can (looks better in wiki)
-
-                        save()
-                        beginPath()
-                        moveTo(1,1)
-                        lineTo(width context+1,1)
-                        lineTo(width context+1,height context+1)
-                        lineTo(1,height context+1)
-                        closePath()
-                        fillStyle "white"
-
-                        shadowOffsetX 10
-                        shadowOffsetY 10;
-                        shadowBlur 15;
-                        shadowColor "#999";
-
-                        fill()
-
-                        beginPath()
-                        moveTo(0.5,0.5)
-                        lineTo(width context+1.5,0.5)
-                        lineTo(width context+1.5,height context+1.5)
-                        lineTo(0.5,height context+1.5)
-                        closePath()
-
-                        shadowOffsetX 0
-                        shadowOffsetY 0
-                        shadowBlur 0
-                        lineWidth 1
-                        strokeStyle "black"
-
-                        stroke()
-
-                        restore()
-                        
-                        drawImage(top',[1,1])
-                        toDataURL() -- of tempCanvas
-
-        writeDataURL ("blank-canvas.wiki/" ++ fileName) txt
-
-wiki :: a -> a
-wiki = id
-
-close :: DeviceContext -> IO ()
-close context = do
---        n <- getPOSIXTime                
---        Tix tix <- examineTix
---	let tix' = filter (\ t -> ("Graphics.Blank" `isPrefixOf` tixModuleName t)) 
---	         $ tix
---        writeFile ("tix/tix_" ++ printf "_%013d" (floor (fromRational (toRational n) * 1000) :: Integer) ++ ".tix") $ show $ Tix tix'
-        send context $ eval "open(location, '_self').close()"
-        threadDelay (1000 * 1000);
-        putStrLn "dieing"
-        p <- getProcessID 
-        callProcess "kill" [show p]
-        quit
-
-quit :: IO a
-quit = exitSuccess
-
-whenM :: Monad m => Bool -> m () -> m ()
-whenM = M.when
-
-anim_png :: String -> IO String
-anim_png nm = do
-   n <- getPOSIXTime                
-   return $ "tmp/" ++ nm ++ printf "_%013d" (floor (fromRational (toRational n) * 1000 :: Double) :: Integer) ++ ".png"
-
-build_anim :: String -> Int -> IO ()
-build_anim nm pz = do
-       callCommand $ "convert -delay " ++ show pz ++ " -loop 0 -dispose background blank-canvas.wiki/tmp/" ++ nm ++ "_*.png blank-canvas.wiki/images/" ++ nm ++ ".gif"
-       return ()
-
-
-{-# NOINLINE count #-}
-count :: TVar Int
-count = unsafePerformIO $ newTVarIO 1
-
-counter :: (Int -> Bool) -> (Int -> IO ()) -> IO ()
-counter p k = do
-    n <- atomically $ do
-           v <- readTVar count
-           writeTVar count $! v + 1
-           return v
-    if p n then k n else return ()
-
-
-ev :: DeviceContext -> Text -> Int -> IO ()
-ev context t c = send context $ trigger $ Event { eMetaKey = False, ePageXY = Nothing, eType = t, eWhich = Just c }
