       change: target - @[property]
       duration: duration
       easingFunc: Easie[easing]
+      callback: callback
 
 module.exports = Shape

    return false if @ == other
    Math.abs(@position.x - other.position.x) < @size.width / 2 + other.size.width / 2 && Math.abs(@position.y - other.position.y) < @size.height / 2 + other.size.height / 2

  tween: (property, target, duration = 500, easing = 'linearNone') ->
    # TODO: How to handle compound properties, such as @position?
    # context = @
    # if property.indexOf('.') != -1


    # Default graphical options; changing these requires using setters/getters,
    # since the cache would need to be redrawn
    @_color = '#fff';
    @_border = { width: 0, color: '#fff' }
    @_shadow = { x: 0, y: 0, blur: 0, color: '#fff' }
    @_vertices = 4
    @_size = { width: 10, height: 10 }
    @speed = 1
