code: function _AddInstance (f, p, args) {
    log.info(`Creating entity "${p}" with args ${args}...`)
    let o = f.instanciate(p, args)
    // The way this is written, forces the environment to be created first
    if (!_InternalAddEnvironment(o)) {
      log.debug('Object is not of Environment type... checking if is a Notifier')
      if (!AddNotifier(o)) {
        log.debug('Object is not of Notifier type... checking if is a Detector')
        if (!AddDetector(o, config ? config.forceAdds : _globalForceAdds)) {
          log.debug('Object is not of Detector type... checking if is a Filter')
          if (!_InternalAddFilter(o)) {
            log.warn(chalk.yellow(`Object/class '${p}' is not of any type, could not be added. Proceeding.`))
          }
        }
      }
    }
  }
docs: Internal function, given a factory, class name and arguments, instanciates it 
  Internal function. Given a factory and an entity name (One of {Environment},
  {MotionDetector}, {Notifier}, or {Filter}) and arguments adds this instance
  to the current context
  @param {object} f is the factory instance.
  @param {object} p is an object name to instanciate.
  @param {Array} args is an array of arguments for the constructor invoke..
  @internal