     paramName: "rickshaw"
     url: "/rickshaws"
     
-    create: (model, callback, fail_callback) ->
+    create: (model, callback, failure_callback) ->
       (new Request.JSON({
         url: this._buildUrl( "create", model )
         data: this._createData( model )
-        onSuccess: this._successCallbackWrapper( callback )
-        onFailure: this._failCallbackWrapper( model, fail_callback )
+        onSuccess: callback
+        onFailure: failure_callback
       })).post()
     
-    read: (model, callback, fail_callback) ->
+    read: (model, callback, failure_callback) ->
       (new Request.JSON({
         url: this._buildUrl( "read", model )
-        onSuccess: this._successCallbackWrapper( callback )
-        onFailure: -> this._failCallbackWrapper( model, fail_callback )
+        onSuccess: callback
+        onFailure: failure_callback
       })).get()
     
-    update: (model, callback, fail_callback) ->
+    update: (model, callback, failure_callback) ->
       (new Request.JSON({
         url: this._buildUrl( "update", model )
         data: this._updateData( model )
-        onSuccess: this._successCallbackWrapper( callback )
-        onFailure: -> this._failCallbackWrapper( model, fail_callback )
+        onSuccess: callback
+        onFailure: failure_callback
       })).put()
     
-    delete: (model, callback, fail_callback) ->
+    delete: (model, callback, failure_callback) ->
       (new Request.JSON({
         url: this._buildUrl( "delete", model )
-        onSuccess: this._successCallbackWrapper( callback )
-        onFailure: -> this._failCallbackWrapper( model, fail_callback )
+        onSuccess: callback
+        onFailure: failure_callback
       })).delete()
     
     _buildUrl: (method, model) ->

#
#   * reload( callback )
#   * save( callback ) - Convenience method: calls create() or update() as needed.
#   * create( callback )
#   * update( callback )
#   * delete( callback )
window.Rickshaw.Persistence._Base = new Class({
  
  reload: (callback) ->
    this.fireEvent( "beforeFetch", this )
    @store.read( this, (data) =>
      this._reloaded( data, callback )
    )

    changed = !Object._equal( data, @_previousData )
    this._setNewData( data )
    this.fireEvent( "dataChange", this ) if changed
    callback( this ) if callback
  
  # Delete
  
  delete: (callback, failure_callback) ->
    @store.delete( this, this._deleted.bind(this, [callback] ), failure_callback )
  
  _deleted: (callback) ->
    this._setNewData( {} )
    this.fireEvent( "afterDelete", this )
    callback( this ) if callback
  
  # Misc.
  
  _setNewData: (data) ->
    @data = data
    @_changedData = {}
    @_previousData = Object.clone( @data )
})

# REST-ful JSON persistence.
