diff --git a/VKHS.cabal b/VKHS.cabal
--- a/VKHS.cabal
+++ b/VKHS.cabal
@@ -1,6 +1,6 @@
 
 name:                VKHS
-version:             0.5.0
+version:             0.5.1
 synopsis:            Provides access to Vkontakte social network via public API
 description:
     Provides access to Vkontakte API methods. Library requires no interaction
@@ -50,7 +50,7 @@
 
 
 library
-  --extra-libraries: curl
+  extra-libraries: curl
   build-tools:     hsc2hs
   ghc-options:     -Wall -fwarn-tabs
   hs-source-dirs:    src
@@ -86,6 +86,7 @@
   exposed-modules:   Web.VKHS
                      Web.VKHS.API
                      Web.VKHS.API.Aeson
+                     Web.VKHS.API.Base
                      Web.VKHS.API.Types
                      Web.VKHS.API.Monad
                      Web.VKHS.Curl
diff --git a/src/Web/VKHS/API/Base.hs b/src/Web/VKHS/API/Base.hs
new file mode 100644
--- /dev/null
+++ b/src/Web/VKHS/API/Base.hs
@@ -0,0 +1,45 @@
+module Web.VKHS.API.Base
+    ( api
+    , envcall
+    )  where
+
+import Control.Monad ()
+import Control.Monad.Error ()
+import Control.Monad.Writer
+import Control.Monad.Trans ()
+
+import Data.Label
+import qualified Data.ByteString.UTF8 as U
+import qualified Data.ByteString as BS
+
+import Network.Curlhs.Core
+
+import Network.Protocol.Http ()
+import Network.Protocol.Uri
+import Network.Protocol.Uri.Query ()
+
+import Text.Printf
+
+import Web.VKHS.Types
+import Web.VKHS.Curl
+
+envcall :: String -> Env CallEnv
+envcall at = mkEnv (CallEnv at)
+
+-- | Invoke the request. Return answer (normally, string representation of
+-- JSON data). See documentation:
+--
+-- <http://vk.com/developers.php?oid=-1&p=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2_API>
+api :: Env CallEnv
+    -- ^ the VKHS environment
+    -> String
+    -- ^ API method name
+    -> [(String, String)]
+    -- ^ API method parameters (name-value pairs)
+    -> IO (Either String BS.ByteString)
+api e mn mp =
+  let uri = showUri $ (\f -> f $ toUri $ printf "https://api.vk.com/method/%s" mn) $
+              set query $ bw params (("access_token",(access_token . sub) e):mp)
+  in vk_curl_payload e (tell [CURLOPT_URL $ U.fromString uri])
+
+
