diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+![](https://github.com/fission-suite/PROJECTNAME/raw/master/assets/logo.png?sanitize=true)
+
 # ipfs-haskell
 
 [![Build Status](https://travis-ci.org/fission-suite/PROJECTNAME.svg?branch=master)](https://travis-ci.org/fission-suite/ipfs-haskell)
diff --git a/ipfs.cabal b/ipfs.cabal
--- a/ipfs.cabal
+++ b/ipfs.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 0ce7658c51aedc29d36dcf7bc42ec1a99ebc4eb32b76ffb58916cf586f58ba7b
+-- hash: 57e69b16ed496b39a019d745c36aca0c13d5eca31deb91fbf3503b2fd1852e90
 
 name:           ipfs
-version:        1.0.0
+version:        1.0.1
 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
@@ -44,7 +44,6 @@
       Network.IPFS.Client.Error.Types
       Network.IPFS.Client.Param
       Network.IPFS.Client.Pin
-      Network.IPFS.Config
       Network.IPFS.DAG
       Network.IPFS.DAG.Link
       Network.IPFS.DAG.Link.Types
@@ -56,7 +55,6 @@
       Network.IPFS.Get.Error
       Network.IPFS.Ignored.Types
       Network.IPFS.Info.Types
-      Network.IPFS.Internal.Constraint
       Network.IPFS.Internal.Orphanage.ByteString.Lazy
       Network.IPFS.Internal.Orphanage.Natural
       Network.IPFS.Internal.Orphanage.Utf8Builder
diff --git a/library/Network/IPFS/Config.hs b/library/Network/IPFS/Config.hs
deleted file mode 100644
--- a/library/Network/IPFS/Config.hs
+++ /dev/null
@@ -1,32 +0,0 @@
--- | Application configuration and top-level 'RIO' helpers
-module Network.IPFS.Config
-  ( get
-  ) where
-
-import RIO
-import Data.Has
-
--- $setup
---
--- >>> import RIO
--- >>> import Data.Has
--- >>>
--- >>> :set -XBlockArguments
--- >>> :set -XMultiParamTypeClasses
--- >>> :set -XOverloadedStrings
-
--- | Get a value from the reader config
---
---   >>> data Field = Field Text
---   >>> data Cfg = Cfg Field
---   >>>
---   >>> instance Has Field Cfg where hasLens = \f (Cfg field) -> Cfg <$> f field
---   >>>
---   >>> :{
---   >>>   runRIO (Cfg $ Field "hello world") do
---   >>>     Field txt <- get
---   >>>     return txt
---   >>> :}
---   "hello world"
-get :: (MonadReader cfg m, Has a cfg) => m a
-get = view hasLens
diff --git a/library/Network/IPFS/Internal/Constraint.hs b/library/Network/IPFS/Internal/Constraint.hs
deleted file mode 100644
--- a/library/Network/IPFS/Internal/Constraint.hs
+++ /dev/null
@@ -1,5 +0,0 @@
-module Network.IPFS.Internal.Constraint (MonadRIO) where
-
-import RIO
-
-type MonadRIO cfg m = (MonadIO m, MonadReader cfg m)
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
@@ -10,5 +10,5 @@
 instance MimeRender PlainText Lazy.ByteString where
   mimeRender _proxy = identity
 
-instance FromJSON ByteString where
-  parseJSON = withText "ByteString" (pure . encodeUtf8)
+instance FromJSON Lazy.ByteString where
+  parseJSON = withText "ByteString" (pure . Lazy.fromStrict . encodeUtf8)
diff --git a/library/Network/IPFS/Pin.hs b/library/Network/IPFS/Pin.hs
--- a/library/Network/IPFS/Pin.hs
+++ b/library/Network/IPFS/Pin.hs
@@ -13,13 +13,7 @@
 import           Servant.Client.Core
 
 -- | Pin a CID
-add ::
-  ( MonadRIO cfg m
-  , MonadRemoteIPFS m
-  , MonadLogger     m
-  )
-  => IPFS.CID
-  -> m (Either IPFS.Add.Error CID)
+add :: (MonadRemoteIPFS m, MonadLogger m) => IPFS.CID -> m (Either IPFS.Add.Error CID)
 add cid = ipfsPin cid >>= \case
   Right Pin.Response { cids } ->
     case cids of
@@ -36,13 +30,7 @@
     return <| Left formattedError
 
 -- | Unpin a CID
-rm ::
-  ( MonadRIO cfg m
-  , MonadRemoteIPFS  m
-  , MonadLogger      m
-  )
-  => IPFS.CID
-  -> m (Either IPFS.Add.Error CID)
+rm :: (MonadRemoteIPFS m, MonadLogger m) => IPFS.CID -> m (Either IPFS.Add.Error CID)
 rm cid = ipfsUnpin cid False >>= \case
   Right Pin.Response { cids } ->
     case cids of
@@ -59,36 +47,26 @@
     return <| Right cid
 
 -- | Parse and Log the Servant Client Error returned from the IPFS Daemon
-parseClientError ::
-  ( MonadRIO        cfg m
-  , MonadLogger     m
-  )
-  => ClientError
-  -> m Error
+parseClientError :: MonadLogger m => ClientError -> m Error
 parseClientError err = do
   logError <| displayShow err
   return <| case err of
-        FailureResponse _ response ->
-          response
-          |> responseBody
-          |> decode
-          |> \case
-            Just IPFS.ErrorBody {message} ->
-              IPFSDaemonErr <| UTF8.textShow message
+    FailureResponse _ response ->
+      response
+        |> responseBody
+        |> decode
+        |> \case
+          Just IPFS.ErrorBody {message} ->
+            IPFSDaemonErr <| UTF8.textShow message
 
-            _ ->
-              UnexpectedOutput <| UTF8.textShow err
+          _ ->
+            UnexpectedOutput <| UTF8.textShow err
 
-        unknownClientError ->
-          UnknownAddErr <| UTF8.textShow unknownClientError
+    unknownClientError ->
+      UnknownAddErr <| UTF8.textShow unknownClientError
 
 -- | Parse and Log unexpected output when attempting to pin
-parseUnexpectedOutput ::
-  ( MonadRIO cfg m
-  , MonadLogger m
-  )
-  => Text
-  -> m IPFS.Add.Error
+parseUnexpectedOutput :: MonadLogger m => Text -> m IPFS.Add.Error
 parseUnexpectedOutput errStr = do
   let
     baseError = UnexpectedOutput errStr
diff --git a/library/Network/IPFS/Prelude.hs b/library/Network/IPFS/Prelude.hs
--- a/library/Network/IPFS/Prelude.hs
+++ b/library/Network/IPFS/Prelude.hs
@@ -4,7 +4,6 @@
   , module Control.Monad.Logger
   , module Data.Aeson
   , module Data.Has
-  , module Network.IPFS.Internal.Constraint
   , module Flow
   , module RIO
   , module RIO.Process
@@ -21,7 +20,6 @@
 import Data.Aeson
 import Data.Has
 
-import Network.IPFS.Internal.Constraint
 import Network.IPFS.Internal.Orphanage.Utf8Builder ()
 
 import Flow
diff --git a/library/Network/IPFS/Process.hs b/library/Network/IPFS/Process.hs
--- a/library/Network/IPFS/Process.hs
+++ b/library/Network/IPFS/Process.hs
@@ -4,7 +4,8 @@
 import Network.IPFS.Process.Types
 
 runProc ::
-  ( MonadRIO          cfg m
+  ( MonadIO               m
+  , MonadReader       cfg m
   , HasProcessContext cfg
   , HasLogFunc        cfg
   )
diff --git a/library/Network/IPFS/Remote/Class.hs b/library/Network/IPFS/Remote/Class.hs
--- a/library/Network/IPFS/Remote/Class.hs
+++ b/library/Network/IPFS/Remote/Class.hs
@@ -18,14 +18,15 @@
 import qualified Network.IPFS.Client.Pin as Pin
 import qualified Network.IPFS.File.Types      as File
 
-class Monad m => MonadRemoteIPFS m where
+class MonadIO m => MonadRemoteIPFS m where
   runRemote :: ClientM a       -> m (Either ClientError a)
   ipfsAdd   :: Lazy.ByteString -> m (Either ClientError CID)
   ipfsCat   :: CID             -> m (Either ClientError File.Serialized)
   ipfsPin   :: CID             -> m (Either ClientError Pin.Response)
   ipfsUnpin :: CID -> Bool     -> m (Either ClientError Pin.Response)
+
   -- defaults
   ipfsAdd raw                   = runRemote <| IPFS.Client.add raw
-  ipfsCat (CID cid)             = runRemote <| IPFS.Client.cat cid
-  ipfsPin (CID cid)             = runRemote <| IPFS.Client.pin cid
+  ipfsCat   (CID cid)           = runRemote <| IPFS.Client.cat cid
+  ipfsPin   (CID cid)           = runRemote <| IPFS.Client.pin cid
   ipfsUnpin (CID cid) recursive = runRemote <| IPFS.Client.unpin cid recursive
