       return best_scale.get_ticks(data_low, data_high)
 
   class AdaptiveScale extends AbstractScale
-    constructor: (mantissas, @base=10.0, @min_magnitude=0.0,
+    constructor: (@mantissas, @base=10.0, @min_magnitude=0.0,
                   @max_magnitude=Infinity)->
+      super(['mantissas', 'base', 'min_magnitude', 'max_magnitude'])
+
       @min_interval = _.first(mantissas) * @min_magnitude
       @max_interval =  _.last(mantissas) * @max_magnitude
 


  # FIXME It's not clear this should be a class.
  class AbstractScale
    get_ideal_interval: (data_low, data_high) ->
      data_range = float(data_high) - float(data_low)
      return data_range / DESIRED_N_TICKS

    get_best_scale: (data_low, data_high) ->
      data_range = float(data_high) - float(data_low)
      ideal_interval = @get_ideal_interval(data_low, data_high)
      # FIXME Other parts of this file use _ndx instead of _ix; I guess we
      # should switch.
      scale_ixs = [
        bisect_right(@min_intervals, ideal_interval) - 1,
        bisect_right(@max_intervals, ideal_interval)
