Loading embedded records

The latest build of Ember.

HTML

<script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script>
<script src="http://builds.emberjs.com/ember-latest.js"></script>
<script src="http://builds.emberjs.com/tags/v1.0.0-beta.4/ember-data.prod.js"></script>
<script type="text/x-handlebars" data-template-name="index">
    <button {{action "load"}}>Load</button>
</script>

JavaScript

App = Ember.Application.create({});

// 
// Define models
//
App.Child = DS.Model.extend({
    name: DS.attr('string'),
    toys: DS.hasMany('toy', {embedded: 'always'}),
});
Ember.Inflector.inflector.irregular("child", "children");
App.Toy = DS.Model.extend({
    kind: DS.attr('string'),
    size: DS.belongsTo('size', {embedded: 'always'}),
    features: DS.hasMany('feature', {embedded: 'always'})
});
App.Size = DS.Model.extend({
    height: DS.attr('number'),
    width: DS.attr('number'),
    depth: DS.attr('number')
});
App.Feature = DS.Model.extend({
    name: DS.attr('string')
});

// 
// Handle deserializing data
//
App.ApplicationSerializer = DS.RESTSerializer.extend({
    /**
     The current ID index of generated IDs
     @property
     @private
    */
    _generatedIds: 0,
    
    /**
     Sideload a JSON object to the payload
     
     @method sideloadItem
     @param {Object} payload JSON object representing the payload
     @param {subclass of DS.Model} type The DS.Model class of the item to be sideloaded
     @paraam {Object} item JSON object representing the record to sideload to the payload
    */
    sideloadItem: function(payload, type, item){
        var sideloadKey = type.typeKey.pluralize(),     // The key for the sideload array 
            sideloadArr = payload[sideloadKey] || [],   // The sideload array for this item
            primaryKey = Ember.get(this, 'primaryKey'), // the ID property key
            id = item[primaryKey];
                    
        // Missing an ID, give it one 
        if (typeof id == 'undefined') {
            id = 'generated-'+ (++this._generatedIds);
            item[primaryKey] = id;
        }
        
        // Don't add if already side loaded
        if (sideloadArr.findBy('id', id) != undefined){
            return payload;
        }
        
        // Add to sideloaded array
        sideloadArr.push(item);
        payload[sideloadKey] = sideloadArr;  
        return payload;
    },
    
    /**
    ...