diff --git a/ipfs.cabal b/ipfs.cabal
--- a/ipfs.cabal
+++ b/ipfs.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           ipfs
-version:        1.3.2
+version:        1.4.0
 synopsis:       Access IPFS locally and remotely
 description:    Interact with the IPFS network by shelling out to a local IPFS node or communicating via the HTTP interface of a remote IPFS node.
 category:       Network
@@ -155,7 +155,6 @@
     , servant-multipart
     , servant-multipart-api
     , servant-multipart-client
-    , servant-server
     , swagger2
     , text
     , vector
@@ -235,7 +234,6 @@
     , servant-multipart
     , servant-multipart-api
     , servant-multipart-client
-    , servant-server
     , swagger2
     , text
     , vector
diff --git a/library/Network/IPFS/CID/Types.hs b/library/Network/IPFS/CID/Types.hs
--- a/library/Network/IPFS/CID/Types.hs
+++ b/library/Network/IPFS/CID/Types.hs
@@ -3,12 +3,12 @@
   , mkCID
   ) where
 
-import qualified RIO.ByteString.Lazy as Lazy
+import qualified RIO.ByteString.Lazy        as Lazy
 import           RIO.Char
-import qualified RIO.Text            as Text
+import qualified RIO.Text                   as Text
 
-import Data.Swagger
-import Servant
+import           Data.Swagger
+import           Servant.API
 
 import qualified Network.IPFS.Internal.UTF8 as UTF8
 import           Network.IPFS.Prelude
diff --git a/library/Network/IPFS/Client.hs b/library/Network/IPFS/Client.hs
--- a/library/Network/IPFS/Client.hs
+++ b/library/Network/IPFS/Client.hs
@@ -10,7 +10,7 @@
 
 import qualified RIO.ByteString.Lazy                             as Lazy
 
-import           Servant
+import           Servant.API
 import           Servant.Client
 import           Servant.Multipart.Client                        ()
 
diff --git a/library/Network/IPFS/Client/Add.hs b/library/Network/IPFS/Client/Add.hs
--- a/library/Network/IPFS/Client/Add.hs
+++ b/library/Network/IPFS/Client/Add.hs
@@ -1,10 +1,10 @@
 module Network.IPFS.Client.Add (API) where
 
-import qualified RIO.ByteString.Lazy as Lazy
+import qualified RIO.ByteString.Lazy    as Lazy
 
-import Servant
+import           Servant.API
 
-import Network.IPFS.CID.Types (CID)
+import           Network.IPFS.CID.Types (CID)
 
 type API = ReqBody '[PlainText] Lazy.ByteString
         :> Post    '[PlainText] CID
diff --git a/library/Network/IPFS/Client/Param.hs b/library/Network/IPFS/Client/Param.hs
--- a/library/Network/IPFS/Client/Param.hs
+++ b/library/Network/IPFS/Client/Param.hs
@@ -3,7 +3,7 @@
   , IsRecursive
   ) where
 
-import           Servant
+import           Servant.API
 
 import           Network.IPFS.CID.Types
 
diff --git a/library/Network/IPFS/Client/Pin.hs b/library/Network/IPFS/Client/Pin.hs
--- a/library/Network/IPFS/Client/Pin.hs
+++ b/library/Network/IPFS/Client/Pin.hs
@@ -7,7 +7,7 @@
 
 import qualified RIO.Text                  as Text
 
-import           Servant
+import           Servant.API
 
 import           Network.IPFS.Prelude
 
diff --git a/library/Network/IPFS/Client/Stat.hs b/library/Network/IPFS/Client/Stat.hs
--- a/library/Network/IPFS/Client/Stat.hs
+++ b/library/Network/IPFS/Client/Stat.hs
@@ -1,6 +1,6 @@
 module Network.IPFS.Client.Stat (API) where
 
-import           Servant
+import           Servant.API
 
 import           Network.IPFS.Prelude
 
diff --git a/library/Network/IPFS/Internal/Orphanage/ByteString/Lazy.hs b/library/Network/IPFS/Internal/Orphanage/ByteString/Lazy.hs
--- a/library/Network/IPFS/Internal/Orphanage/ByteString/Lazy.hs
+++ b/library/Network/IPFS/Internal/Orphanage/ByteString/Lazy.hs
@@ -2,8 +2,8 @@
 
 module Network.IPFS.Internal.Orphanage.ByteString.Lazy () where
 
-import qualified RIO.ByteString.Lazy as Lazy
-import           Servant
+import qualified RIO.ByteString.Lazy  as Lazy
+import           Servant.API
 
 import           Network.IPFS.Prelude
 
diff --git a/library/Network/IPFS/Name/Types.hs b/library/Network/IPFS/Name/Types.hs
--- a/library/Network/IPFS/Name/Types.hs
+++ b/library/Network/IPFS/Name/Types.hs
@@ -1,11 +1,11 @@
 module Network.IPFS.Name.Types (Name (..)) where
 
-import qualified RIO.Text as Text
+import qualified RIO.Text             as Text
 
-import Servant
-import Data.Swagger (ToParamSchema, ToSchema (..))
+import           Data.Swagger         (ToParamSchema, ToSchema (..))
+import           Servant.API
 
-import Network.IPFS.Prelude
+import           Network.IPFS.Prelude
 
 newtype Name = Name { unName :: String }
   deriving          ( Eq
diff --git a/library/Network/IPFS/Path/Types.hs b/library/Network/IPFS/Path/Types.hs
--- a/library/Network/IPFS/Path/Types.hs
+++ b/library/Network/IPFS/Path/Types.hs
@@ -1,10 +1,10 @@
 module Network.IPFS.Path.Types (Path (..)) where
 
-import Data.Swagger (ToSchema (..))
-import Servant
+import           Data.Swagger               (ToSchema (..))
+import           Servant.API
 
-import           Network.IPFS.Prelude
 import qualified Network.IPFS.Internal.UTF8 as UTF8
+import           Network.IPFS.Prelude
 
 -- | CID path
 --
diff --git a/library/Network/IPFS/Peer.hs b/library/Network/IPFS/Peer.hs
--- a/library/Network/IPFS/Peer.hs
+++ b/library/Network/IPFS/Peer.hs
@@ -3,6 +3,7 @@
   , rawList
   , connect
   , connectRetry
+  , disconnect
   , getExternalAddress
   ) where
 
@@ -37,6 +38,12 @@
 connect peer@(Peer peerID) = IPFS.runLocal ["swarm", "connect"] (UTF8.textToLazyBS peerID) >>= pure . \case
   Left _  -> Left $ CannotConnect peer
   Right _ -> Right ()
+
+disconnect :: MonadLocalIPFS m => Peer -> m (Either IPFS.Peer.Error ())
+disconnect peer@(Peer peerID) =
+  IPFS.runLocal ["swarm", "disconnect"] (UTF8.textToLazyBS peerID) >>= pure . \case
+    Left _  -> Left $ CannotDisconnect peer
+    Right _ -> Right ()
 
 connectRetry :: MonadLocalIPFS m => Peer -> Natural -> m (Either IPFS.Peer.Error ())
 connectRetry peer 0 = return . Left $ CannotConnect peer
diff --git a/library/Network/IPFS/Peer/Error.hs b/library/Network/IPFS/Peer/Error.hs
--- a/library/Network/IPFS/Peer/Error.hs
+++ b/library/Network/IPFS/Peer/Error.hs
@@ -1,11 +1,12 @@
 module Network.IPFS.Peer.Error (Error (..)) where
 
-import Network.IPFS.Prelude
-import Network.IPFS.Peer.Types
+import           Network.IPFS.Peer.Types
+import           Network.IPFS.Prelude
 
 data Error
-  = DecodeFailure String
-  | CannotConnect Peer
+  = DecodeFailure    String
+  | CannotConnect    Peer
+  | CannotDisconnect Peer
   | UnknownErr Text
   deriving ( Exception
            , Eq
diff --git a/library/Network/IPFS/Peer/Types.hs b/library/Network/IPFS/Peer/Types.hs
--- a/library/Network/IPFS/Peer/Types.hs
+++ b/library/Network/IPFS/Peer/Types.hs
@@ -1,11 +1,11 @@
 module Network.IPFS.Peer.Types (Peer (..)) where
 
-import RIO
+import           RIO
 
-import Control.Lens
-import Data.Aeson
-import Data.Swagger
-import Servant
+import           Control.Lens
+import           Data.Aeson
+import           Data.Swagger
+import           Servant.API
 
 import qualified Network.IPFS.Internal.UTF8 as UTF8
 
diff --git a/library/Network/IPFS/SparseTree/Types.hs b/library/Network/IPFS/SparseTree/Types.hs
--- a/library/Network/IPFS/SparseTree/Types.hs
+++ b/library/Network/IPFS/SparseTree/Types.hs
@@ -3,17 +3,17 @@
   , Tag (..)
   ) where
 
-import qualified RIO.HashMap as HashMap
-import qualified RIO.Map     as Map
-import qualified RIO.Text    as Text
+import qualified RIO.HashMap                as HashMap
+import qualified RIO.Map                    as Map
+import qualified RIO.Text                   as Text
 
-import Data.Swagger hiding (Tag, name)
-import Servant
+import           Data.Swagger               hiding (Tag, name)
+import           Servant.API
 
-import           Network.IPFS.Prelude
-import qualified Network.IPFS.Internal.UTF8 as UTF8
 import           Network.IPFS.CID.Types
+import qualified Network.IPFS.Internal.UTF8 as UTF8
 import           Network.IPFS.Name.Types
+import           Network.IPFS.Prelude
 
 -- | Directory structure for CIDs and other identifiers
 --
