     # make this a no-op, we sync the whole document never individual models
     return options.success(model.attributes, null, {})
 
-  defaults: -> { }
+  defaults: -> throw new Error("don't use HasProps.defaults anymore")
 
   # TODO remove this, for now it's just to help find nonserializable_attribute_names we
   # need to add.

      do (name, default_value) =>
        value = this.prototype.props[name]
        if not value?
          throw new Error("attempted to override property '#{this.name}.#{name}' (which wasn't defined)")
        props = _.clone(this.prototype.props)
        props[name] = _.extend({}, value, { default_value: default_value })
        this.prototype.props = props


    if options.parse
      attrs = this.parse(attrs, options) || {}

    # Bokeh specific
    this._set_after_defaults = {}
