docs: function Allume(parameters) {
          var self = this;
  
          //
          // CONSTANTS
          //
          this.STATUS_DONE = "";
          this.STATUS_ERROR = "allume-error";
          this.STATUS_BOOTING = "allume-booting";
          this.ERROR_UNKNOWN = "error-unknown";
          var ATTR_BOOT_STATUS = "data-allume-boot-status";
          var ATTR_BOOT_TIME = "data-allume-boot-time";
          var ATTR_BOOT_MESSAGE = "data-allume-boot-message";
          var ATTR_BOOT_ERROR_MESSAGE = "data-allume-boot-error-message";
          var ATTR_BOOT_ERROR_NAME = "data-allume-boot-error-name";
  
          // overwrite for runtimes that have both node and chromium (nw.js)
          var originalRequire;
          if (typeof document !== "undefined" && !allume.inject) {
              originalRequire = require;
              require = allume.loadScript;
          }
  
          //
          // PUBLIC PROPERTIES
          //
          this.parameters = parameters;
          this.require = originalRequire;
  
          // register global
          allume = self;
          if (typeof global !== "undefined") {
              global.allume = allume;
          }
  
          // set boot time attribute on first load
          if (typeof document !== "undefined" && document.documentElement.attributes[ATTR_BOOT_TIME] && document.documentElement.attributes[ATTR_BOOT_TIME].value == "") {
              document.documentElement.attributes[ATTR_BOOT_TIME].value = new Date().toString();
          }
  
          //
          // PUBLIC FUNCTIONS
          //
          this.hide = function() {
              document.documentElement.attributes[ATTR_BOOT_STATUS].value = self.STATUS_DONE;
          }
          this.show = function() {
              document.documentElement.attributes[ATTR_BOOT_STATUS].value = self.STATUS_BOOTING;
          }
          this.update = function(status, msg) {
              // if only one argument, then is booting message
              if (arguments.length == 1) {
                  msg = status;
                  if (msg instanceof Error) {
                      status = self.STATUS_ERROR;
                  }
                  else {
                      status = self.STATUS_BOOTING;
                  }
              }
  
              // conform error printing
              if ((!msg || typeof msg === "string") && status == self.STATUS_ERROR) {
                  e = new Error(e);
                  e.name = self.ERROR_UNKNOWN;
              }
  
              // update the document attributes
              if (typeof document !== "undefined" && document.documentElement.attributes[ATTR_BOOT_STATUS]) {
                  switch(status) {
                      case self.STATUS_BOOTING:
                          document.documentElement.attributes[ATTR_BOOT_STATUS].value = status;
                          break;
                      case self.STATUS_ERROR:
                          document.documentElement.attributes[ATTR_BOOT_STATUS].value = status;
                          document.body.attributes[ATTR_BOOT_ERROR_NAME].value = msg.name;
                          document.body.attributes[ATTR_BOOT_ERROR_MESSAGE].value = msg.message;
  
                          // show window if nw.js
                          try {
                              var nw = require("nw.gui");
                              var win = nw.Window.get();
                              var ignoreClose;
                              nw.Window.open("error.html", { "resizable" : false, "show" : false, "width" : 440, "height" : 160 }, function(err) {
                                  err.on("loaded", function() {
                                      err.window.setMain({ 
                                          "message" : "The package could not be loaded. For more information click on the 'Show console' below.",
                                          "close" : function() {
                                              if (ignoreClose) {
                                                  return;
                                              }
                                              win.close();
                                          }, 
                                          "show" : function() {
                                              ignoreClose = true;
                                              err.close();
                                              win.show();
                                          }});
                                      err.show();
                                      err.setShowInTaskbar(true);
                                  });
                              });
                          }
                          catch(e) {
                              // ignore
                          }
                          break;
                      default:
                          document.documentElement.attributes[ATTR_BOOT_STATUS].value = status;
                          document.body.attributes[ATTR_BOOT_MESSAGE].value = msg || "";
                          break;
                  }
              }
          }
  
          // load dependencies
          require("./using.js/using.js");
          require("./include.js");
  
          // start boot sequence
          require("./boot.js");
      }