diff --git a/Database/Cayley/Client.hs b/Database/Cayley/Client.hs
--- a/Database/Cayley/Client.hs
+++ b/Database/Cayley/Client.hs
@@ -49,7 +49,8 @@
         c <- ask
         r <- apiRequest
                  m ("http://" ++ serverName c ++ "/api/v" ++
-                    apiVersion c ++ "/query/" ++ queryLang c)
+                    show (apiVersion c) ++ "/query/"
+                    ++ show (queryLang c))
                  (serverPort c) (RequestBodyBS q)
         case r of
             Just a  ->
@@ -61,8 +62,8 @@
                               case A.fromJSON e of
                                   A.Success s -> return $ Left s
                                   A.Error e   -> return $ Left e
-                          Nothing ->
-                              return $ Left "No JSON response from Cayley"
+                          Nothing -> return $
+                              Left "No JSON response from Cayley"
             Nothing -> return $ Left "Can't get any response from Cayley"
 
 -- | Write a 'Quad' with the given subject, predicate, object and optional
@@ -100,8 +101,9 @@
     write m qs = do
         c <- ask
         apiRequest
-            m ("http://" ++ serverName c ++
-               "/api/v" ++ apiVersion c ++ "/write")
+            m ("http://" ++ serverName c
+               ++ "/api/v" ++ show (apiVersion c)
+               ++ "/write")
             (serverPort c) (toRequestBody qs)
 
 -- | Delete the given list of 'Quad'(s).
@@ -112,8 +114,9 @@
     delete m qs = do
         c <- ask
         apiRequest
-            m ("http://" ++ serverName c ++
-               "/api/v" ++ apiVersion c ++ "/delete")
+            m ("http://" ++ serverName c
+               ++ "/api/v" ++ show (apiVersion c)
+               ++ "/delete")
             (serverPort c)
             (toRequestBody qs)
 
@@ -123,8 +126,9 @@
   where
     writenq m p = do
         c <- ask
-        r <- parseUrl ("http://" ++ serverName c ++ "/api/v"
-                       ++ apiVersion c ++ "/write/file/nquad")
+        r <- parseUrl ("http://" ++ serverName c
+                       ++ "/api/v" ++ show (apiVersion c)
+                       ++ "/write/file/nquad")
                  >>= \r -> return r { port = serverPort c}
         t <- liftIO $
                  try $
@@ -145,13 +149,25 @@
 -- >Right 9
 --
 successfulResults :: Maybe A.Value -> IO (Either String Int)
-successfulResults v =
-    case A.fromJSON (fromJust $ fromJust v ^? key "result") of
-        A.Success s ->
-            case AT.parse getAmount s of
-                AT.Done "" a -> return $ Right a
-                _ -> return $ Left "Can't get amount of successful results"
-        A.Error e -> return $ Left e
+successfulResults m = return $
+    case m of
+        Just a  ->
+            case a ^? key "result" of
+                Just v  ->
+                    case A.fromJSON v of
+                        A.Success s ->
+                            case AT.parse getAmount s of
+                               AT.Done "" a -> Right a
+                               _ -> Left "Can't get amount of successful results"
+                        A.Error e -> Left e
+                Nothing ->
+                    case a ^? key "error" of
+                        Just e  ->
+                            case A.fromJSON e of
+                                A.Success s -> Left s
+                                A.Error e   -> Left e
+                        Nothing -> Left "No JSON response from Cayley"
+        Nothing -> Left "Can't get any response from Cayley"
   where
     getAmount = do
         AT.string "Successfully "
diff --git a/Database/Cayley/Types.hs b/Database/Cayley/Types.hs
--- a/Database/Cayley/Types.hs
+++ b/Database/Cayley/Types.hs
@@ -8,19 +8,30 @@
 import qualified Data.Text as T
 import Network.HTTP.Client (Manager)
 
+data APIVersion = V1
+
+instance Show APIVersion where
+    show V1 = "1"
+
+data QueryLang = Gremlin | MQL
+
+instance Show QueryLang where
+    show Gremlin = "gremlin"
+    show MQL     = "mql"
+
 data CayleyConfig = CayleyConfig
-    { serverPort :: Int    -- ^ Default to 64210
-    , serverName :: String -- ^ Default to "localhost"
-    , apiVersion :: String -- ^ Default to "1"
-    , queryLang  :: String -- ^ Default to "gremlin"
-    } deriving (Eq,Show)
+    { serverPort :: Int
+    , serverName :: String
+    , apiVersion :: APIVersion
+    , queryLang  :: QueryLang
+    } deriving (Show)
 
--- | CayleyConfig { serverPort = 64210 , serverName = "localhost" , apiVersion = "1" , queryLang  = "gremlin" }
+-- | CayleyConfig { serverPort = 64210 , serverName = "localhost" , apiVersion = V1 , queryLang  = Gremlin }
 defaultCayleyConfig = CayleyConfig
     { serverPort = 64210
     , serverName = "localhost"
-    , apiVersion = "1"
-    , queryLang  = "gremlin"
+    , apiVersion = V1
+    , queryLang  = Gremlin
     }
 
 data CayleyConnection = CayleyConnection (CayleyConfig,Manager)
diff --git a/cayley-client.cabal b/cayley-client.cabal
--- a/cayley-client.cabal
+++ b/cayley-client.cabal
@@ -1,9 +1,9 @@
 name:                cayley-client
-version:             0.1.0.1
+version:             0.1.1.0
 stability:           Experimental
 synopsis:            An Haskell client for Cayley graph database
 description:         cayley-client implements the RESTful API of the Cayley database graph.
-homepage:            http://mb.cybervisible.fr/cayley-client-for-haskell
+homepage:            https://github.com/MichelBoucey/cayley-client
 license:             BSD3
 license-file:        LICENSE
 author:              Michel Boucey
@@ -15,7 +15,7 @@
 
 Source-Repository head
   Type: git
-  Location: https://github.com/MichelBoucey/cayley-client
+  Location: https://github.com/MichelBoucey/cayley-client.git
 
 library
   exposed-modules:     Database.Cayley.Client, Database.Cayley.Types, Database.Cayley.Internal
