         options = _.clone(options)
         handlers = Lanes.Models.Sync.wrapRequest(this,options)
         _.extend(options,{limit:1,ignoreUnsaved:true})
-
         this.sync('read', this, options)
         handlers.promise
+
+    @fetch: (options={})->
+        record = new this()
+        record.fetch(options)
 
     # Removes the model's record from the server (if it is persistent)
     # and then fires the "destroy" event

            "Cannot be empty"
        else
            ''
    # Use Sync directly
    sync: Lanes.Models.Sync.perform

    # When the model is extended it auto-creates the created_at and updated_at
    # and sets up the AssociationMap
    @extended: (klass)->
        return if klass::abstractClass
        klass::props   ||= {}
        klass::session ||= {}

        klass::session['created_at'] ||= 'date'
        klass::session['updated_at'] ||= 'date'

        if klass::associations
            klass::associations = new Lanes.Models.AssocationMap(klass)

    @afterExtended: (klass)->
        if !klass::abstractClass && !klass.Collection
            class DefaultCollection
                constructor: -> super
                model: klass
            klass.Collection = Lanes.Models.Collection.extend(DefaultCollection)


Lanes.Models.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, BaseModel )



# ------------------------------------------------------------------ #
# The BasicModel is just a very thin layer over State                #
# ------------------------------------------------------------------ #
class BasicModel
    constructor: -> super
    isPersistent: -> false
    isModel: true

Lanes.Models.BasicModel = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, BasicModel )


class State
    constructor: -> super

Lanes.Models.State = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, State )

            data = this.getAttributes(props:true, true)
        else
            data = this.unsavedAttributes()
        if this.associations && (!_.isEmpty(data) || !this.isNew())
            _.extend(data, this.associations.dataForSave(this, options))
        data


