diff --git a/retroclash-lib.cabal b/retroclash-lib.cabal
--- a/retroclash-lib.cabal
+++ b/retroclash-lib.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.36.0.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 22e2ca64db5edae2c612198d87c170364e623ad7b1bbdbd6b31ad2769b65fa4b
+-- hash: 58f13b9d5070155fb407ce862cb2cbd07aa2d92494375efb694abdf430d58e25
 
 name:           retroclash-lib
-version:        0.1.2.2
+version:        0.1.2.3
 synopsis:       Code shared across the code samples in the book "Retrocomputing with Clash"
 description:    Clash components useful when implementing, or interfacing with,
                 retro-computers:
@@ -99,18 +99,18 @@
   build-depends:
       barbies >=2.0.1 && <2.1
     , base >=4.14 && <5
-    , clash-ghc >=1.4.2 && <1.5 || >=1.6.1 && <1.7 || >=1.8.1 && <1.9
-    , clash-lib >=1.4.2 && <1.5 || >=1.6.1 && <1.7 || >=1.8.1 && <1.9
-    , clash-prelude >=1.4.2 && <1.5 || >=1.6.1 && <1.7 || >=1.8.1 && <1.9
-    , containers
-    , ghc-typelits-extra
-    , ghc-typelits-knownnat
-    , ghc-typelits-natnormalise
-    , lens
+    , clash-ghc >=1.4.2 && <2.0
+    , clash-lib >=1.4.2 && <2.0
+    , clash-prelude >=1.4.2 && <2.0
+    , containers <0.8
+    , ghc-typelits-extra <=1.0
+    , ghc-typelits-knownnat <=1.0
+    , ghc-typelits-natnormalise <=1.0
+    , lens <6
     , lift-type ==0.1.*
     , monoidal-containers ==0.6.*
-    , mtl
-    , template-haskell
-    , th-orphans >=0.13.11
-    , transformers
+    , mtl <3
+    , template-haskell <2.24
+    , th-orphans >=0.13.11 && <0.14
+    , transformers <0.7
   default-language: Haskell2010
diff --git a/src/RetroClash/Clock.hs b/src/RetroClash/Clock.hs
--- a/src/RetroClash/Clock.hs
+++ b/src/RetroClash/Clock.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE ScopedTypeVariables, NumericUnderscores, PartialTypeSignatures #-}
+{-# LANGUAGE CPP #-}
 {-# OPTIONS_GHC -Wno-partial-type-signatures #-}
 module RetroClash.Clock
     ( HzToPeriod
@@ -16,6 +17,8 @@
 
 import Clash.Prelude
 
+#if MIN_VERSION_clash_prelude(1,9,0)
+#else
 type HzToPeriod (rate :: Nat) = Seconds 1 `Div` rate
 
 type Seconds      (s  :: Nat) = Milliseconds (1_000 * s)
@@ -25,6 +28,7 @@
 type Picoseconds  (ps :: Nat) = ps
 
 type ClockDivider dom ps = ps `Div` DomainPeriod dom
+#endif
 
 risePeriod
     :: forall ps dom. (HiddenClockResetEnable dom, _)
diff --git a/src/RetroClash/VGA.hs b/src/RetroClash/VGA.hs
--- a/src/RetroClash/VGA.hs
+++ b/src/RetroClash/VGA.hs
@@ -18,7 +18,6 @@
     ) where
 
 import Clash.Prelude
-import Clash.Class.HasDomain
 import RetroClash.Clock
 import RetroClash.Utils
 import Data.Maybe (isJust)
@@ -35,9 +34,6 @@
     , vgaG     :: "GREEN" ::: Signal dom (Unsigned g)
     , vgaB     :: "BLUE" ::: Signal dom (Unsigned b)
     }
-
-type instance HasDomain dom1 (VGAOut dom2 r g b) = DomEq dom1 dom2
-type instance TryDomain t (VGAOut dom r g b) = Found dom
 
 data VGADriver dom w h = VGADriver
     { vgaSync :: VGASync dom
