diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Changelog for the Clash project
 
+## 1.2.4 *July 28th 2020*
+* Changed:
+  * Relaxed upper bound versions of `aeson` and `dlist`, in preparation for the new Stack LTS.
+  * Reverted changes to primitive definitions for 'zipWith', 'map', 'foldr', and 'init' introduced in 1.2.2. They have shown to cause problems in very specific circumstances.
+
 ## 1.2.3 *July 11th 2020*
 * Changed:
   * Upgrade to nixos 20.03. Nix and snap users will now use packages present in 20.03.
diff --git a/clash-prelude.cabal b/clash-prelude.cabal
--- a/clash-prelude.cabal
+++ b/clash-prelude.cabal
@@ -1,6 +1,6 @@
 Cabal-version:        2.2
 Name:                 clash-prelude
-Version:              1.2.3
+Version:              1.2.4
 Synopsis:             CAES Language for Synchronous Hardware - Prelude library
 Description:
   Clash is a functional hardware description language that borrows both its
@@ -324,7 +324,7 @@
                       half                      >= 0.2.2.3 && < 1.0,
                       interpolate               >= 0.2     && < 0.3,
                       lens                      >= 4.10    && < 4.20,
-                      recursion-schemes         >= 5.1     && < 5.2,
+                      recursion-schemes         >= 5.1     && < 5.3,
                       QuickCheck                >= 2.7     && < 2.15,
                       reflection                >= 2       && < 2.2,
                       singletons                >= 1.0     && < 3.0,
diff --git a/src/Clash/Sized/Vector.hs b/src/Clash/Sized/Vector.hs
--- a/src/Clash/Sized/Vector.hs
+++ b/src/Clash/Sized/Vector.hs
@@ -13,7 +13,6 @@
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE UndecidableInstances #-}
-{-# LANGUAGE QuasiQuotes #-}
 
 {-# LANGUAGE Trustworthy #-}
 
@@ -125,7 +124,6 @@
                                           repeat, replicate, reverse, scanl,
                                           scanr, splitAt, tail, take, unzip,
                                           unzip3, zip, zip3, zipWith, zipWith3)
-import qualified Data.String.Interpolate as I
 import qualified Prelude          as P
 import Test.QuickCheck            (Arbitrary (..), CoArbitrary (..))
 import Unsafe.Coerce              (unsafeCoerce)
@@ -1506,12 +1504,7 @@
   where
     xs = init (a `Cons` ws)
     ws = map f (lazyV xs)
-{-# NOINLINE iterateI #-}
-{-# ANN iterateI (InlinePrimitive [VHDL,Verilog,SystemVerilog] [I.i| [{
-    "BlackBoxHaskell": {
-        "name": "Clash.Sized.Vector.iterateI"
-      , "templateFunction": "Clash.Primitives.Sized.Vector.iterateBBF"
-    }}] |]) #-}
+{-# INLINE iterateI #-}
 
 -- | \"'unfoldr @n f s@\" builds a vector of length @n@ from a seed value @s@,
 -- where every element @a@ is created by successive calls of @f@ on @s@. Unlike
