code: function(size, Model) {
  	var that = {_pool: []};
  
  	that.get = function(index) {
  		var offset = _.reduce(this._pool, function(offset, entry, i) {
  
  			// return last index of null;
  			if (index && entry === null) {
  				return i;
  			}
  
  			// return first index of not null;
  			if (entry != null && offset === -1) {
  				return i;
  			}
  			return offset;
  		}, -1)
  		, item;
  
  		if (index) {
  			return offset;
  		}
  		if (offset >= 0 && offset <= size) {
  			item = this._pool[offset];
  			this._pool[offset] = null;
  		}
  		
  		if (item instanceof Backbone.Collection) {
  			item.reset && item.reset([]);
  		}
  		return item;
  	};
  
  	that.put = function(model) {
  		if (this.get(true) !== -1) {
  			this._pool[this.get(true)] = model;
  		}
  	};
  
  	_.each(_.range(0, size), function(index) {
  		this._pool[index] = new Model( this );
  	}, that);
  	return that;
  }
docs: TBD