code: function(){
  	var clauses = this.clauses = {
  		where: {},
  		order: {},
  		paginate: {},
  		id: {}
  	};
  	this.translators = {
  		where: new Translate("where", {
  			fromSet: function(set, setRemainder){
  				return setRemainder;
  			},
  			toSet: function(set, wheres){
  				return assign(set, wheres);
  			}
  		})
  	};
  	var self = this;
  	each(arguments, function(arg) {
  
  		if(arg) {
  			if(arg instanceof Translate) {
  				self.translators[arg.clause] = arg;
  			} else {
  				assign(clauses[arg.constructor.type || 'where'], arg);
  			}
  		}
  	});
  }
docs: An `Algebra` internally keeps different properties organized by clause type.
  If an object comes in that isn't a clause type, it's assuemd to be a where.
  
  new set.Algebra(Where(),Paginate(),Sort())
  
  @hide