docs: function open(selector) {
              if (p["--debug"] && host.runtime == host.RUNTIME_NODEJS) {
                  return debug(p);
              }
              if (p["--ui"] && !ui) {
                  if (!nw) {
                      allume.update(allume.STATUS_ERROR, MSG_UI_UNAVAILABLE);
                      return;
                  }
  
                  // spawn nw.js process for allume with parameters
                  var findpath = nw.findpath;
                  childProcess = childProcess || require("child_process");
                  path = path || require("path");
  
                  var PATH_NW = findpath();
                  var PATH_APP = path.join(__dirname, "..");
                  var PATH_CWD = process.cwd();
                  var env = Object.create(process.env);
                  env.PWD = process.cwd();
  
                  process.argv.splice(1, 1);
                  process.argv[0] = PATH_APP;
                  for (var a in process.argv) {
                      process.argv[a] = process.argv[a].replace(/"/g, "\"");
                  }
  
                  var ls = childProcess.spawn(PATH_NW, process.argv, {"cwd": PATH_CWD, "env" : env});
  
                  ls.stdout.on("data", function(data) {
                      console.log(data.toString().trim());
                  });
  
                  ls.stderr.on("data", function(data) {
                      console.error(data.toString().trim());
                  });
  
                  return;
              }
  
              var requests = [];
              var request = selector;
              if (p["--config"]) {
                  var json;
                  try {
                      json = JSON.parse(p["--config"].json);
                  }
                  catch(e) {
                      var e = new Error("Make sure the data you pass to the --config switch is valid JSON data.");
                      e.name = "error-invalid-configuration";
                      if (typeof document !== "undefined" && firstOpen) {
                          allume.update(e);
                      }
                      else {
                          console.error(e);
                      }
                      firstOpen = false;
                      return;
                  }
                  request = { "package" : selector, "configuration" : json };
              }
              requests.push(request);
  
              if (requests) {
                  using.apply(using, requests).then(function () {
                      if (firstOpen) {
                          allume.hide();
                          firstOpen = false;
                      }
                  }, function (loader) {
                      usingFailed(loader);
                      var e = new Error(err);
                      e.name = errName;
                      if (typeof document !== "undefined" && firstOpen) {
                          allume.update(e);
                          firstOpen = false;
                      }
                      else {
                          console.error(e);
                      }
                  });
              }
          }