anchor.diff:          |>! addToClassList
   
       let Projection =
  -        ChainedClassNew "Projection" <| fun chained ->
  -        [
  -            "apply"      => Float2T?location ^-> Float2T |> WithInline "$this($location)"
  -            "invert"     => Float2T?location ^-> Float2T
  -            "rotate"     => getSetVal chained Float3T
  -            "center"     => getSetVal chained Float2T
  -            "translate"  => getSetVal chained Float2T
  -            "scale"      => getSetVal chained Float
  -            "clipAngle"  => getSetVal chained Float
  -            "clipExtent" => getSetVal chained Float2x2T
  -            "precision"  => getSetVal chained Int
  -            "stream"     => Listener?listener ^-> Listener
  -        ]
  +        let self = Type.New()
  +        ChainedClass "Projection" self <| fun chained ->
  +            [
  +                "apply"      => Float2T?location ^-> Float2T |> WithInline "$this($location)"
  +                "invert"     => Float2T?location ^-> Float2T
  +                "scale"      => getSetVal chained Float
  +                "clipAngle"  => getSetVal chained Float
  +                "clipExtent" => getSetVal chained Float2x2T
  +                "precision"  => getSetVal chained Int
  +                "stream"     => Listener?listener ^-> Listener
  +            ]
  +            @ propF2 self "center"
  +            @ propF2 self "translate"
  +            @ propF3 self "rotate"
   
       let AlbersProjection =
  -        ChainedClassNewInherits "AlbersProjection" Projection <| fun chained ->
  -        [
  -            "parallels" => getVal Float2T + chained Float2T
  -        ]
  +        let self = Type.New()
  +        Class "AlbersProjection"
  +        |=> Projection
  +        |=> self
  +        |+> Protocol [ yield! propF2 self "parallels" ]
   
       let StreamTransform =
           ChainedClassNew "StreamTransform" <| fun chained ->
  
positive.code:     let Polygon = Type.New()
  
      let Graticule =
          ChainedClassNew "Graticule" <| fun chained ->
          [
              "lines" => O ^-> !|LineString
              "outline" => O ^-> Polygon
              "extent" => getSetVal chained Float2x2T
              "majorExtent" => getSetVal chained Float2x2T
              "minorExtent" => getSetVal chained Float2x2T
              "step" => getSetVal chained Float2T
              "majorStep" => getSetVal chained Float2T
              "minorStep" => getSetVal chained Float2T
              "precision" => getSetVal chained Float
          ]
  
      let Circle =
          ChainedClassNew "Circle" <| fun chained ->
          [
              "origin"    => getVal Float2T + chained (Float2T + Obj ^-> Float2T)
              "angle"     => getSetVal chained Float
              "precision" => getSetVal chained Float
          ]
  
      let Rotation =
          ChainedClassNew "Rotation" <| fun chained ->
  
negative.code:     let ClipTransform =
          ChainedClassNewInherits "ClipTransform" StreamTransform <| fun chained ->
          [
              "extent" => getSetVal chained Float2x2T // TODO: check
          ]
  
      let Voronoi =
  