diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,13 @@
 
 ## UNRELEASED
 
+## 3.0.2 - 2023-02-17
+
+* Added instances of `HasVariables` for Word types
+* Exported definition of `HasNoVariables` to make it useable
+  with deriving via in downstream packages (whoops!)
+* Fixed impossible to use `nextVar` arguments to `forAllUniqueDL`
+
 ## 3.0.1 - 2023-02-15
 
 * Remove template haskell dependency
diff --git a/quickcheck-dynamic.cabal b/quickcheck-dynamic.cabal
--- a/quickcheck-dynamic.cabal
+++ b/quickcheck-dynamic.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.2
 name:            quickcheck-dynamic
-version:         3.0.1
+version:         3.0.2
 license:         Apache-2.0
 license-files:
   LICENSE
diff --git a/src/Test/QuickCheck/DynamicLogic.hs b/src/Test/QuickCheck/DynamicLogic.hs
--- a/src/Test/QuickCheck/DynamicLogic.hs
+++ b/src/Test/QuickCheck/DynamicLogic.hs
@@ -125,12 +125,11 @@
 
 forAllUniqueDL ::
   (DL.DynLogicModel s, Testable a) =>
-  Int ->
   Annotated s ->
   DL s () ->
   (Actions s -> a) ->
   Property
-forAllUniqueDL nextVar initState d = DL.forAllUniqueScripts nextVar initState (runDL initState d)
+forAllUniqueDL initState d = DL.forAllUniqueScripts initState (runDL initState d)
 
 forAllDL ::
   (DL.DynLogicModel s, Testable a) =>
diff --git a/src/Test/QuickCheck/DynamicLogic/Internal.hs b/src/Test/QuickCheck/DynamicLogic/Internal.hs
--- a/src/Test/QuickCheck/DynamicLogic/Internal.hs
+++ b/src/Test/QuickCheck/DynamicLogic/Internal.hs
@@ -325,14 +325,14 @@
 -- | `Property` function suitable for formulae without choice.
 forAllUniqueScripts ::
   (DynLogicModel s, Testable a) =>
-  Int ->
   Annotated s ->
   DynFormula s ->
   (Actions s -> a) ->
   Property
-forAllUniqueScripts n s f k =
+forAllUniqueScripts s f k =
   QC.withSize $ \sz ->
     let d = unDynFormula f sz
+        n = unsafeNextVarIndex $ vars s
      in case generate chooseUniqueNextStep d n s 500 of
           Nothing -> counterexample "Generating Non-unique script in forAllUniqueScripts" False
           Just test -> validDLTest d test . applyMonitoring d test . property $ k (scriptFromDL test)
diff --git a/src/Test/QuickCheck/StateModel/Variables.hs b/src/Test/QuickCheck/StateModel/Variables.hs
--- a/src/Test/QuickCheck/StateModel/Variables.hs
+++ b/src/Test/QuickCheck/StateModel/Variables.hs
@@ -6,7 +6,7 @@
   Var,
   Any (..),
   HasVariables (..),
-  HasNoVariables,
+  HasNoVariables (..),
   VarContext,
   mkVar,
   ctxAtType,
@@ -16,6 +16,7 @@
   isWellTyped,
   allVariables,
   unsafeCoerceVar,
+  unsafeNextVarIndex
 ) where
 
 import Data.Data
@@ -26,6 +27,7 @@
 import Data.Set (Set)
 import Data.Set qualified as Set
 import GHC.Generics
+import GHC.Word
 import Test.QuickCheck as QC
 
 -- | A symbolic variable for a value of type `a`
@@ -65,6 +67,10 @@
 deriving via HasNoVariables Integer instance HasVariables Integer
 deriving via HasNoVariables Int instance HasVariables Int
 deriving via HasNoVariables Char instance HasVariables Char
+deriving via HasNoVariables Word8 instance HasVariables Word8
+deriving via HasNoVariables Word16 instance HasVariables Word16
+deriving via HasNoVariables Word32 instance HasVariables Word32
+deriving via HasNoVariables Word64 instance HasVariables Word64
 
 data Any f where
   Some :: (Typeable a, Eq (f a)) => f a -> Any f
@@ -119,6 +125,9 @@
 
 unsafeCoerceVar :: Var a -> Var b
 unsafeCoerceVar (Var i) = Var i
+
+unsafeNextVarIndex :: VarContext -> Int
+unsafeNextVarIndex (VarCtx vs) = 1 + maximum (0 : [ i | Some (Var i) <- Set.toList vs ])
 
 instance {-# OVERLAPPABLE #-} (Generic a, GenericHasVariables (Rep a)) => HasVariables a
 
