public function compile()
    {
        $loader = $this->loaderFactory->newInstance();        
        $cache = $this->cacheFactory->produce();
        
        if(true === $cache->expired()) {
            $config = $this->loadConfig($loader);
            $cache->write($config);
        } else {
            $config = $cache->get();
        }
        
        return $config;
    }