 
 
     # A deep finger tree.
-    @Deep = class
+    class Deep
       reduceLeft  = (op) -> (z, x) -> x.reduceLeft(z, op)
       reduceRight = (op) -> (x, z) -> x.reduceRight(op, z)
 
-      asTree = (s) -> s.reduceLeft T.Empty, (a, b) -> a.before b
+      asTree = (s) -> s.reduceLeft Empty, (a, b) -> a.before b
       asSeq  = (s) -> s.reduceRight ((a, b) -> Sequence.conj a, -> b), null
 
       constructor: (left, mid, right) ->



    # A finger tree with a single element.
    @Single = class
      constructor: (a) -> @a = a

      isEmpty: -> false

      reduceLeft:  (z, op) -> op z, @a
      reduceRight: (op, z) -> op @a, z

      after:  (x) -> new Deep new Digit1(x), (-> Empty), new Digit1(@a)
      before: (x) -> new Deep new Digit1(@a), (-> Empty), new Digit1(x)

      first: -> @a
      last:  -> @a

      rest: -> Empty
      init: -> Empty

      concat: (t) -> t.after @a

