docs: function (mainClass, target, parameter, config, callback) {
  
              parameter = parameter || {};
  
              if (typeof window !== 'undefined' && window.location && !parameter.initialHash) {
                  var param = window.location.search.replace(/^\?/, '').split('&');
                  for (var i = 0; i < param.length; i++) {
                      var result = /^([^=]+)=(.*)$/.exec(param[i]);
                      if (result && result[1] === 'fragment') {
  
                          var redirectUrl = location.protocol + '//' + location.host + location.pathname;
                          param.splice(i, 1);
  
                          if (param.length) {
                              redirectUrl += '?' + param.join('&');
                          }
  
                          redirectUrl += '#' + result[2];
                          window.location = redirectUrl;
  
                          return;
                      }
                  }
              }
  
              if (!target && document && document.body) {
                  // render default into document.body
                  target = document.body;
              }
  
              config = config || "config.json";
  
              callback = callback || function (err) {
                  if (err && typeof console !== "undefined") {
                      console.error(err.stack || err);
                  }
              };
  
              if (!document) {
                  callback("Document missing");
                  return;
              }
  
              if (!target) {
                  callback("Target missing");
                  return;
              }
  
              // flow.js is not available here, so do it in a dirty way
              rAppid.createApplicationContext(mainClass, config, function (err, applicationContext) {
                  if (err) {
                      callback(err);
                  } else {
                      applicationContext.createApplicationInstance(window, function (err, stage, application) {
                          if (err) {
                              callback(err);
                          } else {
  
                              application.start(parameter, function (err) {
                                  if (err) {
                                      callback(err);
                                  } else {
                                      // render stage to target
                                      stage.render(target);
                                      callback(null, stage, application);
                                  }
                              });
  
                          }
                      }, parameter);
                  }
              });
  
          }