diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,7 @@
+0.1.8
+==========
+* Switched to ghc 8.8
+
 0.1.7
 ==========
 * Switch "script" output interpreter from "sh" to "/bin/env sh".
diff --git a/orgstat.cabal b/orgstat.cabal
--- a/orgstat.cabal
+++ b/orgstat.cabal
@@ -1,5 +1,5 @@
 name:                orgstat
-version:             0.1.7
+version:             0.1.8
 synopsis:            Statistics visualizer for org-mode
 license:             GPL-3
 license-file:        LICENSE
@@ -33,7 +33,7 @@
   build-depends:       aeson >= 0.11.2.0
                      , attoparsec
                      , ansi-terminal
-                     , base >=4.11 && <4.12
+                     , base >=4.13 && <4.14
                      , boxes >= 0.1.4
                      , bytestring
                      , colour >= 2.3.3
diff --git a/src/OrgStat/Ast.hs b/src/OrgStat/Ast.hs
--- a/src/OrgStat/Ast.hs
+++ b/src/OrgStat/Ast.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE RankNTypes      #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE RankNTypes, TemplateHaskell #-}
 
 -- | Abstract syntax tree for org.
 
@@ -22,7 +21,7 @@
        ) where
 
 import Control.Lens (ASetter', makeLenses)
-import Data.Time (LocalTime, NominalDiffTime, diffUTCTime, localTimeToUTC, localTimeToUTC, utc)
+import Data.Time (LocalTime, NominalDiffTime, diffUTCTime, localTimeToUTC, utc)
 
 import Universum
 
diff --git a/src/OrgStat/Config.hs b/src/OrgStat/Config.hs
--- a/src/OrgStat/Config.hs
+++ b/src/OrgStat/Config.hs
@@ -1,6 +1,4 @@
-{-# LANGUAGE RecordWildCards  #-}
-{-# LANGUAGE TemplateHaskell  #-}
-{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE RecordWildCards, TemplateHaskell, TypeApplications #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 
 -- | Configuration file types, together with json instances.
@@ -16,17 +14,16 @@
        , OrgStatConfig (..)
        ) where
 
-import Data.Aeson (FromJSON (..), Value (Object, String), withObject, withText, (.!=), (.:), (.:?))
+import Data.Aeson (FromJSON(..), Value(Object, String), withObject, withText, (.!=), (.:), (.:?))
 import Data.Aeson.Types (typeMismatch)
-import Data.List.NonEmpty (NonEmpty)
 import qualified Data.Text as T
 import Data.Time (LocalTime)
 import Data.Time.Format (defaultTimeLocale, parseTimeM)
 import Universum
 
-import OrgStat.Outputs.Types (BlockParams (..), ScriptParams (..), SummaryParams (..),
-                              TimelineParams (..))
-import OrgStat.Scope (AstPath (..), ScopeModifier (..))
+import OrgStat.Outputs.Types
+  (BlockParams(..), ScriptParams(..), SummaryParams(..), TimelineParams(..))
+import OrgStat.Scope (AstPath(..), ScopeModifier(..))
 import OrgStat.Util (parseColour)
 
 -- | Exception type for everything bad that happens with config,
diff --git a/src/OrgStat/Helpers.hs b/src/OrgStat/Helpers.hs
--- a/src/OrgStat/Helpers.hs
+++ b/src/OrgStat/Helpers.hs
@@ -12,14 +12,15 @@
 
 import Control.Lens (at, views, (.=))
 import qualified Data.List.NonEmpty as NE
-import Data.Time (LocalTime (..), TimeOfDay (..), addDays, getZonedTime, toGregorian,
-                  zonedTimeToLocalTime)
+import Data.Time
+  (LocalTime(..), TimeOfDay(..), addDays, getZonedTime, toGregorian, zonedTimeToLocalTime)
 import Data.Time.Calendar (addGregorianMonthsRollOver)
 import Data.Time.Calendar.WeekDate (toWeekDate)
 
-import OrgStat.Ast (Org (..), cutFromTo, mergeClocks, orgTitle)
-import OrgStat.Config (ConfDate (..), ConfOutput (..), ConfRange (..), ConfReport (..),
-                       ConfScope (..), ConfigException (..), OrgStatConfig (..))
+import OrgStat.Ast (Org(..), cutFromTo, mergeClocks, orgTitle)
+import OrgStat.Config
+  (ConfDate(..), ConfOutput(..), ConfRange(..), ConfReport(..), ConfScope(..), ConfigException(..),
+  OrgStatConfig(..))
 import OrgStat.IO (readOrgFile)
 import OrgStat.Scope (applyModifiers)
 import OrgStat.WorkMonad (WorkM, wcConfig, wdReadFiles, wdResolvedReports, wdResolvedScopes)
diff --git a/src/OrgStat/IO.hs b/src/OrgStat/IO.hs
--- a/src/OrgStat/IO.hs
+++ b/src/OrgStat/IO.hs
@@ -16,10 +16,10 @@
 import Data.Yaml (decodeEither')
 import System.Directory (doesFileExist)
 import System.FilePath (takeBaseName, takeExtension)
-import Turtle (ExitCode (..), procStrict)
+import Turtle (ExitCode(..), procStrict)
 
 import OrgStat.Ast (Org)
-import OrgStat.Config (ConfigException (ConfigParseException), OrgStatConfig)
+import OrgStat.Config (ConfigException(ConfigParseException), OrgStatConfig)
 import OrgStat.Logging
 import OrgStat.Parser (runParser)
 import OrgStat.Util (dropEnd)
diff --git a/src/OrgStat/Logging.hs b/src/OrgStat/Logging.hs
--- a/src/OrgStat/Logging.hs
+++ b/src/OrgStat/Logging.hs
@@ -18,11 +18,12 @@
 
 import Control.Concurrent.MVar (modifyMVar_, withMVar)
 import qualified Data.Text as T
-import Data.Time.Clock (UTCTime (..), getCurrentTime)
+import Data.Time.Clock (UTCTime(..), getCurrentTime)
 import Fmt (fmt, padRightF, (+|), (|+), (|++|))
 import Fmt.Time (dateDashF, hmsF, subsecondF, tzNameF)
-import System.Console.ANSI (Color (Blue, Green, Magenta, Red, Yellow), ColorIntensity (Vivid),
-                            ConsoleLayer (Foreground), SGR (Reset, SetColor), setSGRCode)
+import System.Console.ANSI
+  (Color(Blue, Green, Magenta, Red, Yellow), ColorIntensity(Vivid), ConsoleLayer(Foreground),
+  SGR(Reset, SetColor), setSGRCode)
 import System.IO.Unsafe (unsafePerformIO)
 
 
diff --git a/src/OrgStat/Logic.hs b/src/OrgStat/Logic.hs
--- a/src/OrgStat/Logic.hs
+++ b/src/OrgStat/Logic.hs
@@ -15,12 +15,12 @@
 import System.FilePath ((</>))
 import Turtle (shell)
 
-import OrgStat.CLI (CommonArgs (..))
-import OrgStat.Config (ConfOutput (..), ConfOutputType (..), OrgStatConfig (..))
+import OrgStat.CLI (CommonArgs(..))
+import OrgStat.Config (ConfOutput(..), ConfOutputType(..), OrgStatConfig(..))
 import OrgStat.Helpers (resolveOutput, resolveReport)
 import OrgStat.Logging (logDebug, logInfo)
-import OrgStat.Outputs (genBlockOutput, genSummaryOutput, processScriptOutput, processTimeline,
-                        writeReport)
+import OrgStat.Outputs
+  (genBlockOutput, genSummaryOutput, processScriptOutput, processTimeline, writeReport)
 import OrgStat.WorkMonad (WorkM, wcCommonArgs, wcConfig)
 
 -- | Main application logic.
diff --git a/src/OrgStat/Outputs/Block.hs b/src/OrgStat/Outputs/Block.hs
--- a/src/OrgStat/Outputs/Block.hs
+++ b/src/OrgStat/Outputs/Block.hs
@@ -12,7 +12,7 @@
 import Text.PrettyPrint.Boxes (center1, hsep, left, render, right, text, vcat)
 
 import OrgStat.Ast (Org, filterHasClock, orgSubtrees, orgTitle, orgTotalDuration)
-import OrgStat.Outputs.Types (BlockOutput (..), BlockParams (..))
+import OrgStat.Outputs.Types (BlockOutput(..), BlockParams(..))
 import OrgStat.Util (dropEnd, timeF)
 
 data BlockFrames = BlockFrames
diff --git a/src/OrgStat/Outputs/Class.hs b/src/OrgStat/Outputs/Class.hs
--- a/src/OrgStat/Outputs/Class.hs
+++ b/src/OrgStat/Outputs/Class.hs
@@ -11,7 +11,7 @@
 import qualified Diagrams.Prelude as D
 import System.FilePath (replaceExtension)
 
-import OrgStat.Outputs.Types (BlockOutput (..), SummaryOutput (..), TimelineOutput (..))
+import OrgStat.Outputs.Types (BlockOutput(..), SummaryOutput(..), TimelineOutput(..))
 
 -- | Things that reporters output an what we can do with them.
 class ReportOutput a where
diff --git a/src/OrgStat/Outputs/Script.hs b/src/OrgStat/Outputs/Script.hs
--- a/src/OrgStat/Outputs/Script.hs
+++ b/src/OrgStat/Outputs/Script.hs
@@ -16,7 +16,7 @@
 import OrgStat.Config (confReports, crName)
 import OrgStat.Helpers (resolveReport)
 import OrgStat.Logging
-import OrgStat.Outputs.Types (ScriptParams (..))
+import OrgStat.Outputs.Types (ScriptParams(..))
 import OrgStat.Util (timeF)
 import OrgStat.WorkMonad (WorkM, wcConfig)
 
diff --git a/src/OrgStat/Outputs/Summary.hs b/src/OrgStat/Outputs/Summary.hs
--- a/src/OrgStat/Outputs/Summary.hs
+++ b/src/OrgStat/Outputs/Summary.hs
@@ -12,7 +12,7 @@
 import OrgStat.Ast (filterHasClock, orgTotalDuration)
 import OrgStat.Config (confReports, crName)
 import OrgStat.Helpers (resolveReport)
-import OrgStat.Outputs.Types (SummaryOutput (..), SummaryParams (..))
+import OrgStat.Outputs.Types (SummaryOutput(..), SummaryParams(..))
 import OrgStat.Util (timeF)
 import OrgStat.WorkMonad (WorkM, wcConfig)
 
diff --git a/src/OrgStat/Outputs/Timeline.hs b/src/OrgStat/Outputs/Timeline.hs
--- a/src/OrgStat/Outputs/Timeline.hs
+++ b/src/OrgStat/Outputs/Timeline.hs
@@ -1,6 +1,4 @@
-{-# LANGUAGE RankNTypes          #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell     #-}
+{-# LANGUAGE RankNTypes, ScopedTypeVariables, TemplateHaskell #-}
 
 -- | Timeline reporting output. Prouces a svg with columns.
 
@@ -11,16 +9,17 @@
 import Data.Colour.CIE (luminance)
 import Data.List (lookup, nub)
 import qualified Data.Text as T
-import Data.Time (Day, DiffTime, LocalTime (..), defaultTimeLocale, formatTime, timeOfDayToTime)
+import Data.Time (Day, DiffTime, LocalTime(..), defaultTimeLocale, formatTime, timeOfDayToTime)
 import Diagrams.Backend.SVG (B)
 import qualified Diagrams.Prelude as D
 import qualified Prelude
 import Text.Printf (printf)
 import Universum
 
-import OrgStat.Ast (Clock (..), Org (..), orgClocks, traverseTree)
-import OrgStat.Outputs.Types (TimelineOutput (..), TimelineParams, tpBackground, tpColorSalt,
-                              tpColumnHeight, tpColumnWidth, tpLegend, tpTopDay)
+import OrgStat.Ast (Clock(..), Org(..), orgClocks, traverseTree)
+import OrgStat.Outputs.Types
+  (TimelineOutput(..), TimelineParams, tpBackground, tpColorSalt, tpColumnHeight, tpColumnWidth,
+  tpLegend, tpTopDay)
 import OrgStat.Util (addLocalTime, hashColour)
 
 
diff --git a/src/OrgStat/Outputs/Types.hs b/src/OrgStat/Outputs/Types.hs
--- a/src/OrgStat/Outputs/Types.hs
+++ b/src/OrgStat/Outputs/Types.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE RankNTypes      #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE RankNTypes, TemplateHaskell #-}
 -- | Types common among reports.
 
 module OrgStat.Outputs.Types
@@ -23,13 +22,13 @@
        , BlockOutput (..)
        ) where
 
-import           Universum
+import Universum
 
-import           Control.Lens         (makeLenses)
+import Control.Lens (makeLenses)
 
-import           Data.Default         (Default (..))
-import           Diagrams.Backend.SVG (B)
-import qualified Diagrams.Prelude     as D
+import Data.Default (Default(..))
+import Diagrams.Backend.SVG (B)
+import qualified Diagrams.Prelude as D
 
 ----------------------------------------------------------------------------
 -- Timeline
diff --git a/src/OrgStat/Parser.hs b/src/OrgStat/Parser.hs
--- a/src/OrgStat/Parser.hs
+++ b/src/OrgStat/Parser.hs
@@ -8,23 +8,21 @@
 
 import Universum
 
-import Control.Exception (Exception)
 import qualified Data.Attoparsec.Text as A
 import Data.Char (isSpace)
 import qualified Data.OrgMode.Parse as O
 import qualified Data.OrgMode.Types as O
 import qualified Data.Text as T
-import Data.Time (LocalTime (..), TimeOfDay (..), fromGregorian, getZonedTime, zonedTimeToLocalTime)
+import Data.Time (LocalTime(..), TimeOfDay(..), fromGregorian, getZonedTime, zonedTimeToLocalTime)
 import Data.Time.Calendar ()
 
-import OrgStat.Ast (Clock (..), Org (..), orgTags, traverseTree)
+import OrgStat.Ast (Clock(..), Org(..), orgTags, traverseTree)
 
 ----------------------------------------------------------------------------
 -- Exceptions
 ----------------------------------------------------------------------------
 
-data ParsingException =
-    ParsingException Text
+data ParsingException = ParsingException Text
     deriving (Show, Typeable)
 
 instance Exception ParsingException
diff --git a/src/OrgStat/Scope.hs b/src/OrgStat/Scope.hs
--- a/src/OrgStat/Scope.hs
+++ b/src/OrgStat/Scope.hs
@@ -1,7 +1,4 @@
-{-# LANGUAGE DeriveGeneric       #-}
-{-# LANGUAGE RankNTypes          #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell     #-}
+{-# LANGUAGE DeriveGeneric, RankNTypes, ScopedTypeVariables, TemplateHaskell #-}
 
 -- | This module defines how report input is formed.
 
diff --git a/src/OrgStat/Util.hs b/src/OrgStat/Util.hs
--- a/src/OrgStat/Util.hs
+++ b/src/OrgStat/Util.hs
@@ -18,11 +18,10 @@
 import Data.Char (isLower, toLower)
 import Data.Colour (Colour)
 import Data.Colour.CIE (luminance)
-import Data.Colour.SRGB (RGB (..), sRGB24, toSRGBBounded)
-import Data.Hashable (hashWithSalt)
+import Data.Colour.SRGB (RGB(..), sRGB24, toSRGBBounded)
 import Data.List (nub)
 import Data.List ((!!))
-import Data.Time (LocalTime (..), NominalDiffTime, addUTCTime, localTimeToUTC, utc, utcToLocalTime)
+import Data.Time (LocalTime(..), NominalDiffTime, addUTCTime, localTimeToUTC, utc, utcToLocalTime)
 import Universum
 
 -- | JSON/Yaml TH modifier. Each field of type "aoeuKek" turns into
diff --git a/src/OrgStat/WorkMonad.hs b/src/OrgStat/WorkMonad.hs
--- a/src/OrgStat/WorkMonad.hs
+++ b/src/OrgStat/WorkMonad.hs
@@ -17,7 +17,7 @@
 import Universum
 
 import Control.Lens (makeLenses)
-import Data.Default (Default (def))
+import Data.Default (Default(def))
 
 import OrgStat.Ast (Org)
 import OrgStat.CLI (CommonArgs)
diff --git a/src/cli/Main.hs b/src/cli/Main.hs
--- a/src/cli/Main.hs
+++ b/src/cli/Main.hs
@@ -1,22 +1,21 @@
-{-# LANGUAGE ApplicativeDo       #-}
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE ApplicativeDo, ScopedTypeVariables #-}
 
 module Main where
 
 import Universum
 
 import Data.Version (showVersion)
-import Options.Applicative.Simple (Parser, help, long, metavar, simpleOptions, strOption, switch,
-                                   value)
+import Options.Applicative.Simple
+  (Parser, help, long, metavar, simpleOptions, strOption, switch, value)
 import Paths_orgstat (version)
 import System.Directory (getHomeDirectory)
 import System.FilePath ((</>))
 
 import OrgStat.CLI (CommonArgs, parseCommonArgs)
 import OrgStat.IO (readConfig)
-import OrgStat.Logging (Severity (..), initLogging, logDebug, logError)
+import OrgStat.Logging (Severity(..), initLogging, logDebug, logError)
 import OrgStat.Logic (runOrgStat)
-import OrgStat.WorkMonad (WorkConfig (..), runWorkM)
+import OrgStat.WorkMonad (WorkConfig(..), runWorkM)
 
 data Args = Args
     { configPath :: !FilePath
diff --git a/test/GlobalSpec.hs b/test/GlobalSpec.hs
--- a/test/GlobalSpec.hs
+++ b/test/GlobalSpec.hs
@@ -7,16 +7,17 @@
 import qualified Data.List as L
 import qualified Data.Text as T
 import Data.Text.Arbitrary ()
-import Data.Time (LocalTime (..), TimeOfDay (..), getZonedTime, zonedTimeToLocalTime)
+import Data.Time (LocalTime(..), TimeOfDay(..), getZonedTime, zonedTimeToLocalTime)
 import Data.Time.Calendar (addGregorianMonthsClip, fromGregorian)
 import Test.Hspec (Spec, describe, runIO)
 import Test.Hspec.QuickCheck (prop)
-import Test.QuickCheck (Arbitrary (arbitrary), Gen, NonNegative (..), Positive (..), Small (..),
-                        choose, forAll, ioProperty, oneof, (.&&.), (===), (==>))
+import Test.QuickCheck
+  (Arbitrary(arbitrary), Gen, NonNegative(..), Positive(..), Small(..), choose, forAll, ioProperty,
+  oneof, (.&&.), (===), (==>))
 import Universum
 
-import OrgStat.Ast (Clock (..), Org (..), atDepth, mergeClocks, orgClocks)
-import OrgStat.Config (ConfDate (..), ConfRange (..))
+import OrgStat.Ast (Clock(..), Org(..), atDepth, mergeClocks, orgClocks)
+import OrgStat.Config (ConfDate(..), ConfRange(..))
 import OrgStat.Helpers (convertRange)
 import OrgStat.Util (addLocalTime, parseColour)
 
@@ -43,7 +44,8 @@
 
 instance Arbitrary Clock where
     arbitrary = do
-        [a,b] <- replicateM 2 arbitrary
+        a <- arbitrary
+        b <- arbitrary
         pure . (uncurry Clock) $ if a < b then (a,b) else (b,a)
 
 genOrgDepth :: Int -> Gen Org
