diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,16 @@
 o'clock uses [PVP Versioning][1].
 The change log is available [on GitHub][2].
 
+1.1.0
+=====
+
+* [#110](https://github.com/serokell/o-clock/issues/110):
+  Resurrect `o-clock` in nightly resolver. Specifically:
+  + Explicitly support GHC-8.8.
+  + Bump many upper bounds.
+  + Make benchmarks not buildable by default.
+  + Drop support for GHC-8.0 and GHC-8.2.
+
 1.0.0.1
 =======
 
diff --git a/README.lhs b/README.lhs
--- a/README.lhs
+++ b/README.lhs
@@ -85,9 +85,7 @@
 
 module Main where
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 import Time (type (*))
-#endif
 import Time ((:%), (-:-), Time, Hour, UnitName,floorUnit, hour, seriesF, toUnit)
 
 ```
@@ -99,18 +97,10 @@
 
 ```haskell
 -- | Time unit for a working day (8 hours).
-#if ( __GLASGOW_HASKELL__ >= 804 )
 type WorkDay = 8 * Hour
-#else
-type WorkDay = 28800 :% 1
-#endif
 
 -- | Time unit for a work week (5 working days).
-#if ( __GLASGOW_HASKELL__ >= 804 )
 type WorkWeek = 5 * WorkDay
-#else
-type WorkWeek = 144000 :% 1
-#endif
 
 -- this allows to use 'Show' and 'Read' functions for our time units
 type instance UnitName (28800  :% 1) = "wd"  -- One WorkDay  contains 28800  seconds
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -85,9 +85,7 @@
 
 module Main where
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 import Time (type (*))
-#endif
 import Time ((:%), (-:-), Time, Hour, UnitName,floorUnit, hour, seriesF, toUnit)
 
 ```
@@ -99,18 +97,10 @@
 
 ```haskell
 -- | Time unit for a working day (8 hours).
-#if ( __GLASGOW_HASKELL__ >= 804 )
 type WorkDay = 8 * Hour
-#else
-type WorkDay = 28800 :% 1
-#endif
 
 -- | Time unit for a work week (5 working days).
-#if ( __GLASGOW_HASKELL__ >= 804 )
 type WorkWeek = 5 * WorkDay
-#else
-type WorkWeek = 144000 :% 1
-#endif
 
 -- this allows to use 'Show' and 'Read' functions for our time units
 type instance UnitName (28800  :% 1) = "wd"  -- One WorkDay  contains 28800  seconds
diff --git a/o-clock.cabal b/o-clock.cabal
--- a/o-clock.cabal
+++ b/o-clock.cabal
@@ -1,5 +1,5 @@
 name:                o-clock
-version:             1.0.0.1
+version:             1.1.0
 synopsis:            Type-safe time library.
 description:         See README.md for details.
 homepage:            https://github.com/serokell/o-clock
@@ -16,10 +16,11 @@
                    , README.md
                    , README.lhs
 cabal-version:       2.0
-tested-with:         GHC == 8.0.2
-                   , GHC == 8.2.2
-                   , GHC == 8.4.3
+tested-with:         GHC == 8.4.3
+                   , GHC == 8.4.4
                    , GHC == 8.6.1
+                   , GHC == 8.6.5
+                   , GHC == 8.8.1
 
 source-repository head
   type:     git
@@ -46,13 +47,13 @@
                      , text
     cpp-options:       -DHAS_aeson
   if flag(hashable)
-    build-depends:     hashable >= 1.2.6 && < 1.3
+    build-depends:     hashable >= 1.2.6 && < 1.4
     cpp-options:       -DHAS_hashable
   if flag(deepseq)
     build-depends:     deepseq  ^>= 1.4
     cpp-options:       -DHAS_deepseq
   if flag(serialise)
-    build-depends:     serialise >= 0.2
+    build-depends:     serialise >= 0.2 && < 0.3
     cpp-options:       -DHAS_serialise
 
 executable play-o-clock
@@ -76,11 +77,11 @@
 
   build-depends:       base            >= 4.9  && < 5
                      , o-clock
-                     , hedgehog       ^>= 0.6
-                     , tasty          >= 0.12 && < 1.2
-                     , tasty-hedgehog >= 0.1 && < 0.3
+                     , hedgehog       >= 0.6 && < 1.1
+                     , tasty          >= 0.12 && < 1.3
+                     , tasty-hedgehog >= 0.1 && < 1.1
                      , tasty-hspec    ^>= 1.1.3
-                     , type-spec      ^>= 0.3.0.1
+                     , type-spec      >= 0.3.0.1 && < 0.5
 
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
   default-language:    Haskell2010
@@ -95,7 +96,7 @@
   build-tool-depends:  doctest:doctest
   build-depends:       base    >= 4.10 && < 5
                      , doctest ^>= 0.16
-                     , Glob    ^>= 0.9
+                     , Glob    >= 0.9 && < 0.11
   ghc-options:         -Wall -threaded -rtsopts -with-rtsopts=-N
   default-language:    Haskell2010
 
@@ -125,6 +126,9 @@
     build-depends:     deepseq    >= 1.4
     cpp-options:       -DNO_deepseq
 
+  if !flag(bench-buildable)
+    buildable:         False
+
   default-extensions:  OverloadedStrings
                        RecordWildCards
 
@@ -144,4 +148,8 @@
 
 flag serialise
   description:         Provide instances for @serialise@
+  default:             False
+
+flag bench-buildable
+  description:         Make benchmarks buildable
   default:             False
diff --git a/src/Time/Rational.hs b/src/Time/Rational.hs
--- a/src/Time/Rational.hs
+++ b/src/Time/Rational.hs
@@ -16,27 +16,21 @@
 module Time.Rational
        ( Rat (..)
        , type (:%)
-#if ( __GLASGOW_HASKELL__ >= 804 )
        , type (%)
        , type (*)
        , type (/)
-#endif
        , MulK
        , DivK
-#if ( __GLASGOW_HASKELL__ >= 804 )
        , Gcd
        , Normalize
        , DivRat
        , type (>=%)
-#endif
 
         -- Utilities
        , RatioNat
        , KnownRat (..)
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
        , withRuntimeDivRat
-#endif
        , KnownDivRat
        ) where
 
@@ -44,24 +38,9 @@
 import Data.Proxy (Proxy (..))
 import GHC.Natural (Natural)
 import GHC.Real (Ratio ((:%)))
-
-#if ( __GLASGOW_HASKELL__ >= 804 )
-import GHC.TypeNats (Div, Mod, type (<=?))
-#endif
-
-#if ( __GLASGOW_HASKELL__ >= 802 )
-import GHC.TypeNats (KnownNat, Nat, natVal)
-#else
-import GHC.TypeLits (KnownNat, Nat, natVal)
-#endif
-
-#if ( __GLASGOW_HASKELL__ >= 804 )
-import Unsafe.Coerce (unsafeCoerce)
-#endif
-
-#if ( __GLASGOW_HASKELL__ >= 804 )
+import GHC.TypeNats (Div, Mod, type (<=?), KnownNat, Nat, natVal)
 import qualified GHC.TypeNats
-#endif
+import Unsafe.Coerce (unsafeCoerce)
 
 -- | Data structure represents the rational number.
 -- Rational number can be represented as a pair of
@@ -85,7 +64,6 @@
 type instance DivK Rat Nat = Rat
 type instance DivK Nat Rat = Rat
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 -- | Overloaded multiplication.
 type family (*) (a :: k1) (b :: k2) :: MulK k1 k2
 
@@ -101,12 +79,10 @@
 type instance (a :: Rat) / (b :: Rat) = DivRat a b
 type instance (a :: Rat) / (b :: Nat) = DivRatNat a b
 type instance (a :: Nat) / (b :: Rat) = DivRat (a :% 1) b
-#endif
 
 -- | More convenient name for promoted constructor of 'Rat'.
 type (:%) = '(::%)
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 -- | Type family for normalized pair of 'Nat's — 'Rat'.
 type family (m :: Nat) % (n :: Nat) :: Rat where
     a % b = Normalize (a :% b)
@@ -213,7 +189,6 @@
 type family (m :: Rat) >=% (n :: Rat) :: Bool where
     (a :% b) >=% (c :% d) = c * b <=? a * d
 
-#endif
 
 -- | Rational numbers, with numerator and denominator of 'Natural' type.
 type RatioNat = Ratio Natural
@@ -223,13 +198,8 @@
     ratVal :: RatioNat
 
 instance (KnownNat a, KnownNat b) => KnownRat (a :% b) where
-#if ( __GLASGOW_HASKELL__ >= 802 )
     ratVal = natVal (Proxy @a) :% natVal (Proxy @b)
-#else
-    ratVal = fromIntegral (natVal (Proxy @a)) :% fromIntegral (natVal (Proxy @b))
-#endif
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 newtype KnownRatDict (unit :: Rat) r = MkKnownRatDict (KnownRat unit => r)
 
 giftRat :: forall (unit :: Rat) r . (KnownRat unit => r) -> RatioNat -> r
@@ -240,12 +210,9 @@
 withRuntimeDivRat :: forall (a :: Rat) (b :: Rat) r . (KnownRat a, KnownRat b) => (KnownRat (a / b) => r) -> r
 withRuntimeDivRat r = giftRat @(a / b) r (ratVal @a / ratVal @b)
 {-# INLINE withRuntimeDivRat #-}
-#endif
 
 -- | Constraint alias for 'DivRat' units.
 type KnownDivRat a b = ( KnownRat a
                        , KnownRat b
-#if ( __GLASGOW_HASKELL__ >= 804 )
                        , KnownRat (a / b)
-#endif
                        )
diff --git a/src/Time/Series.hs b/src/Time/Series.hs
--- a/src/Time/Series.hs
+++ b/src/Time/Series.hs
@@ -12,9 +12,7 @@
 
 module Time.Series
        ( AllTimes
-#if ( __GLASGOW_HASKELL__ >= 804 )
        , type (...)
-#endif
          -- * Formatting
        , SeriesF (..)
        , unitsF
@@ -25,20 +23,18 @@
        ) where
 
 import Data.Char (isDigit, isLetter)
-import Data.Semigroup ((<>))
-import Text.Read (readMaybe)
-#if ( __GLASGOW_HASKELL__ >= 804 )
 import Data.Kind (Constraint)
+import Data.Semigroup ((<>))
 import Data.Type.Bool (type (&&), If)
 import Data.Type.Equality (type (==))
-import GHC.TypeLits (TypeError, ErrorMessage (Text))
+import GHC.TypeLits (ErrorMessage (Text), TypeError)
+import Text.Read (readMaybe)
 
 import Time.Rational (type (>=%), withRuntimeDivRat)
-#endif
 import Time.Rational (Rat)
+import Time.Timestamp ((-:-))
 import Time.Units (Day, Fortnight, Hour, KnownRatName, Microsecond, Millisecond, Minute, Nanosecond,
                    Picosecond, Second, Time (..), Week, floorUnit, toUnit)
-import Time.Timestamp ((-:-))
 
 -- $setup
 -- >>> import Time.Units (Time (..), fortnight, hour, minute, ms, sec)
@@ -53,7 +49,6 @@
    , Millisecond , Microsecond, Nanosecond, Picosecond
    ]
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 {- | Creates the list of time units in descending order by provided
 the highest and the lowest bound of the desired list.
 Throws the error when time units are not in the right order.
@@ -90,7 +85,6 @@
 type family DescendingConstraint (b :: Bool) :: Constraint where
     DescendingConstraint 'True  = ()  -- empty constraint; always satisfiable
     DescendingConstraint 'False = TypeError ('Text "List of units should be in descending order")
-#endif
 
 {- | Class for time formatting.
 
@@ -117,7 +111,6 @@
 The received list should be in descending order. It would be verified at compile-time.
 Example of the error from @ghci@:
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 >>> seriesF @'[Millisecond, Second] (minute 42)
 ...
     • List of units should be in descending order
@@ -125,7 +118,6 @@
       In an equation for ‘it’:
           it = seriesF @'[Millisecond, Second] (minute 42)
 ...
-#endif
 
 -}
 class SeriesF (units :: [Rat]) where
@@ -141,37 +133,23 @@
     seriesF :: forall (someUnit :: Rat) . KnownRatName someUnit
             => Time someUnit -> String
     seriesF t =
-#if ( __GLASGOW_HASKELL__ >= 804 )
         let newTime = withRuntimeDivRat @someUnit @unit $ toUnit @unit t
-#else
-        let newTime = toUnit @unit t
-#endif
         in show newTime
 
 instance ( KnownRatName unit
          , SeriesF (nextUnit : units)
-#if ( __GLASGOW_HASKELL__ >= 804 )
          , DescendingConstraint (IsDescending (unit ': nextUnit ': units))
-#endif
          )
     => SeriesF (unit ': nextUnit ': units :: [Rat]) where
     seriesF :: forall (someUnit :: Rat) . KnownRatName someUnit
             => Time someUnit -> String
-#if ( __GLASGOW_HASKELL__ >= 804 )
     seriesF t = let newUnit = withRuntimeDivRat @someUnit @unit $ toUnit @unit t
-#else
-    seriesF t = let newUnit = toUnit @unit t
-#endif
                     flooredNewUnit = floorUnit newUnit
                     timeStr = case flooredNewUnit of
                                    Time 0 -> ""
-                                   _ -> show flooredNewUnit
+                                   _      -> show flooredNewUnit
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
                     nextUnit = withRuntimeDivRat @unit @unit $ newUnit -:- flooredNewUnit
-#else
-                    nextUnit = newUnit -:- flooredNewUnit
-#endif
                 in if nextUnit == Time 0
                    then show newUnit
                    else timeStr ++ seriesF @(nextUnit ': units) @unit nextUnit
@@ -239,9 +217,7 @@
 
 instance ( KnownRatName unit
          , SeriesP (nextUnit : units)
-#if ( __GLASGOW_HASKELL__ >= 804 )
          , DescendingConstraint (IsDescending (unit ': nextUnit ': units))
-#endif
          )
          => SeriesP (unit ': nextUnit ': units :: [Rat]) where
     seriesP :: forall (someUnit :: Rat) . KnownRatName someUnit
@@ -273,7 +249,5 @@
 readMaybeTime :: forall (unit :: Rat) (someUnit :: Rat) . (KnownRatName unit, KnownRatName someUnit)
               => String -> Maybe (Time someUnit)
 readMaybeTime str =
-#if ( __GLASGOW_HASKELL__ >= 804 )
     withRuntimeDivRat @unit @someUnit $
-#endif
         toUnit @someUnit <$> (readMaybe @(Time unit) str)
diff --git a/src/Time/Units.hs b/src/Time/Units.hs
--- a/src/Time/Units.hs
+++ b/src/Time/Units.hs
@@ -96,10 +96,7 @@
 import qualified Data.Text as Text
 #endif
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
-import Time.Rational (type (*), type (/))
-#endif
-import Time.Rational (type (:%), KnownDivRat, Rat, RatioNat, KnownRat, ratVal)
+import Time.Rational (type (*), type (/), type (:%), KnownDivRat, Rat, RatioNat, KnownRat, ratVal)
 
 import qualified Control.Concurrent as Concurrent
 import qualified System.CPUTime as CPUTime
@@ -109,7 +106,6 @@
 -- Units
 ----------------------------------------------------------------------------
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 type Second      = 1 / 1
 type Millisecond = Second      / 1000
 type Microsecond = Millisecond / 1000
@@ -122,20 +118,6 @@
 type Week        = 7  * Day
 type Fortnight   = 2  * Week
 
-#else
-type Second      = 1 :% 1
-type Millisecond = 1 :% 1000
-type Microsecond = 1 :% 1000000
-type Nanosecond  = 1 :% 1000000000
-type Picosecond  = 1 :% 1000000000000
-
-type Minute      = 60 :% 1
-type Hour        = 3600 :% 1
-type Day         = 86400 :% 1
-type Week        = 604800 :% 1
-type Fortnight   = 1209600 :% 1
-#endif
-
 ----------------------------------------------------------------------------
 -- Time data type
 ----------------------------------------------------------------------------
@@ -415,11 +397,7 @@
 toUnit :: forall (unitTo :: Rat) (unitFrom :: Rat) . KnownDivRat unitFrom unitTo
        => Time unitFrom
        -> Time unitTo
-#if ( __GLASGOW_HASKELL__ >= 804 )
 toUnit Time{..} = Time $ unTime * ratVal @(unitFrom / unitTo)
-#else
-toUnit (Time t) = Time (t * ratVal @unitFrom / ratVal @unitTo)
-#endif
 {-# INLINE toUnit #-}
 
 {- | Convenient version of 'Control.Concurrent.threadDelay' which takes
diff --git a/test/Test/Time/Property.hs b/test/Test/Time/Property.hs
--- a/test/Test/Time/Property.hs
+++ b/test/Test/Time/Property.hs
@@ -20,9 +20,7 @@
 import Time (Day, Fortnight, Hour, KnownRat, KnownRatName, Microsecond,
              Millisecond, Minute, Nanosecond, Picosecond, Rat, RatioNat, Second,
              Time (..), Week, toUnit, unitsF, unitsP)
-#if ( __GLASGOW_HASKELL__ >= 804 )
 import Time (withRuntimeDivRat)
-#endif
 
 import qualified Hedgehog.Gen as Gen
 import qualified Hedgehog.Range as Range
@@ -75,10 +73,8 @@
                 -> Time unitTo
                 -> m ()
     checkToUnit t _ =
-#if ( __GLASGOW_HASKELL__ >= 804 )
                       withRuntimeDivRat @unitTo @unitFrom $
                       withRuntimeDivRat @unitFrom @unitTo $
-#endif
                       toUnit (toUnit @unitTo t) === t
 
 -- | Verifier for @ seriesP . seriesF @.
diff --git a/test/Test/Time/TypeSpec.hs b/test/Test/Time/TypeSpec.hs
--- a/test/Test/Time/TypeSpec.hs
+++ b/test/Test/Time/TypeSpec.hs
@@ -10,25 +10,19 @@
 import Test.TypeSpec
 import Test.TypeSpecCrazy
 
-import Time.Rational ((:%))
-#if ( __GLASGOW_HASKELL__ >= 804 )
-import Time.Rational (type (/), type (>=%), Gcd, Normalize)
-#endif
-import Time.Units (Day, Fortnight, Hour, Microsecond, Millisecond, Minute,
-                   Nanosecond, Picosecond, Second, UnitName, Week)
+import Time.Rational (type (/), (:%), type (>=%), Gcd, Normalize)
+import Time.Units (Day, Fortnight, Hour, Microsecond, Millisecond, Minute, Nanosecond, Picosecond,
+                   Second, UnitName, Week)
 
 runTypeSpecTests :: IO ()
 runTypeSpecTests = do
-#if ( __GLASGOW_HASKELL__ >= 804 )
     print typeSpec_Gcd
     print typeSpec_Normalize
     print typeSpec_DivRat
     print typeSpec_Compare
-#endif
     print typeSpec_UnitCalculation
     print typeSpec_UnitNames
 
-#if ( __GLASGOW_HASKELL__ >= 804 )
 typeSpec_Gcd ::
 
   "GCD"
@@ -104,8 +98,6 @@
      -*- It "5%42 >=% 1%42 = True" (((5 :% 42) >=% (1 :% 42)) `Is` 'True)
 
 typeSpec_Compare = Valid
-
-#endif
 
 typeSpec_UnitCalculation ::
 
