docs: function(loadeds, entry) {
  			// console.log("developStack : ", loadeds, entry.path, entry.value);
  			var stack = [];
  			var needLoad = false,
  				len = loadeds.length;
  			for (var i = 0; i < len; ++i) {
  				var s = loadeds[i],
  					r;
  				if (!s)
  					continue;
  				if (typeof s === 'string') {
  					// console.log("develop stack try to get : ", s, " from : ", entry.path, entry.value, entry.ancestor)
  					r = proto.get(s, {
  						entry: entry
  					});
  					stack.push(r);
  					if (r && r.then)
  						needLoad = true;
  					continue;
  				}
  				if (s._backgrounds) {
  					r = recurse(s._backgrounds, entry);
  					stack.push(r);
  					if (r && r.then)
  						needLoad = true;
  				}
  				if (s._foregrounds) {
  					r = recurse(s._foregrounds, entry);
  					stack.push(r);
  					if (r && r.then)
  						needLoad = true;
  				}
  			}
  			if (!stack.length)
  				return loadeds;
  			var treatStack = function(stack) {
  				var finalStack = [];
  				for (var i = 0; i < len; ++i) {
  					var s = loadeds[i];
  					if (s && s._backgrounds) {
  						finalStack = finalStack.concat(stack.shift());
  						//delete s._backgrounds;
  					}
  					if (typeof s === 'string')
  						finalStack.push(stack.shift());
  					else
  						finalStack.push(s);
  					if (s && s._foregrounds) {
  						finalStack = finalStack.concat(stack.shift());
  						//delete s._foregrounds;
  					}
  				}
  				// console.log('final stack : ', finalStack);
  				return finalStack;
  			};
  			if (!needLoad)
  				return treatStack(stack);
  			return prom.all(stack)
  				.done(treatStack);
  		}