docs: function merge( to ){
  	var from,
  		i, c,
  		m = function( val, key ){
  			to[ key ] = merge( to[key], val );
  		};
  
  	for( i = 1, c = arguments.length; i < c; i++ ){
  		from = arguments[i];
  
  		if ( to === from ){
  			continue;
  		}else if ( to && to.merge ){
  			to.merge( from );
  		}else if ( !bmoor.isObject(from) ){
  			to = from;
  		}else if ( !bmoor.isObject(to) ){
  			to = merge( {}, from );
  		}else{
  			bmoor.safe( from, m );
  		}
  	}
  	
  	return to;
  }