public function get($parameter)
    {
        switch ($parameter)
        {
            // Essential components are instantiated during application set up
            case "dev":
                return $this->dev ?? true;
            case "config":
                return $this->config;
            case "injector":
                return $this->injector;
            case "pathConfig":
                return $this->path_config;
            case "request":
                return $this->request;
            case "resolver":
                return $this->resolver;
            case "moduleManager":
                return $this->module_manager;

            // Non-essential components are created on-the-fly
            case "auth":
                return $this->injector->getInstance(Authentication::class);
            case "db":
                return $this->injector->getInstance(DB::class);
            case "dispatcher":
                return $this->injector->getInstance(Dispatcher::class);
            case "template":
                return $this->injector->getInstance(Template::class);
            case "mailer":
                return $this->injector->getInstance(SMTPSender::class);
            case "i18n":
                return $this->injector->getInstance(I18n::class);
            case "processChain":
                return $this->injector->getInstance(ProcessChain::class);
        }
        throw new InvalidArgumentException("No such object: $parameter");
    }