diff --git a/Test/Tasty/Options.hs b/Test/Tasty/Options.hs
--- a/Test/Tasty/Options.hs
+++ b/Test/Tasty/Options.hs
@@ -64,9 +64,8 @@
   -- OptionSet.)
   optionCLParser :: Parser v
   optionCLParser =
-    nullOption
-      (  reader parse
-      <> long name
+    option parse
+      (  long name
       <> help helpString
       )
     where
diff --git a/Test/Tasty/Options/Core.hs b/Test/Tasty/Options/Core.hs
--- a/Test/Tasty/Options/Core.hs
+++ b/Test/Tasty/Options/Core.hs
@@ -34,9 +34,8 @@
   optionName = return "num-threads"
   optionHelp = return "Number of threads to use for tests execution"
   optionCLParser =
-    nullOption
-      (  reader parse
-      <> short 'j'
+    nullOption parse
+      (  short 'j'
       <> long name
       <> help (untag (optionHelp :: Tagged NumThreads String))
       )
@@ -65,9 +64,8 @@
   optionName = return "timeout"
   optionHelp = return "Timeout for individual tests (suffixes: ms,s,m,h; default: s)"
   optionCLParser =
-    nullOption
-      (  reader parse
-      <> short 't'
+    nullOption parse
+      (  short 't'
       <> long name
       <> help (untag (optionHelp :: Tagged Timeout String))
       )
diff --git a/Test/Tasty/Parallel.hs b/Test/Tasty/Parallel.hs
--- a/Test/Tasty/Parallel.hs
+++ b/Test/Tasty/Parallel.hs
@@ -8,6 +8,7 @@
 import Control.Exception
 import Foreign.StablePtr
 import Data.Typeable
+import GHC.Conc (labelThread)
 
 data Interrupt = Interrupt
   deriving Typeable
@@ -123,13 +124,17 @@
           -- Thanks to our exception handling, we won't deadlock even if
           -- an exception strikes before we 'release'. Everything will be
           -- killed, so why bother.
-          return $ do forkCarefully (do a; release); cont
+          return $ do
+            pid <- forkCarefully (do a; release)
+            labelThread pid "tasty_test_thread"
+            cont
 
         else retry
 
   -- fork here as well, so that we can move to the UI without waiting
   -- untill all tests have finished
-  forkCarefully $ foldr go (return ()) actions
+  pid <- forkCarefully $ foldr go (return ()) actions
+  labelThread pid "tasty_thread_manager"
   return shutdownAll
 
 -- Copied from base to stay compatible with GHC 7.4.
diff --git a/Test/Tasty/Patterns.hs b/Test/Tasty/Patterns.hs
--- a/Test/Tasty/Patterns.hs
+++ b/Test/Tasty/Patterns.hs
@@ -90,9 +90,8 @@
   optionName = return "pattern"
   optionHelp = return "Select only tests that match pattern"
   optionCLParser =
-    nullOption
-      (  reader (ReadM . Right . parseTestPattern)
-      <> short 'p'
+    option (ReadM . Right . parseTestPattern)
+      (  short 'p'
       <> long (untag (optionName :: Tagged TestPattern String))
       <> help (untag (optionHelp :: Tagged TestPattern String))
       )
diff --git a/Test/Tasty/Run.hs b/Test/Tasty/Run.hs
--- a/Test/Tasty/Run.hs
+++ b/Test/Tasty/Run.hs
@@ -19,6 +19,7 @@
 import Control.Exception as E
 import Control.Applicative
 import Control.Arrow
+import GHC.Conc (labelThread)
 
 import Test.Tasty.Core
 import Test.Tasty.Parallel
@@ -92,7 +93,8 @@
     -- If all initializers ran successfully, actually run the test.
     -- We run it in a separate thread, so that the test's exception
     -- handler doesn't interfere with our timeout.
-    withAsync (action yieldProgress) $ \asy ->
+    withAsync (action yieldProgress) $ \asy -> do
+      labelThread (asyncThreadId asy) "tasty_test_execution_thread"
       applyTimeout timeoutOpt $ wait asy
 
   -- no matter what, try to run each finalizer
diff --git a/tasty.cabal b/tasty.cabal
--- a/tasty.cabal
+++ b/tasty.cabal
@@ -2,7 +2,7 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                tasty
-version:             0.8.1.3
+version:             0.9.0.1
 synopsis:            Modern and extensible testing framework
 description:         Tasty is a modern testing framework for Haskell.
                      It lets you combine your unit tests, golden
@@ -53,7 +53,7 @@
     mtl,
     tagged >= 0.5,
     regex-tdfa-rc >= 1.1.8.2,
-    optparse-applicative >= 0.6,
+    optparse-applicative >= 0.10,
     deepseq >= 1.3,
     unbounded-delays >= 0.1,
     async >= 2.0,
