protected static function invoke($action, $resourceName, array $params = array())
 {
     if (!in_array($action, self::$actions)) {
         throw new Exception\InvalidArgumentException(sprintf("Action %s is not exists", $action));
     }
     if (!in_array($resourceName, self::$resources)) {
         throw new Exception\InvalidArgumentException(sprintf("Resource %s is not exists", $resourceName));
     }
     $options = array('resource' => $resourceName, 'api_key' => Everypay::getApiKey(), 'api_uri' => Everypay::getApiUrl());
     $options = array_merge($params, $options);
     $actionClass = 'Everypay\\Action\\' . ucwords($action);
     $actionInstance = new $actionClass($options);
     $request = $actionInstance->__invoke();
     return self::handleResponse(self::createClient()->send($request));
 }