public function add_blade()
    {
        $blade = new Snap_Blade(
            Theme_Utils::get_active_theme_path(Config::get('theme.templates_directory')),
            Theme_Utils::get_active_theme_path(\trailingslashit(Config::get('theme.cache_directory')) . 'templates'),
            Config::get('blade.development_mode') ? BladeOne::MODE_SLOW : BladeOne::MODE_FAST
        );

        if (Config::get('blade.file_extension') !==  $blade->getFileExtension()) {
            $blade->setFileExtension(Config::get('blade.file_extension'));
        }

        // Set the @inject directive to resolve from the service container.
        $blade->setInjectResolver(
            function ($namespace) {
                return Container::get($namespace);
            }
        );

        $this->set_auth_callbacks($blade);

        $this->add_directives($blade);
        $this->add_wp_directives($blade);

        Container::add_instance($blade);

        Container::alias(Snap_Blade::class, 'blade');
    }