   ONE  = seq [1]
   TWO  = seq [2]
 
+  cleanup = (s) -> s?.reverse()?.dropWhile((x) -> x == 0)?.reverse() or null
+
   add = (r, s, c = 0) ->
     if c or (r and s)
       [r_, s_] = [r or ZERO, s or ZERO]

    step null, a, b

  times__: (x) -> new LongInt @sign * x.sign, mul @digits, x.digits

  zeroes = BASE.toString()[1..]


        seq.conj(digit, -> step(r_.rest(), s_.rest(), borrow))
      else
        s or r
    cleanup step r, s

  minus__: (x) ->
    if @sign != x.sign
