docs: function config (args) {
      // iterate over args merging configuration to either the module or the
      // global configuration
      _.each(args, (val, key) => {
          // configuration to modify
          var config
          // create new object to merge into config
          var merge = {}
          // set key and value to merge
          merge[key] = val
          // if this is a global config option then modify global config
          if (key in defaultGlobalConfig) {
              // merge args over config with custom handler to merge arrays
              _.mergeWith(immutableApp, merge, mergeArrays)
          }
          // if this is module config then set config on module instance
          else if (key in defaultModuleConfig) {
              // merge args over config with custom handler to merge arrays
              _.mergeWith(this, merge, mergeArrays)
          }
          // throw error on invalid configuration option
          else {
              throw new Error('invalid config option '+key)
          }
      })
      // return module
      return this
  }