diff --git a/managed-functions.cabal b/managed-functions.cabal
--- a/managed-functions.cabal
+++ b/managed-functions.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           managed-functions
-version:        1.1.0.0
+version:        1.2.2.0
 synopsis:       Remote Management Framework
 description:    Please see the README on GitHub at <https://github.com/martin-bednar/managed-functions#readme>
 category:       Remote Management
diff --git a/src/Managed/Probe/Internal/Params.hs b/src/Managed/Probe/Internal/Params.hs
--- a/src/Managed/Probe/Internal/Params.hs
+++ b/src/Managed/Probe/Internal/Params.hs
@@ -6,10 +6,19 @@
 
 import Data.Typeable
 
+someFunction :: TypeRep
+someFunction = typeRep (Proxy :: Proxy (() -> ()))
+
+isFunction :: TypeRep -> Bool
+isFunction x =
+  tyConFingerprint (typeRepTyCon x) ==
+  tyConFingerprint (typeRepTyCon someFunction)
+
 expand :: TypeRep -> [TypeRep]
-expand x
-  | "->" <- tyConName $ typeRepTyCon x = flatten $ typeRepArgs x
-  | otherwise = [x]
+expand x =
+  if isFunction x
+    then flatten (typeRepArgs x)
+    else [x]
 
 flatten :: [TypeRep] -> [TypeRep]
 flatten = concatMap expand
diff --git a/src/Managed/Probe/ToProbe.hs b/src/Managed/Probe/ToProbe.hs
--- a/src/Managed/Probe/ToProbe.hs
+++ b/src/Managed/Probe/ToProbe.hs
@@ -26,8 +26,7 @@
    in Probe {typeRep = t, call = checkArgs t (apply (Proxy @e) x)}
 
 -- | Class of functions that can be converted to a Probe
-class ToProbe fn e
-  where
+class ToProbe fn e where
   -- | Read arguments from a list, apply them to a function, and encode the result
   apply :: Proxy e -> fn -> [In e] -> IO (Out e)
 
