docs: function(reloads) {
  				var tmbs = [],
  					reload = false;
  				
  				if (fm.oldAPI) {
  					fm.request({
  						data : {cmd : 'tmb', current : fm.cwd().hash},
  						preventFail : true
  					})
  					.done(function(data) {
  						if (data.images && Object.keys(data.images).length) {
  							attachThumbnails(data.images);
  						}
  						if (data.tmb) {
  							loadThumbnails();
  						}
  					});
  					return;
  				} 
  
  				if (reloads) {
  					reload = true;
  					tmbs = reloads.splice(0, tmbNum);
  				} else {
  					tmbs = bufferExt.getTmbs.splice(0, tmbNum);
  				}
  				if (tmbs.length) {
  					if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) {
  						$.each(tmbs, function(i, h) {
  							bufferExt.tmbLoading[h] = true;
  						});
  						fm.request({
  							data : {cmd : 'tmb', targets : tmbs},
  							preventFail : true
  						})
  						.done(function(data) {
  							var errs = [],
  								resLen;
  							if (data.images) {
  								if (resLen = Object.keys(data.images).length) {
  									if (resLen < tmbs.length) {
  										$.each(tmbs, function(i, h) {
  											if (! data.images[h]) {
  												errs.push(h);
  											}
  										});
  									}
  									attachThumbnails(data.images, reload);
  								} else {
  									errs = tmbs;
  								}
  								// unset error items from bufferExt.attachTmbs
  								if (errs.length) {
  									$.each(errs, function(i, h) {
  										delete bufferExt.attachTmbs[h];
  									});
  								}
  							}
  							if (reload) {
  								if (reloads.length) {
  									loadThumbnails(reloads);
  								}
  							}
  						})
  						.always(function() {
  							bufferExt.tmbLoading = {};
  							if (! reload && bufferExt.getTmbs.length) {
  								loadThumbnails();
  							}
  						});
  					}
  				}
  			}