diff --git a/Linux/Arch/Aur/Rpc.hs b/Linux/Arch/Aur/Rpc.hs
--- a/Linux/Arch/Aur/Rpc.hs
+++ b/Linux/Arch/Aur/Rpc.hs
@@ -13,13 +13,11 @@
 module Linux.Arch.Aur.Rpc
        ( info, search ) where
 
-import Control.Monad.Trans (MonadIO, liftIO)
-import Control.Monad.Trans.Except
+import Control.Monad.IO.Class (MonadIO, liftIO)
 import Data.Proxy
 import Data.Text (Text)
 import Linux.Arch.Aur.Types
-import Network.HTTP.Client (newManager)
-import Network.HTTP.Client.TLS
+import Network.HTTP.Client (Manager)
 import Servant.API
 import Servant.Client
 
@@ -47,16 +45,12 @@
 rpcI :<|> rpcS = client api
 
 -- | Perform an @info@ call on one or more package names.
-info :: MonadIO m => [Text] -> m [AurInfo]
-info ps = do
-  manager <- liftIO $ newManager tlsManagerSettings
-  unwrap $ rpcI (Just "5") (Just "info") ps manager url
+info :: MonadIO m => Manager -> [Text] -> m [AurInfo]
+info m ps = unwrap m $ rpcI (Just "5") (Just "info") ps
 
 -- | Perform a @search@ call on a package name or description text.
-search :: MonadIO m => Text -> m [AurInfo]
-search p = do
-  manager <- liftIO $ newManager tlsManagerSettings
-  unwrap $ rpcS (Just "5") (Just "search") (Just p) manager url
+search :: MonadIO m => Manager -> Text -> m [AurInfo]
+search m p = unwrap m $ rpcS (Just "5") (Just "search") (Just p)
 
-unwrap :: MonadIO m => ExceptT ServantError IO RPCResp -> m [AurInfo]
-unwrap = liftIO . fmap (either (const []) _results) . runExceptT
+unwrap :: MonadIO m => Manager -> ClientM RPCResp -> m [AurInfo]
+unwrap m r = liftIO . fmap (either (const []) _results) $ runClientM r (ClientEnv m url)
diff --git a/Linux/Arch/Aur/Types.hs b/Linux/Arch/Aur/Types.hs
--- a/Linux/Arch/Aur/Types.hs
+++ b/Linux/Arch/Aur/Types.hs
@@ -37,15 +37,15 @@
                        , pkgBaseIdOf      :: Int
                        , pkgBaseOf        :: Text
                        , aurVersionOf     :: Text
-                       , aurDescriptionOf :: Text
-                       , urlOf            :: Text
+                       , aurDescriptionOf :: Maybe Text
+                       , urlOf            :: Maybe Text
                        , aurVotesOf       :: Int
                        , popularityOf     :: Float
                        , dateObsoleteOf   :: Maybe Int
                        , aurMaintainerOf  :: Maybe Text
                        , submissionDateOf :: Int
                        , modifiedDateOf   :: Int
-                       , urlPathOf        :: Text
+                       , urlPathOf        :: Maybe Text
                        , dependsOf        :: [Text]
                        , makeDepsOf       :: [Text]
                        , optDepsOf        :: [Text]
@@ -61,15 +61,15 @@
                            v .:  "PackageBaseID"      <*>
                            v .:  "PackageBase"        <*>
                            v .:  "Version"            <*>
-                           v .:  "Description"        <*>
-                           v .:  "URL"                <*>
+                           v .:? "Description"        <*>
+                           v .:? "URL"                <*>
                            v .:  "NumVotes"           <*>
                            v .:  "Popularity"         <*>
                            (v .: "OutOfDate"  <|> pure Nothing) <*>
                            (v .: "Maintainer" <|> pure Nothing) <*>
                            v .:  "FirstSubmitted"     <*>
                            v .:  "LastModified"       <*>
-                           v .:  "URLPath"            <*>
+                           v .:? "URLPath"            <*>
                            v .:? "Depends"     .!= [] <*>
                            v .:? "MakeDepends" .!= [] <*>
                            v .:? "OptDepends"  .!= [] <*>
diff --git a/aur.cabal b/aur.cabal
--- a/aur.cabal
+++ b/aur.cabal
@@ -1,6 +1,6 @@
 name:                aur
 
-version:             5.0.1
+version:             6.0.0
 
 synopsis:            Access metadata from the Arch Linux User Repository.
 
@@ -40,16 +40,29 @@
   exposed-modules:     Linux.Arch.Aur,
                        Linux.Arch.Aur.Rpc,
                        Linux.Arch.Aur.Types
-  
+
   build-depends:
-                       base >=4.8 && <4.9
-                     , aeson >= 0.9.0.1
-                     , http-client >= 0.4.27
-                     , http-client-tls >= 0.2.2
-                     , mtl >= 2.2.1
-                     , servant >= 0.7 && < 0.8
-                     , servant-client >= 0.7 && < 0.8
-                     , text >=1.1 && <1.3
-                     , transformers >= 0.4.2.0
+                       base >= 4.8 && < 4.10
+                     , aeson >= 0.9 && < 1.1
+                     , http-client >= 0.5 && < 0.6
+                     , servant >= 0.9 && < 0.10
+                     , servant-client >= 0.9 && < 0.10
+                     , text >= 1.2 && < 1.3
 
+  default-language:    Haskell2010
+
+  ghc-options:         -fwarn-unused-imports
+
+test-suite aur-test
+  type:                exitcode-stdio-1.0
+
+  build-depends:       aur
+                     , base >= 4.8 && < 4.10
+                     , tasty >= 0.11 && < 0.12
+                     , tasty-hunit >= 0.9 && < 0.10
+                     , http-client >= 0.5 && < 0.6
+                     , http-client-tls >= 0.3 && < 0.4
+
+  hs-source-dirs:      tests
+  main-is:             Test.hs
   default-language:    Haskell2010
diff --git a/tests/Test.hs b/tests/Test.hs
new file mode 100644
--- /dev/null
+++ b/tests/Test.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Main where
+
+import Linux.Arch.Aur
+import Network.HTTP.Client
+import Network.HTTP.Client.TLS
+import Test.Tasty
+import Test.Tasty.HUnit
+
+---
+
+suite :: Manager -> TestTree
+suite m = testGroup "RPC Calls"
+  [ testCase "info on existing package" $ infoTest m
+  , testCase "info on nonexistant package" $ infoTest' m
+  , testCase "search" $ searchTest m
+  ]
+
+infoTest :: Manager -> Assertion
+infoTest m = info m ["aura"] >>= assert . not . null
+
+infoTest' :: Manager -> Assertion
+infoTest' m = info m ["aura1234567"] >>= assert . null
+
+searchTest :: Manager -> Assertion
+searchTest m = search m "aura" >>= assert . not . null
+
+main :: IO ()
+main = do
+  m <- newManager tlsManagerSettings
+  defaultMain $ suite m
