diff --git a/src/Wrecker/Options.hs b/src/Wrecker/Options.hs
--- a/src/Wrecker/Options.hs
+++ b/src/Wrecker/Options.hs
@@ -4,6 +4,7 @@
 
 import Control.Exception
 import Data.Monoid
+import Data.Semigroup (Semigroup(..))
 import Options.Applicative
 import Wrecker.Logger
 
@@ -104,6 +105,25 @@
     , mListTestGroups :: Maybe Bool
     } deriving (Show, Eq)
 
+instance Semigroup PartialOptions where
+    x <> y =
+        PartialOptions
+        { mConcurrency = mConcurrency x <|> mConcurrency y
+        , mBinCount = mBinCount x <|> mBinCount y
+        , mRunStyle = mRunStyle x <|> mRunStyle y
+        , mTimeoutTime = mTimeoutTime x <|> mTimeoutTime y
+        , mDisplayMode = mDisplayMode x <|> mDisplayMode y
+        , mLogLevel = mLogLevel x <|> mLogLevel y
+        , mLogFmt = mLogFmt x <|> mLogFmt y
+        , mMatch = mMatch x <|> mMatch y
+        , mRequestNameColumnSize = mRequestNameColumnSize x <|> mRequestNameColumnSize y
+        , mOutputFilePath = mOutputFilePath x <|> mOutputFilePath y
+        , mSilent = mSilent x <|> mSilent y
+        , murlDisplay = murlDisplay x <|> murlDisplay y
+        , mRecordQuery = mRecordQuery x <|> mRecordQuery y
+        , mListTestGroups = mListTestGroups x <|> mListTestGroups y
+        }
+
 instance Monoid PartialOptions where
     mempty =
         PartialOptions
@@ -122,23 +142,7 @@
         , mRecordQuery = Just $ recordQuery defaultOptions
         , mListTestGroups = Just $ listTestGroups defaultOptions
         }
-    mappend x y =
-        PartialOptions
-        { mConcurrency = mConcurrency x <|> mConcurrency y
-        , mBinCount = mBinCount x <|> mBinCount y
-        , mRunStyle = mRunStyle x <|> mRunStyle y
-        , mTimeoutTime = mTimeoutTime x <|> mTimeoutTime y
-        , mDisplayMode = mDisplayMode x <|> mDisplayMode y
-        , mLogLevel = mLogLevel x <|> mLogLevel y
-        , mLogFmt = mLogFmt x <|> mLogFmt y
-        , mMatch = mMatch x <|> mMatch y
-        , mRequestNameColumnSize = mRequestNameColumnSize x <|> mRequestNameColumnSize y
-        , mOutputFilePath = mOutputFilePath x <|> mOutputFilePath y
-        , mSilent = mSilent x <|> mSilent y
-        , murlDisplay = murlDisplay x <|> murlDisplay y
-        , mRecordQuery = mRecordQuery x <|> mRecordQuery y
-        , mListTestGroups = mListTestGroups x <|> mListTestGroups y
-        }
+    mappend = (<>)
 
 completeOptions :: PartialOptions -> Maybe Options
 completeOptions options =
diff --git a/src/Wrecker/Statistics.hs b/src/Wrecker/Statistics.hs
--- a/src/Wrecker/Statistics.hs
+++ b/src/Wrecker/Statistics.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE RecordWildCards, BangPatterns, LambdaCase,
-  OverloadedStrings, DataKinds, NamedFieldPuns #-}
+  OverloadedStrings, DataKinds, NamedFieldPuns, CPP #-}
 
 module Wrecker.Statistics
     ( Statistics(..)
@@ -18,6 +18,9 @@
 import Data.List (sortBy)
 import Data.Maybe (fromMaybe)
 import qualified Data.TDigest as TD
+#if MIN_VERSION_tdigest(0,2,1)
+import qualified Data.TDigest.Postprocess as TD (totalWeight)
+#endif
 import qualified Data.Text as T
 import qualified Network.URI as URI
 import Text.Printf
diff --git a/wrecker.cabal b/wrecker.cabal
--- a/wrecker.cabal
+++ b/wrecker.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.20.0.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 4678f27398b397071d5c9250472f0c163cc8be560f230e0ee694dc3543dfd64a
+-- hash: 7d43e3006fe9c4cfc7330e32308be6e47609f6fb6323018fea6a12ff4932382c
 
 name:           wrecker
-version:        1.3.1.0
+version:        1.3.2.0
 synopsis:       An HTTP Performance Benchmarker
 description:    'wrecker' is a library and executable for creating HTTP benchmarks. It is designed for
                 benchmarking a series of dependent requests.
@@ -21,13 +23,24 @@
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 
 source-repository head
   type: git
   location: https://github.com/lorenzo/wrecker
 
 library
+  exposed-modules:
+      Wrecker
+      Wrecker.Recorder
+      Wrecker.Runner
+      Wrecker.Main
+      Wrecker.Options
+      Wrecker.Statistics
+      Wrecker.Logger
+      Network.Wreq.Wrecker
+      Network.Wreq.Wrecker.API
+  other-modules:
+      Paths_wrecker
   hs-source-dirs:
       src
   ghc-options: -Wall -fno-warn-unused-do-bind
@@ -82,22 +95,12 @@
     , vector >=0.10.12
     , vty >=5.11
     , wreq >=0.5.0
-  exposed-modules:
-      Wrecker
-      Wrecker.Recorder
-      Wrecker.Runner
-      Wrecker.Main
-      Wrecker.Options
-      Wrecker.Statistics
-      Wrecker.Logger
-      Network.Wreq.Wrecker
-      Network.Wreq.Wrecker.API
-  other-modules:
-      Paths_wrecker
   default-language: Haskell2010
 
 executable wreck
   main-is: Main.hs
+  other-modules:
+      Paths_wrecker
   hs-source-dirs:
       app
   ghc-options: -Wall -fno-warn-unused-do-bind -O2 -threaded -rtsopts "-with-rtsopts=-N -I0 -qg"
@@ -112,6 +115,4 @@
     , transformers
     , wrecker
     , wreq
-  other-modules:
-      Paths_wrecker
   default-language: Haskell2010
