diff --git a/distributed-process.cabal b/distributed-process.cabal
--- a/distributed-process.cabal
+++ b/distributed-process.cabal
@@ -1,5 +1,5 @@
 Name:          distributed-process
-Version:       0.5.2
+Version:       0.5.3
 Cabal-Version: >=1.8
 Build-Type:    Simple
 License:       BSD3
@@ -9,7 +9,7 @@
 Maintainer:    watson.timothy@gmail.com, edsko@well-typed.com, duncan@well-typed.com
 Stability:     experimental
 Homepage:      http://haskell-distributed.github.com/
-Bug-Reports:   http://cloud-haskell.atlassian.net
+Bug-Reports:   https://github.com/haskell-distributed/distributed-process/issues
 Synopsis:      Cloud Haskell: Erlang-style concurrency in Haskell
 Description:   This is an implementation of Cloud Haskell, as described in
                /Towards Haskell in the Cloud/ by Jeff Epstein, Andrew Black,
@@ -50,7 +50,7 @@
                      bytestring >= 0.9 && < 0.11,
                      old-locale >= 1.0 && < 1.1,
                      time >= 1.2 && < 1.5,
-                     random >= 1.0 && < 1.1,
+                     random >= 1.0 && < 1.2,
                      ghc-prim >= 0.2 && < 0.4,
                      distributed-static >= 0.2 && < 0.4,
                      rank1dynamic >= 0.1 && < 0.3,
diff --git a/src/Control/Distributed/Process/Internal/Closure/BuiltIn.hs b/src/Control/Distributed/Process/Internal/Closure/BuiltIn.hs
--- a/src/Control/Distributed/Process/Internal/Closure/BuiltIn.hs
+++ b/src/Control/Distributed/Process/Internal/Closure/BuiltIn.hs
@@ -52,6 +52,7 @@
 import Control.Distributed.Process.Serializable
   ( SerializableDict(..)
   , Serializable
+  , TypeableDict(..)
   )
 import Control.Distributed.Process.Internal.Types
   ( Process
@@ -84,7 +85,8 @@
     . registerStatic "$sdictUnit"       (toDynamic (SerializableDict :: SerializableDict ()))
     . registerStatic "$sdictProcessId"  (toDynamic (SerializableDict :: SerializableDict ProcessId))
     . registerStatic "$sdictSendPort_"  (toDynamic (sdictSendPort_   :: SerializableDict ANY -> SerializableDict (SendPort ANY)))
-    . registerStatic "$sdictClosure"    (toDynamic (SerializableDict :: SerializableDict (Closure ANY)))
+    . registerStatic "$sdictStatic"     (toDynamic (sdictStatic_     :: TypeableDict ANY -> SerializableDict (Static ANY)))
+    . registerStatic "$sdictClosure"    (toDynamic (sdictClosure_    :: TypeableDict ANY -> SerializableDict (Closure ANY)))
     . registerStatic "$returnProcess"   (toDynamic (return           :: ANY -> Process ANY))
     . registerStatic "$seqProcess"      (toDynamic ((>>)             :: Process ANY1 -> Process ANY2 -> Process ANY2))
     . registerStatic "$bindProcess"     (toDynamic ((>>=)            :: Process ANY1 -> (ANY1 -> Process ANY2) -> Process ANY2))
@@ -105,6 +107,12 @@
     sdictSendPort_ :: forall a. SerializableDict a -> SerializableDict (SendPort a)
     sdictSendPort_ SerializableDict = SerializableDict
 
+    sdictStatic_ :: forall a. TypeableDict a -> SerializableDict (Static a)
+    sdictStatic_ TypeableDict = SerializableDict
+
+    sdictClosure_ :: forall a. TypeableDict a -> SerializableDict (Closure a)
+    sdictClosure_ TypeableDict = SerializableDict
+
     sendDict :: forall a. SerializableDict a -> ProcessId -> a -> Process ()
     sendDict SerializableDict = send
 
@@ -148,12 +156,12 @@
 sdictSendPort = staticApply (staticLabel "$sdictSendPort_")
 
 -- | Serialization dictionary for 'Static'.
-sdictStatic :: Typeable a => Static (SerializableDict (Static a))
-sdictStatic = staticLabel "$sdictStatic"
+sdictStatic :: Typeable a => Static (TypeableDict a) -> Static (SerializableDict (Static a))
+sdictStatic = staticApply (staticLabel "$sdictStatic")
 
 -- | Serialization dictionary for 'Closure'.
-sdictClosure :: Typeable a => Static (SerializableDict (Closure a))
-sdictClosure = staticLabel "$sdictClosure"
+sdictClosure :: Typeable a => Static (TypeableDict a) -> Static (SerializableDict (Closure a))
+sdictClosure = staticApply (staticLabel "$sdictClosure")
 
 --------------------------------------------------------------------------------
 -- Static values                                                              --
diff --git a/src/Control/Distributed/Process/Serializable.hs b/src/Control/Distributed/Process/Serializable.hs
--- a/src/Control/Distributed/Process/Serializable.hs
+++ b/src/Control/Distributed/Process/Serializable.hs
@@ -12,6 +12,7 @@
   , Fingerprint
   , showFingerprint
   , SerializableDict(SerializableDict)
+  , TypeableDict(TypeableDict)
   ) where
 
 import Data.Binary (Binary)
@@ -39,6 +40,11 @@
 -- | Reification of 'Serializable' (see "Control.Distributed.Process.Closure")
 data SerializableDict a where
     SerializableDict :: Serializable a => SerializableDict a
+  deriving (Typeable)
+
+-- | Reification of 'Typeable'.
+data TypeableDict a where
+    TypeableDict :: Typeable a => TypeableDict a
   deriving (Typeable)
 
 -- | Objects that can be sent across the network
