diff --git a/sparrow.cabal b/sparrow.cabal
--- a/sparrow.cabal
+++ b/sparrow.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: ebd4e11dfaadfc68bb56b0cd34cc4bf376b7430cd16a28ef8c69413463be699b
+-- hash: d249c65e47a387870dde17936cb70776bf5b3daf937fdbaa535c9b1867e3cda2
 
 name:           sparrow
-version:        0.0.1.2
+version:        0.0.1.3
 synopsis:       Unified streaming dependency management for web apps
 description:    Please see the README on Github at <https://git.localcooking.com/tooling/sparrow#readme>
 category:       Web
diff --git a/src/Web/Dependencies/Sparrow/Types.hs b/src/Web/Dependencies/Sparrow/Types.hs
--- a/src/Web/Dependencies/Sparrow/Types.hs
+++ b/src/Web/Dependencies/Sparrow/Types.hs
@@ -3,6 +3,7 @@
   , GeneralizedNewtypeDeriving
   , OverloadedStrings
   , RecordWildCards
+  , NamedFieldPuns
   #-}
 
 module Web.Dependencies.Sparrow.Types where
@@ -51,7 +52,26 @@
   initIn -> m (Maybe (ServerContinue m initOut deltaIn deltaOut))
 
 
+staticServer :: Monad m
+             => (initIn -> m (Maybe initOut)) -- ^ Produce an initOut
+             -> Server m initIn initOut JSONVoid JSONVoid
+staticServer f initIn = do
+  mInitOut <- f initIn
+  case mInitOut of
+    Nothing -> pure Nothing
+    Just initOut -> pure $ Just ServerContinue
+      { serverOnUnsubscribe = pure ()
+      , serverContinue = \_ -> pure ServerReturn
+        { serverInitOut = initOut
+        , serverOnOpen = \ServerArgs{serverDeltaReject} -> do
+            serverDeltaReject
+            pure Nothing
+        , serverOnReceive = \_ _ -> pure ()
+        }
+      }
 
+
+
 -- ** Client
 
 data ClientReturn m initOut deltaIn = ClientReturn
@@ -72,6 +92,23 @@
     ) -> m ()
 
 
+staticClient :: Monad m
+             => ((initIn -> m (Maybe initOut)) -> m ()) -- ^ Obtain an initOut
+             -> Client m initIn initOut JSONVoid JSONVoid
+staticClient f invoke = f $ \initIn -> do
+  mReturn <- invoke ClientArgs
+    { clientInitIn = initIn
+    , clientReceive = \_ _ -> pure ()
+    , clientOnReject = pure ()
+    }
+  case mReturn of
+    Nothing -> pure Nothing
+    Just ClientReturn{clientInitOut,clientUnsubscribe} -> do
+      clientUnsubscribe
+      pure (Just clientInitOut)
+
+
+
 -- ** Topic
 
 newtype Topic = Topic {getTopic :: [Text]}
@@ -97,6 +134,13 @@
 
 -- * JSON Encodings
 
+data JSONVoid
+
+instance ToJSON JSONVoid where
+  toJSON _ = String ""
+
+instance FromJSON JSONVoid where
+  parseJSON = typeMismatch "JSONVoid"
 
 
 data WithSessionID a = WithSessionID
