'Add a callback on this object to trigger when ``attr`` changes.
Args:
attr (str) : an attribute name on this object
callback (callable) : a callback function to register
Returns:
None'

def on_change(self, attr, *callbacks):

    if (attr not in self.properties()):
        raise ValueError(('attempted    to    add    a    callback    on    nonexistent    %s.%s    property' % (self.__class__.__name__, attr)))
    super(Model, self).on_change(attr, *callbacks)
