public function delete($configurationIdentifier)
    {
        /**
         * Checks if the value is defined in the configuration elements.
         */
        if (!array_key_exists($configurationIdentifier, $this->configurationElements)) {
            throw new ConfigurationParameterNotFoundException();
        }

        /**
         * Checks if the configuration element is read-only.
         */
        if (
            is_array($this->configurationElements[$configurationIdentifier]) &&
            $this->configurationElements[$configurationIdentifier]['read_only'] === true
        ) {
            throw new ConfigurationNotEditableException();
        }

        $valueIsCached = $this
            ->cache
            ->contains($configurationIdentifier);

        /**
         * The value is cached, so first we have to remove it.
         */
        if (false !== $valueIsCached) {
            $this
                ->cache
                ->delete($configurationIdentifier);
        }
        list($configurationNamespace, $configurationKey) = $this->splitConfigurationKey($configurationIdentifier);

        $configurationLoaded = $this->loadConfiguration(
            $configurationNamespace,
            $configurationKey
        );

        if ($configurationLoaded instanceof ConfigurationInterface) {
            /*
             * Configuration is found, delete it
             */
            $this->deleteConfiguration($configurationLoaded);

            return true;
        }

        /*
         * Configuration instance was not found
         */

        return false;
    }