diff --git a/Changes b/Changes
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
+0.1.1.1: 
+    Add support for arithmoi-0.9.0.0 which had a breaking change that affected the Internals.hs file. (No change to API)
+
 0.1.1.0:  
     Canon.hs: Substantial enhancements to support hyperexpressions as first-class numbers.  Most of the changes were to this file.
+    Allow for partially factored numbers so the code will not hang endlessly on numbers with large composite factors.
 
 0.1.0.4:
     AurifCyclo.hs: Remove fromCycloMap, cmLookup from API and remove fromCycloMap function.
diff --git a/Math/NumberTheory/Canon/Internals.hs b/Math/NumberTheory/Canon/Internals.hs
--- a/Math/NumberTheory/Canon/Internals.hs
+++ b/Math/NumberTheory/Canon/Internals.hs
@@ -246,7 +246,7 @@
                 | n == -1   = (crN1,   True)
                 | n < 0     = (creN1:cr, ff)  -- in case arithmoi excludes -1 as a factor in the future
                 | otherwise = (cr,       ff) 
-                where cr                 = crSort $ map (\(p, e) -> (p, toInteger e)) cr'
+                where cr                 = crSort cr'
                       -- the prime factors must be in ascending order
                       (cr', ff)          = factorize (abs n) -- ToDo: pass to fcn
 
@@ -264,23 +264,24 @@
 crTrialDivCutoffSq    = crTrialDivCutoff * crTrialDivCutoff 
 
 -- factorize and deftStdGenFact were adapted from arithmoi
-factorize :: Integer -> ([(Integer,Int)], Bool)
-factorize n = if crFactCutoff > 0 
-              then defStdGenFact (mkStdGen $ fromInteger n `xor` 0xdeadbeef)
-              else (factorise' n, True) -- call underlying routine from arithmoi
-              where defStdGenFact sg 
-                      = let (sfs,mb) = smallFactors (if n <= crFactCutoff 
-                                                     then crTrialDivCutoff 
-                                                     else crSmallFactCutoff) n
-                        in (sfs ++ case mb of
-                                   Nothing -> []
-                                   Just m  -> if m > crFactCutoff 
-                                              then [(m, 1)]
-                                              else stdGenFactorisation (Just crTrialDivCutoffSq) sg Nothing m,
-                            case mb of
-                            Nothing -> True 
-                            Just m  -> m < crFactCutoff || isPrime m -- if less, do a complete factorization
-                           )
+factorize :: Integer -> ([(Integer,Integer)], Bool)
+factorize n = (map (\(p,e) -> (p, toInteger e)) f, b)
+              where (f, b) = if crFactCutoff > 0 
+                             then defStdGenFact (mkStdGen $ fromInteger n `xor` 0xdeadbeef)
+                             else (factorise' n, True) -- call underlying routine from arithmoi
+                    defStdGenFact sg 
+                           = let (sfs,mb) = smallFactors (if n <= crFactCutoff 
+                                            then crTrialDivCutoff 
+                                            else crSmallFactCutoff) n
+                             in (sfs ++ case mb of
+                                        Nothing -> []
+                                        Just m  -> if m > crFactCutoff 
+                                                   then [(m, 1)]
+                                                   else stdGenFactorisation (Just crTrialDivCutoffSq) sg Nothing m,
+                                 case mb of
+                                 Nothing -> True 
+                                 Just m  -> m < crFactCutoff || isPrime m -- if less, do a complete factorization
+                                )
 
 -- | Shorthand for crFromInteger function
 crFromI n = crFromInteger n 
diff --git a/canon.cabal b/canon.cabal
--- a/canon.cabal
+++ b/canon.cabal
@@ -2,8 +2,8 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                canon
-version:             0.1.1.0
-synopsis:            Massive Number Arithmetic
+version:             0.1.1.1
+synopsis:            Arithmetic for Psychedelically Large Numbers
 description:         This library allows one to manipulate numbers of practically unlimited size by keeping them in factored "canonical" form, where possible.  This original concept has been expanded to support arbitrary integral hyperoperations.  For manipulating sums and differences, there is additional code to factor expressions of special forms.  Please refer to CanonManualTests.hs and the .odp presentation files for usage examples and background.
 
 homepage:            https://github.com/grandpascorpion/canon
@@ -19,10 +19,10 @@
 
 library
     build-depends       : base >= 4.9.1.0 && < 5
-                        , arithmoi >= 0.6.0.1 
+                        , arithmoi >= 0.6.0.1 && < 1.0
                         , array >= 0.5.1.1 && < 0.6
                         , containers >= 0.5.7.1 && < 0.7
-                        , random >= 1.0
+                        , random >= 1.0 && < 1.2
 
     exposed-modules     : Math.NumberTheory.Canon
                           Math.NumberTheory.Canon.Simple
