docs: function(ob,jsonDoc,cloneFunc) {
  	var k = '',
  		r = null,
  		_cloneFunc = function(ob) { return JSON.parse(JSON.stringify(ob)); };
  	
  	if (cloneFunc === undefined) {
  		r = _cloneFunc(ob);
  	} else {
  		r = cloneFunc(ob);
  	}
  
  	for (k in jsonDoc) { if (jsonDoc.hasOwnProperty(k)) {
  		if (k.substring(0,1) == '$') {
  			if (!manip.fn.hasOwnProperty(k.substring(1))) {
  				throw new Error('manip: Does not have manipulation function '+k.substring(1));
  			}
  			r = manip.fn[k.substring(1)].call(manip,r,jsonDoc[k]);
  		}
  	} }
  	return r;
  }