diff --git a/hmatrix-nlopt.cabal b/hmatrix-nlopt.cabal
--- a/hmatrix-nlopt.cabal
+++ b/hmatrix-nlopt.cabal
@@ -1,5 +1,5 @@
 name:                hmatrix-nlopt
-version:             0.1.3.0
+version:             0.2.0.0
 synopsis:            Interface HMatrix with the NLOPT minimizer
 description:         A high-level interface to
                      <http://ab-initio.mit.edu/wiki/index.php/NLopt the NLOPT solvers>
@@ -14,7 +14,7 @@
 build-type:          Simple
 extra-source-files:  ChangeLog.md
 cabal-version:       >=1.10
-tested-with:         GHC == 8.4.3
+tested-with:         GHC == 9.0.2
 bug-reports:         https://github.com/peddie/hmatrix-nlopt/issues
 
 source-repository head
diff --git a/src/Numeric/NLOPT.hs b/src/Numeric/NLOPT.hs
--- a/src/Numeric/NLOPT.hs
+++ b/src/Numeric/NLOPT.hs
@@ -97,7 +97,6 @@
   ) where
 
 import Numeric.LinearAlgebra as HM
-import Numeric.LinearAlgebra (Vector, Matrix)
 import qualified Numeric.Optimization.NLOPT.Bindings as N
 
 import Data.List.NonEmpty (NonEmpty(..))
@@ -502,7 +501,7 @@
     -- | Controlled Random Search with Local Mutation
   | CRS2_LM Objective RandomSeed (Maybe Population)
     -- | Improved Stochastic Ranking Evolution Strategy
-  | ISRES Objective InequalityConstraints EqualityConstraints RandomSeed
+  | ISRES Objective InequalityConstraints EqualityConstraints RandomSeed (Maybe Population)
     -- | Evolutionary Algorithm
   | ESCH Objective
     -- | Original Multi-Level Single-Linkage
@@ -523,7 +522,7 @@
 algorithmEnumOfGlobal (STOGO _)                  = N.GD_STOGO
 algorithmEnumOfGlobal (STOGO_RAND _ _)           = N.GD_STOGO_RAND
 algorithmEnumOfGlobal (CRS2_LM _ _ _)            = N.GN_CRS2_LM
-algorithmEnumOfGlobal (ISRES _ _ _ _)            = N.GN_ISRES
+algorithmEnumOfGlobal (ISRES _ _ _ _ _)          = N.GN_ISRES
 algorithmEnumOfGlobal (ESCH _)                   = N.GN_ESCH
 algorithmEnumOfGlobal (MLSL _ _ _)               = N.G_MLSL
 algorithmEnumOfGlobal (MLSL_LDS _ _ _)           = N.G_MLSL_LDS
@@ -546,7 +545,7 @@
     go (ORIG_DIRECT_L o _)        = obj o
     go (STOGO_RAND o _)           = objD o
     go (CRS2_LM o _ _)            = obj o
-    go (ISRES o _ _ _)            = obj o
+    go (ISRES o _ _ _ _)          = obj o
     go (MLSL o _ _)               = obj o
     go (MLSL_LDS o _ _)           = obj o
 
@@ -568,7 +567,7 @@
     go (ORIG_DIRECT_L _ ineq)     = ic ineq
     go (STOGO_RAND _ s)           = seed s
     go (CRS2_LM _ s p)            = seed s *> pop p
-    go (ISRES _ ineq eq s)        = ic ineq *> ec eq *> seed s
+    go (ISRES _ ineq eq s p)      = ic ineq *> ec eq *> seed s *> pop p
     go (MLSL _ lp p)              = local lp *> pop p
     go (MLSL_LDS _ lp p)          = local lp *> pop p
     go _                          = return ()
@@ -594,13 +593,13 @@
 -- dimension.
 --
 -- >>> import Numeric.LinearAlgebra ( dot, fromList )
--- >>> let objf x = x `dot` x + 22                         -- define objective
--- >>> let stop = ObjectiveRelativeTolerance 1e-12 :| []   -- define stopping criterion
--- >>> let algorithm = ISRES objf [] [] (SeedValue 22)     -- specify algorithm
--- >>> let lowerbounds = fromList [-10, -10]               -- specify bounds
--- >>> let upperbounds = fromList [10, 10]                 -- specify bounds
+-- >>> let objf x = x `dot` x + 22                              -- define objective
+-- >>> let stop = ObjectiveRelativeTolerance 1e-12 :| []        -- define stopping criterion
+-- >>> let algorithm = ISRES objf [] [] (SeedValue 22) Nothing  -- specify algorithm
+-- >>> let lowerbounds = fromList [-10, -10]                    -- specify bounds
+-- >>> let upperbounds = fromList [10, 10]                      -- specify bounds
 -- >>> let problem = GlobalProblem lowerbounds upperbounds stop algorithm
--- >>> let x0 = fromList [5, 8]                            -- specify initial guess
+-- >>> let x0 = fromList [5, 8]                                 -- specify initial guess
 -- >>> minimizeGlobal problem x0
 -- Right (Solution {solutionCost = 22.000000000002807, solutionParams = [-1.660591102367038e-6,2.2407062393213684e-7], solutionResult = FTOL_REACHED})
 minimizeGlobal :: GlobalProblem  -- ^ Problem specification
