     for fld in fields
       @listenTo(object, "change:" + fld, prop_spec['callbacks']['changedep'])
 
-  # ### method: HasProps::register_property
   register_property:  (prop_name, getter, use_cache) ->
-    # register a computed property. Setters, and dependencies
-    # can be added with `@add_dependencies` and `@register_setter`
     # #### Parameters
     # * prop_name: name of property
     # * getter: function, calculates computed value, takes no arguments
     # * use_cache: whether to cache or not
     # #### Returns
     # * prop_spec: specification of the property, with the getter,
-    # setter, dependenices, and callbacks associated with the prop
     if _.isUndefined(use_cache)
       use_cache = true
     if _.has(@_computed, prop_name)
       @remove_property(prop_name)
-    # we store a prop_spec, which has the getter, setter, dependencies
-    # we also store the callbacks used to implement the computed property,
-    # we do this so we can remove them later if the property is removed
+
     changedep = () =>
       @trigger('changedep:' + prop_name)
+
     propchange = () =>
       firechange = true
       if prop_spec['use_cache']

    delete @_computed[prop_name]

  get: (prop_name, resolve_refs=true) ->
    # ### method: HasProps::get
    # overrides backbone get.  checks properties,
    # calls getter, or goes to cache
    # if necessary.  If it's not a property, then just call super
    if _.has(@_computed, prop_name)
      return @_get_prop(prop_name)
    else

      'callbacks':
        changedep: changedep
        propchange: propchange

    @_computed[prop_name] = prop_spec

    # bind propchange callback to change dep event
    @listenTo(this, "changedep:#{prop_name}", prop_spec['callbacks']['propchange'])

    return prop_spec

  remove_property: (prop_name) ->
    # removes the property, unbinding all callbacks that implemented it
    prop_spec = @_computed[prop_name]
    dependencies = prop_spec.dependencies
    for dep in dependencies
