     ]
     return [ranges[i], ranges[j]]
 
-   _bounds: () ->
-    [range, cross_range] = @get('ranges')
+   computed_bounds: () ->
+    [range, cross_range] = @ranges()
 
     user_bounds = @get('bounds')
     range_bounds = [range.get('min'), range.get('max')]


    return [start, end]

  _grid_coords: () ->
    return @_grid_coords_helper('major')

  _minor_grid_coords: () ->
    return @_grid_coords_helper('minor')

  _grid_coords_helper: (location) ->
    i = @get('dimension')
    j = (i + 1) % 2
    [range, cross_range] = @get('ranges')

    [start, end] = @get('computed_bounds')

    tmp = Math.min(start, end)
    end = Math.max(start, end)


    coords = [[], []]
    for ii in [0...ticks.length]
      if (ticks[ii] == min or ticks[ii] == max) and exclude_ends
        continue
      dim_i = []
      dim_j = []
