public static function remove($pKey)
    {
        if (! array_key_exists($pKey, self::$_registry)) {
            throw new Exception("The registry key '$pKey' doesn't exist");
        }

        if (is_object(self::$_registry[$pKey]) and method_exists(self::$_registry[$pKey], '__destruct')) {
            self::$_registry[$pKey]->__destruct();
        }

        unset(self::$_registry[$pKey]);

        return true;
    }