public static function execute($action, $method, $vars, $context)
    {
        $className = str_replace(' ', self::$config['namespace_separator'], ucwords(str_replace('/', ' ', trim($action))));
        $filename = str_replace(self::$config['namespace_separator'], DIRECTORY_SEPARATOR, $className) . '.php';
        $className .= 'Action';
        
        Atomik::fireEvent('RestExecutor::Execute', array(&$className, &$filename, &$context));

        if (!($include = Atomik::actionFilename($filename, null, true))) {
            return false;
        }

        list($filename, $ns) = $include;
        $className = trim("$ns\\$className", '\\');
        include $filename;
        
        if (!class_exists($className)) {
            throw new AtomikException("Class '$className' not found in '$filename'");
        }
        
        $instance = new $className($vars);
        $vars = array();
        
        if (method_exists($instance, 'execute')) {
            if (!is_array($vars = $instance->execute(Atomik::get('request')))) {
                $vars = array();
            }
        }
        
        if (method_exists($instance, $method)) {
            if (is_array($return = call_user_func(array($instance, $method), Atomik::get('request')))) {
                $vars = array_merge($vars, $return);
            }
        }
        
        $vars = array_merge(get_object_vars($instance), $vars);
        return $vars;
    }