diff --git a/debug-tracy.cabal b/debug-tracy.cabal
--- a/debug-tracy.cabal
+++ b/debug-tracy.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                debug-tracy
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            More useful trace functions for investigating bugs
 description:         A collection of things for debugging, (to prevent me from writing them again)
 license:             BSD3
@@ -14,7 +14,7 @@
 build-type:          Simple
 extra-source-files:  ChangeLog.md
 cabal-version:       >=1.10
-tested-with:         GHC == 8.4.1, GHC == 8.2.2, GHC == 8.0.2
+tested-with:         GHC == 8.6.1, GHC == 8.4.1, GHC == 8.2.2, GHC == 8.0.2
 
 source-repository head
   type: git
@@ -24,7 +24,7 @@
   exposed-modules:     Debug.Tracy
   -- other-modules:
   -- other-extensions:
-  build-depends:       base >=4.9 && <4.12
+  build-depends:       base >=4.9 && <4.13
                      , lens
                      , random
                      , transformers
@@ -35,5 +35,5 @@
   main-is:             Main.hs
   default-language:    Haskell2010
   hs-source-dirs:      test
-  build-depends:       base >= 4.9 && < 4.12
+  build-depends:       base >= 4.9 && < 4.13
                      , debug-tracy
diff --git a/src/Debug/Tracy.hs b/src/Debug/Tracy.hs
--- a/src/Debug/Tracy.hs
+++ b/src/Debug/Tracy.hs
@@ -7,6 +7,7 @@
 module Debug.Tracy
   ( module Debug.Trace
   , tracy
+  , proTracy
   , keanu
   , arnold
   , hasLength
@@ -35,6 +36,10 @@
 -- | trace with show and a delimiter built in
 tracy :: Show a => String -> a -> a
 tracy s x = trace (delimit s $ show x) x
+
+-- | trace the input and output of a function
+proTracy :: (Show a, Show b) => String -> (a -> b) -> a -> b
+proTracy msg f = tracy (msg ++ " post") . f . tracy (msg ++ " pre")
 
 -- | Spit out a random Keanu Reaves quote when @a@ is evauluated
 keanu :: a -> a
