anchor.diff:          // draw exterior walls
           g.lineStyle(wallWidth,wallColor).moveTo(0.,halfWall).lineTo(w,halfWall).moveTo(halfWall,0.).lineTo(halfWall,h)
             .moveTo(0.,h-halfWall).lineTo(w,h-halfWall).moveTo(w-halfWall,0.).lineTo(w-halfWall,h).finish
  +        // draw goal as blue X
  +        let left, top =
  +          match model.goal with
  +          | (x,y) -> toX x, toY y
  +        g.lineStyle(5., float 0x0011FF)
  +          .moveTo(left, top)
  +          .lineTo(left + cellWidth, top + cellHeight)
  +          .moveTo(left + cellWidth, top)
  +          .lineTo(left, top + cellHeight)
  +          .finish
  +
           // Also, draw the current position in red
           let left, top =
             match model.currentPosition with
  
positive.code:             | Binary -> binaryMaze
              | HunterKiller -> huntKill
              | ABW -> aldousBroderWilsons
              | RecursiveBacktracker -> recursiveBacktracker
            ) 22 10
          algorithm = alg
        },
  
negative.code:     revealed: (int * int) Set
      eventGen: (int * int) -> string option
      messages: (int*int*string) list
      goal: int * int
      points: int
      steps: int
    }
  
  let rec newReveals maze direction position =
  