diff --git a/Data/Time/Calendar/Days.hs b/Data/Time/Calendar/Days.hs
index c09a273929783fc1de24b36e9416c47ae4c2a21b..6911833bc6284b336b5abce8de2bb94552dcefac 100644
--- a/Data/Time/Calendar/Days.hs
+++ b/Data/Time/Calendar/Days.hs
@@ -27,7 +27,7 @@ instance NFData Day where
 	rnf (ModifiedJulianDay a) = rnf a
 
 instance Typeable Day where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Calendar.Days.Day") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Calendar.Days" "Day") []
 
 -- necessary because H98 doesn't have "cunning newtype" derivation
 instance Enum Day where
diff --git a/Data/Time/Clock/Scale.hs b/Data/Time/Clock/Scale.hs
index ffa52a2c412de0ee5a4b5cd9f67f98118ad904c2..237a77bc0338221359d565f9d109d623adac86de 100644
--- a/Data/Time/Clock/Scale.hs
+++ b/Data/Time/Clock/Scale.hs
@@ -35,7 +35,7 @@ instance NFData UniversalTime where
 	rnf (ModJulianDate a) = rnf a
 
 instance Typeable UniversalTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.Scale.UniversalTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Clock.Scale" "UniversalTime") []
 
 -- | This is a length of time, as measured by a clock.
 -- Conversion functions will treat it as seconds.
@@ -55,7 +55,7 @@ newtype DiffTime = MkDiffTime Pico deriving (Eq,Ord
 instance NFData DiffTime -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable DiffTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.Scale.DiffTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Clock.Scale" "DiffTime") []
 
 -- necessary because H98 doesn't have "cunning newtype" derivation
 instance Enum DiffTime where
diff --git a/Data/Time/Clock/TAI.hs b/Data/Time/Clock/TAI.hs
index 77c2134cfe37f298720b163ce85672218aa097b5..5e6bfef413687aa37137cbd9790713867d534cfe 100644
--- a/Data/Time/Clock/TAI.hs
+++ b/Data/Time/Clock/TAI.hs
@@ -40,7 +40,7 @@ instance NFData AbsoluteTime where
 	rnf (MkAbsoluteTime a) = rnf a
 
 instance Typeable AbsoluteTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.TAI.AbsoluteTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Clock.TAI" "AbsoluteTime") []
 
 instance Show AbsoluteTime where
 	show t = show (utcToLocalTime utc (taiToUTCTime (const 0) t)) ++ " TAI" -- ugly, but standard apparently
diff --git a/Data/Time/Clock/UTC.hs b/Data/Time/Clock/UTC.hs
index 4f3c23a5db0ec28bbffa70de25b092a061482d30..da1ecc2600b7cf4950acac3d9bc8902b623a2c1c 100644
--- a/Data/Time/Clock/UTC.hs
+++ b/Data/Time/Clock/UTC.hs
@@ -45,7 +45,7 @@ instance NFData UTCTime where
 	rnf (UTCTime d t) = d `deepseq` t `deepseq` ()
 
 instance Typeable UTCTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.UTC.UTCTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Clock.UTC" "UTCTime") []
 
 instance Eq UTCTime where
 	(UTCTime da ta) == (UTCTime db tb) = (da == db) && (ta == tb)
@@ -75,7 +75,7 @@ newtype NominalDiffTime = MkNominalDiffTime Pico deriving (Eq,Ord
 instance NFData NominalDiffTime -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable NominalDiffTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.Clock.UTC.NominalDiffTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.Clock.UTC" "NominalDiffTime") []
 
 instance Enum NominalDiffTime where
 	succ (MkNominalDiffTime a) = MkNominalDiffTime (succ a)
diff --git a/Data/Time/LocalTime/LocalTime.hs b/Data/Time/LocalTime/LocalTime.hs
index feb0341da284c79ba73b4edcb902ed78e6893179..02f06a4925e2b7cfb4bbe214cb968b5e22dbfd76 100644
--- a/Data/Time/LocalTime/LocalTime.hs
+++ b/Data/Time/LocalTime/LocalTime.hs
@@ -44,7 +44,7 @@ instance NFData LocalTime where
 	rnf (LocalTime d t) = d `deepseq` t `deepseq` ()
 
 instance Typeable LocalTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.LocalTime.LocalTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.LocalTime.LocalTime" "LocalTime") []
 
 instance Show LocalTime where
 	show (LocalTime d t) = (showGregorian d) ++ " " ++ (show t)
@@ -87,7 +87,7 @@ instance NFData ZonedTime where
 	rnf (ZonedTime lt z) = lt `deepseq` z `deepseq` ()
 
 instance Typeable ZonedTime where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.LocalTime.ZonedTime") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.LocalTime.LocalTime" "ZonedTime") []
 
 utcToZonedTime :: TimeZone -> UTCTime -> ZonedTime
 utcToZonedTime zone time = ZonedTime (utcToLocalTime zone time) zone
diff --git a/Data/Time/LocalTime/TimeOfDay.hs b/Data/Time/LocalTime/TimeOfDay.hs
index ed0dbed4a6abc0d5330068bee1fca92dd35c07a8..8fdf53989c01e9375670811b922cc51ab1e646ab 100644
--- a/Data/Time/LocalTime/TimeOfDay.hs
+++ b/Data/Time/LocalTime/TimeOfDay.hs
@@ -43,7 +43,7 @@ instance NFData TimeOfDay where
 	rnf (TimeOfDay h m s) = h `deepseq` m `deepseq` s `seq` () -- FIXME: Data.Fixed had no NFData instances yet at time of writing
 
 instance Typeable TimeOfDay where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.TimeOfDay.TimeOfDay") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.LocalTime.TimeOfDay" "TimeOfDay") []
 
 -- | Hour zero
 midnight :: TimeOfDay
diff --git a/Data/Time/LocalTime/TimeZone.hs b/Data/Time/LocalTime/TimeZone.hs
index 16b2e52dce34453f234d4fa40666498b44fc5886..689288f2015774917b794c4c2d924946599db526 100644
--- a/Data/Time/LocalTime/TimeZone.hs
+++ b/Data/Time/LocalTime/TimeZone.hs
@@ -45,7 +45,7 @@ instance NFData TimeZone where
 	rnf (TimeZone m so n) = m `deepseq` so `deepseq` n `deepseq` ()
 
 instance Typeable TimeZone where
-	typeOf _ = mkTyConApp (mkTyCon "Data.Time.LocalTime.TimeZone.TimeZone") []
+	typeOf _ = mkTyConApp (mkTyCon3 "time" "Data.Time.LocalTime.TimeZone" "TimeZone") []
 
 -- | Create a nameless non-summer timezone for this number of minutes
 minutesToTimeZone :: Int -> TimeZone