diff --git a/basis/compiler/cfg/value-numbering/alien/alien.factor b/basis/compiler/cfg/value-numbering/alien/alien.factor
index 8b508550b4..190d911ad5 100644
--- a/basis/compiler/cfg/value-numbering/alien/alien.factor
+++ b/basis/compiler/cfg/value-numbering/alien/alien.factor
@@ -9,8 +9,7 @@ compiler.cfg.registers
 compiler.cfg.instructions
 compiler.cfg.value-numbering.math
 compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite
-compiler.cfg.value-numbering.expressions ;
+compiler.cfg.value-numbering.rewrite ;
 IN: compiler.cfg.value-numbering.alien
 
 M: ##box-displaced-alien rewrite
diff --git a/basis/compiler/cfg/value-numbering/comparisons/comparisons.factor b/basis/compiler/cfg/value-numbering/comparisons/comparisons.factor
index d9af124f30..63ac3575ef 100644
--- a/basis/compiler/cfg/value-numbering/comparisons/comparisons.factor
+++ b/basis/compiler/cfg/value-numbering/comparisons/comparisons.factor
@@ -6,8 +6,7 @@ compiler.cfg.comparisons compiler.cfg.instructions
 compiler.cfg.registers
 compiler.cfg.value-numbering.math
 compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite
-compiler.cfg.value-numbering.expressions ;
+compiler.cfg.value-numbering.rewrite ;
 IN: compiler.cfg.value-numbering.comparisons
 
 ! Optimizations performed here:
diff --git a/basis/compiler/cfg/value-numbering/expressions/expressions.factor b/basis/compiler/cfg/value-numbering/expressions/expressions.factor
index 087aedf50d..46e5a09907 100644
--- a/basis/compiler/cfg/value-numbering/expressions/expressions.factor
+++ b/basis/compiler/cfg/value-numbering/expressions/expressions.factor
@@ -1,10 +1,8 @@
 ! Copyright (C) 2008, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays classes classes.algebra classes.parser
-classes.tuple combinators combinators.short-circuit fry
-generic.parser kernel layouts math namespaces quotations
-sequences slots splitting words make
-cpu.architecture
+USING: accessors arrays classes classes.algebra combinators fry
+generic.parser kernel math namespaces quotations sequences slots
+words make
 compiler.cfg.instructions
 compiler.cfg.instructions.syntax
 compiler.cfg.value-numbering.graph ;
@@ -84,36 +82,3 @@ M: ##copy >expr "Fail" throw ;
 M: ##load-integer >expr val>> <integer-expr> ;
 
 M: ##load-reference >expr obj>> <reference-expr> ;
-
-GENERIC: insn>integer ( insn -- n )
-
-M: ##load-integer insn>integer val>> ;
-
-: vreg>integer ( vreg -- n ) vreg>insn insn>integer ; inline
-
-: vreg-immediate-arithmetic? ( vreg -- ? )
-    vreg>insn {
-        [ ##load-integer? ]
-        [ val>> immediate-arithmetic? ]
-    } 1&& ;
-
-: vreg-immediate-bitwise? ( vreg -- ? )
-    vreg>insn {
-        [ ##load-integer? ]
-        [ val>> immediate-bitwise? ]
-    } 1&& ;
-
-GENERIC: insn>comparand ( expr -- n )
-
-M: ##load-integer insn>comparand val>> tag-fixnum ;
-
-M: ##load-reference insn>comparand obj>> ;
-
-: vreg>comparand ( vreg -- n ) vreg>insn insn>comparand ; inline
-
-: vreg-immediate-comparand? ( vreg -- ? )
-    vreg>insn {
-        { [ dup ##load-integer? ] [ val>> tag-fixnum immediate-comparand? ] }
-        { [ dup ##load-reference? ] [ obj>> immediate-comparand? ] }
-        [ drop f ]
-    } cond ;
diff --git a/basis/compiler/cfg/value-numbering/folding/folding.factor b/basis/compiler/cfg/value-numbering/folding/folding.factor
index 6e70e3f80f..4d79ed5655 100644
--- a/basis/compiler/cfg/value-numbering/folding/folding.factor
+++ b/basis/compiler/cfg/value-numbering/folding/folding.factor
@@ -2,8 +2,8 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors kernel layouts math math.bitwise
 compiler.cfg.instructions
-compiler.cfg.value-numbering.expressions
-compiler.cfg.value-numbering.graph ;
+compiler.cfg.value-numbering.graph
+compiler.cfg.value-numbering.rewrite ;
 IN: compiler.cfg.value-numbering.folding
 
 : binary-constant-fold? ( insn -- ? )
diff --git a/basis/compiler/cfg/value-numbering/math/math.factor b/basis/compiler/cfg/value-numbering/math/math.factor
index 557fce7d50..c2f63692ac 100644
--- a/basis/compiler/cfg/value-numbering/math/math.factor
+++ b/basis/compiler/cfg/value-numbering/math/math.factor
@@ -5,7 +5,6 @@ cpu.architecture fry kernel layouts locals make math sequences
 compiler.cfg.instructions
 compiler.cfg.registers
 compiler.cfg.utilities
-compiler.cfg.value-numbering.expressions
 compiler.cfg.value-numbering.folding
 compiler.cfg.value-numbering.graph
 compiler.cfg.value-numbering.rewrite ;
diff --git a/basis/compiler/cfg/value-numbering/rewrite/rewrite.factor b/basis/compiler/cfg/value-numbering/rewrite/rewrite.factor
index dc34f2dcd8..1e2327d765 100644
--- a/basis/compiler/cfg/value-numbering/rewrite/rewrite.factor
+++ b/basis/compiler/cfg/value-numbering/rewrite/rewrite.factor
@@ -1,9 +1,46 @@
 ! Copyright (C) 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel compiler.cfg.instructions ;
+USING: accessors combinators combinators.short-circuit kernel layouts
+cpu.architecture
+compiler.cfg.instructions
+compiler.cfg.value-numbering.graph ;
 IN: compiler.cfg.value-numbering.rewrite
 
 ! Outputs f to mean no change
 GENERIC: rewrite ( insn -- insn/f )
 
 M: insn rewrite drop f ;
+
+! Utilities
+GENERIC: insn>integer ( insn -- n )
+
+M: ##load-integer insn>integer val>> ;
+
+: vreg>integer ( vreg -- n ) vreg>insn insn>integer ; inline
+
+: vreg-immediate-arithmetic? ( vreg -- ? )
+    vreg>insn {
+        [ ##load-integer? ]
+        [ val>> immediate-arithmetic? ]
+    } 1&& ;
+
+: vreg-immediate-bitwise? ( vreg -- ? )
+    vreg>insn {
+        [ ##load-integer? ]
+        [ val>> immediate-bitwise? ]
+    } 1&& ;
+
+GENERIC: insn>comparand ( expr -- n )
+
+M: ##load-integer insn>comparand val>> tag-fixnum ;
+
+M: ##load-reference insn>comparand obj>> ;
+
+: vreg>comparand ( vreg -- n ) vreg>insn insn>comparand ; inline
+
+: vreg-immediate-comparand? ( vreg -- ? )
+    vreg>insn {
+        { [ dup ##load-integer? ] [ val>> tag-fixnum immediate-comparand? ] }
+        { [ dup ##load-reference? ] [ obj>> immediate-comparand? ] }
+        [ drop f ]
+    } cond ;
diff --git a/basis/compiler/cfg/value-numbering/simd/simd.factor b/basis/compiler/cfg/value-numbering/simd/simd.factor
index 4aabfd3d9a..1983c07190 100644
--- a/basis/compiler/cfg/value-numbering/simd/simd.factor
+++ b/basis/compiler/cfg/value-numbering/simd/simd.factor
@@ -12,7 +12,6 @@ compiler.cfg.comparisons
 compiler.cfg.instructions
 compiler.cfg.value-numbering.math
 compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.expressions
 compiler.cfg.value-numbering.rewrite ;
 IN: compiler.cfg.value-numbering.simd
 
diff --git a/basis/compiler/cfg/value-numbering/slots/slots.factor b/basis/compiler/cfg/value-numbering/slots/slots.factor
index 8733e5f6e9..7c2b562a84 100644
--- a/basis/compiler/cfg/value-numbering/slots/slots.factor
+++ b/basis/compiler/cfg/value-numbering/slots/slots.factor
@@ -4,8 +4,7 @@ USING: accessors combinators.short-circuit cpu.architecture fry
 kernel math
 compiler.cfg.instructions
 compiler.cfg.value-numbering.graph
-compiler.cfg.value-numbering.rewrite
-compiler.cfg.value-numbering.expressions ;
+compiler.cfg.value-numbering.rewrite ;
 IN: compiler.cfg.value-numbering.slots
 
 : simplify-slot-addressing? ( insn -- ? )
diff --git a/basis/compiler/cfg/value-numbering/value-numbering.factor b/basis/compiler/cfg/value-numbering/value-numbering.factor
index 01b095fbd7..ad3ccb1693 100644
--- a/basis/compiler/cfg/value-numbering/value-numbering.factor
+++ b/basis/compiler/cfg/value-numbering/value-numbering.factor
@@ -11,11 +11,11 @@ compiler.cfg.utilities
 compiler.cfg.instructions
 compiler.cfg.value-numbering.alien
 compiler.cfg.value-numbering.comparisons
-compiler.cfg.value-numbering.expressions
 compiler.cfg.value-numbering.graph
 compiler.cfg.value-numbering.math
 compiler.cfg.value-numbering.rewrite
-compiler.cfg.value-numbering.slots ;
+compiler.cfg.value-numbering.slots
+compiler.cfg.value-numbering.expressions ;
 IN: compiler.cfg.value-numbering
 
 GENERIC: process-instruction ( insn -- insn' )