diff --git a/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs b/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
new file mode 100644
--- /dev/null
+++ b/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE CPP #-}
+
+-- | Functions that depend on the version of the @time@ library
+
+module Data.Time.LocalTime.TimeZone.Internal.TimeVersion
+(
+   mapBuiltTime
+ , mapFormatCharacter
+)
+where
+
+#if MIN_VERSION_time(1,6,0)
+
+mapBuiltTime :: Functor f => (a -> b) -> f a -> f b
+mapBuiltTime = fmap
+
+#else
+
+mapBuiltTime :: a -> a
+mapBuiltTime = id
+
+#endif
+
+#if MIN_VERSION_time(1,9,1)
+
+mapFormatCharacter :: (a -> b) -> Maybe (x -> b -> String) -> Maybe (x -> a -> String)
+mapFormatCharacter f = fmap (\g x -> g x . f)
+
+#elif MIN_VERSION_time(1,8,0)
+
+mapFormatCharacter ::
+  (a -> b) -> (c -> d -> e -> b -> z) -> c -> d -> e -> a -> z
+mapFormatCharacter f g locale mpado mwidth = g locale mpado mwidth . f
+
+#else
+
+mapFormatCharacter :: (a -> b) -> (c -> d -> b -> z) -> c -> d -> a -> z
+mapFormatCharacter f g locale mpado = g locale mpado . f
+
+#endif
diff --git a/Data/Time/LocalTime/TimeZone/Series.hs b/Data/Time/LocalTime/TimeZone/Series.hs
--- a/Data/Time/LocalTime/TimeZone/Series.hs
+++ b/Data/Time/LocalTime/TimeZone/Series.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- | A @TimeZoneSeries@ describes a timezone by specifying the various
 -- clock settings that occurred in the past and are scheduled to occur
 -- in the future for the timezone.
@@ -28,8 +30,12 @@
 
 import Data.Time (UTCTime, LocalTime, TimeZone(timeZoneSummerOnly),
                   ZonedTime(ZonedTime),
-                  ParseTime(buildTime), FormatTime(formatCharacter),
                   utcToLocalTime, localTimeToUTC)
+#if MIN_VERSION_time(1,9,1)
+import Data.Time.Format.Internal (FormatTime(formatCharacter), ParseTime(buildTime))
+#else
+import Data.Time (FormatTime(formatCharacter), ParseTime(buildTime))
+#endif
 import Data.List (partition)
 import Data.Maybe (listToMaybe, fromMaybe)
 import Data.Typeable (Typeable)
@@ -97,7 +103,7 @@
     tzs = map snd cs
 
 instance FormatTime TimeZoneSeries where
-  formatCharacter = 
+  formatCharacter =
     fmap (mapFormatCharacter latestNonSummer) .
     formatCharacter
 
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2016 Yitzchak Gale. All rights reserved.
+Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@
 packages for more information about reading and creating Olson
 timezone files.
 
-Copyright (c) 2010-2016 Yitzchak Gale. All rights reserved.
+Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
 
 For licensing information, see the BSD3-style license in the file
 LICENSE that was originally distributed by the author together with
diff --git a/time_1_6_and_1_7/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs b/time_1_6_and_1_7/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
deleted file mode 100644
--- a/time_1_6_and_1_7/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
+++ /dev/null
@@ -1,16 +0,0 @@
--- | Functions that depend on the version of the @time@ library
-
-module Data.Time.LocalTime.TimeZone.Internal.TimeVersion
-(
-   mapBuiltTime
- , mapFormatCharacter
-)
-where
-
--- | Map over 'Maybe' for 'buildTime' for post-1.6 time library.
-mapBuiltTime :: Functor f => (a -> b) -> f a -> f b
-mapBuiltTime = fmap
-
--- | Map for 'formatCharacter' for pre-1.8 time library.
-mapFormatCharacter :: (a -> b) -> (c -> d -> b -> z) -> c -> d -> a -> z
-mapFormatCharacter f g locale mpado = g locale mpado . f
diff --git a/time_post_1_8/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs b/time_post_1_8/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
deleted file mode 100644
--- a/time_post_1_8/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
+++ /dev/null
@@ -1,17 +0,0 @@
--- | Functions that depend on the version of the @time@ library
-
-module Data.Time.LocalTime.TimeZone.Internal.TimeVersion
-(
-   mapBuiltTime
- , mapFormatCharacter
-)
-where
-
--- | Map over 'Maybe' for 'buildTime' for post-1.6 time library.
-mapBuiltTime :: Functor f => (a -> b) -> f a -> f b
-mapBuiltTime = fmap
-
--- | Map for 'formatCharacter' for post-1.8 time library.
-mapFormatCharacter ::
-  (a -> b) -> (c -> d -> e -> b -> z) -> c -> d -> e -> a -> z
-mapFormatCharacter f g locale mpado mwidth = g locale mpado mwidth . f
diff --git a/time_pre_1_6/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs b/time_pre_1_6/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
deleted file mode 100644
--- a/time_pre_1_6/Data/Time/LocalTime/TimeZone/Internal/TimeVersion.hs
+++ /dev/null
@@ -1,16 +0,0 @@
--- | Functions that depend on the version of the @time@ library
-
-module Data.Time.LocalTime.TimeZone.Internal.TimeVersion
-(
-   mapBuiltTime
- , mapFormatCharacter
-)
-where
-
--- | No mapping needed for 'buildTime' for pre-1.6 time library.
-mapBuiltTime :: a -> a
-mapBuiltTime = id
-
--- | Map for 'formatCharacter' for pre-1.8 time library.
-mapFormatCharacter :: (a -> b) -> (c -> d -> b -> z) -> c -> d -> a -> z
-mapFormatCharacter f g locale mpado = g locale mpado . f
diff --git a/timezone-series.cabal b/timezone-series.cabal
--- a/timezone-series.cabal
+++ b/timezone-series.cabal
@@ -1,5 +1,5 @@
 Name:                timezone-series
-Version:             0.1.8
+Version:             0.1.9
 Synopsis:            Enhanced timezone handling for Data.Time
 Description:         This package endows Data.Time, from the time
                      package, with several data types and functions
@@ -14,44 +14,23 @@
 License-file:        LICENSE
 Author:              Yitzchak Gale
 Maintainer:          yitz@sefer.org
-Copyright:           Copyright (c) 2010-2015 Yitzchak Gale. All rights reserved.
+Copyright:           Copyright (c) 2010-2018 Yitzchak Gale. All rights reserved.
 Category:            Data
 Build-type:          Simple
 Extra-source-files:  README.md
 Cabal-version:       >=1.10
-Tested-with:         GHC > 7.4 && < 8.1
+Tested-with:         GHC > 7.4 && < 8.5
 
 Source-repository HEAD
   type:              git
   location:          https://github.com/ygale/timezone-series.git
 
-Flag time_pre_1_6
-  Description:       Use version < 1.6 of the time library
-  Default:           False
-
-Flag time_1_6_and_1_7
-  Description:       Use version >= 1.6 and < 1.8 of the time library
-  Default:           False
-
 Library
   Default-language:    Haskell2010
   Hs-source-dirs:      .
-  if flag(time_pre_1_6)
-    Hs-source-dirs:    time_pre_1_6
-  else
-    if flag(time_1_6_and_1_7)
-      Hs-source-dirs:  time_1_6_and_1_7
-    else
-      Hs-source-dirs:  time_post_1_8
   Exposed-modules:     Data.Time.LocalTime.TimeZone.Series
   Other-modules:       Data.Time.LocalTime.TimeZone.Internal.TimeVersion
   Default-extensions:  DeriveDataTypeable
   Build-depends:       base >= 4.4 && < 5
                      , deepseq
-  if flag(time_pre_1_6)
-    Build-depends:     time >= 1.1.4 && < 1.6
-  else
-    if flag(time_1_6_and_1_7)
-      Build-depends:   time >= 1.6 && < 1.8
-    else
-      Build-depends:   time >= 1.8 && < 1.9
+                     , time (>= 1.1.4 && < 1.9) || (>= 1.9.1 && < 1.10)
