diff --git a/src/Quasar/Network.hs b/src/Quasar/Network.hs
index 3f938a79f1518b590c919b3b75db1d3f3f568c46..8af66cb6e6954e726235183da1ed9e228b5bc8db 100644
--- a/src/Quasar/Network.hs
+++ b/src/Quasar/Network.hs
@@ -456,9 +456,6 @@ serverHandleChannelMessage protocolImpl channel resources msg = case decodeOrFai
         wrappedResponse :: ProtocolResponseWrapper p
         wrappedResponse = (resources.messageId, response)
 
-registerChannelServerHandler :: forall p. (RpcProtocol p, HasProtocolImpl p) => ProtocolImpl p -> Channel -> IO ()
-registerChannelServerHandler protocolImpl channel = channelSetHandler channel (serverHandleChannelMessage @p protocolImpl channel)
-
 
 newtype Stream up down = Stream Channel
 
@@ -613,7 +610,10 @@ connectToServer server conn = void $ forkFinally (interruptible (runServerHandle
 
 -- | Internal
 runServerHandler :: forall p a. (RpcProtocol p, HasProtocolImpl p, IsConnection a) => ProtocolImpl p -> a -> IO ()
-runServerHandler protocolImpl = runMultiplexer MultiplexerSideB (registerChannelServerHandler @p protocolImpl) . toSocketConnection
+runServerHandler protocolImpl = runMultiplexer MultiplexerSideB registerChannelServerHandler . toSocketConnection
+  where
+    registerChannelServerHandler :: Channel -> IO ()
+    registerChannelServerHandler channel = channelSetHandler channel (serverHandleChannelMessage @p protocolImpl channel)
 
 
 withLocalClient :: forall p a. (RpcProtocol p, HasProtocolImpl p) => Server p -> ((Client p) -> IO a) -> IO a