diff --git a/basis/cocoa/cocoa.factor b/basis/cocoa/cocoa.factor
index 44252a3b19..01f134e283 100644
--- a/basis/cocoa/cocoa.factor
+++ b/basis/cocoa/cocoa.factor
@@ -29,7 +29,7 @@ SYMBOL: super-sent-messages
 
 SYMBOL: frameworks
 
-frameworks global [ V{ } clone or ] change-at
+frameworks [ V{ } clone ] initialize
 
 [ frameworks get [ load-framework ] each ] "cocoa.messages" add-init-hook
 
diff --git a/basis/cocoa/messages/messages.factor b/basis/cocoa/messages/messages.factor
index 60bdde262c..529efeb564 100644
--- a/basis/cocoa/messages/messages.factor
+++ b/basis/cocoa/messages/messages.factor
@@ -19,8 +19,8 @@ IN: cocoa.messages
 SYMBOL: message-senders
 SYMBOL: super-message-senders
 
-message-senders global [ H{ } assoc-like ] change-at
-super-message-senders global [ H{ } assoc-like ] change-at
+message-senders [ H{ } clone ] initialize
+super-message-senders [ H{ } clone ] initialize
 
 : cache-stub ( method function hash -- )
     [
@@ -53,7 +53,7 @@ MEMO: <selector> ( name -- sel ) f \ selector boa ;
 
 SYMBOL: objc-methods
 
-objc-methods global [ H{ } assoc-like ] change-at
+objc-methods [ H{ } clone ] initialize
 
 : lookup-method ( selector -- method )
     dup objc-methods get at
@@ -79,7 +79,7 @@ MACRO: (send) ( selector super? -- quot )
 ! Runtime introspection
 SYMBOL: class-init-hooks
 
-class-init-hooks global [ H{ } clone or ] change-at
+class-init-hooks [ H{ } clone or ] initialize
 
 : (objc-class) ( name word -- class )
     2dup execute dup [ 2nip ] [
diff --git a/basis/compiler/utilities/utilities.factor b/basis/compiler/utilities/utilities.factor
index ec4ced8c9f..31faaef480 100644
--- a/basis/compiler/utilities/utilities.factor
+++ b/basis/compiler/utilities/utilities.factor
@@ -24,4 +24,4 @@ IN: compiler.utilities
 
 SYMBOL: yield-hook
 
-yield-hook global [ [ ] or ] change-at
+yield-hook [ [ ] ] initialize
diff --git a/basis/concurrency/messaging/messaging.factor b/basis/concurrency/messaging/messaging.factor
index 61a3c38991..ce7f7d6110 100644
--- a/basis/concurrency/messaging/messaging.factor
+++ b/basis/concurrency/messaging/messaging.factor
@@ -85,4 +85,4 @@ PRIVATE>
 : get-process ( name -- process )
     dup registered-processes at [ ] [ thread ] ?if ;
 
-\ registered-processes global [ H{ } assoc-like ] change-at
+\ registered-processes [ H{ } clone ] initialize
diff --git a/basis/help/help.factor b/basis/help/help.factor
index 272bdc1db3..f980032a8b 100644
--- a/basis/help/help.factor
+++ b/basis/help/help.factor
@@ -118,7 +118,7 @@ M: word set-article-parent swap "help-parent" set-word-prop ;
 
 SYMBOL: help-hook
 
-help-hook global [ [ print-topic ] or ] change-at
+help-hook [ [ print-topic ] ] initialize
 
 : help ( topic -- )
     help-hook get call ;
diff --git a/basis/help/topics/topics.factor b/basis/help/topics/topics.factor
index e6b19d5baa..8c687eb1d5 100644
--- a/basis/help/topics/topics.factor
+++ b/basis/help/topics/topics.factor
@@ -27,11 +27,11 @@ M: link summary
 ! Help articles
 SYMBOL: articles
 
-articles global [ H{ } assoc-like ] change-at
+articles [ H{ } clone ] initialize
     
 SYMBOL: article-xref
 
-article-xref global [ H{ } assoc-like ] change-at
+article-xref [ H{ } clone ] initialize
 
 GENERIC: article-name ( topic -- string )
 GENERIC: article-title ( topic -- string )
diff --git a/basis/html/templates/chloe/syntax/syntax.factor b/basis/html/templates/chloe/syntax/syntax.factor
index f149c3fe47..faf8bed66b 100644
--- a/basis/html/templates/chloe/syntax/syntax.factor
+++ b/basis/html/templates/chloe/syntax/syntax.factor
@@ -11,7 +11,7 @@ html.templates ;
 
 SYMBOL: tags
 
-tags global [ H{ } clone or ] change-at
+tags [ H{ } clone ] initialize
 
 : define-chloe-tag ( name quot -- ) swap tags get set-at ;
 
diff --git a/basis/http/server/server.factor b/basis/http/server/server.factor
index b6ee70057b..f2f3deead2 100755
--- a/basis/http/server/server.factor
+++ b/basis/http/server/server.factor
@@ -161,7 +161,7 @@ C: <trivial-responder> trivial-responder
 
 M: trivial-responder call-responder* nip response>> clone ;
 
-main-responder global [ <404> <trivial-responder> or ] change-at
+main-responder [ <404> <trivial-responder> ] initialize
 
 : invert-slice ( slice -- slice' )
     dup slice? [ [ seq>> ] [ from>> ] bi head-slice ] [ drop { } ] if ;
diff --git a/basis/io/encodings/iana/iana.factor b/basis/io/encodings/iana/iana.factor
index a56bd1194b..6afae92429 100644
--- a/basis/io/encodings/iana/iana.factor
+++ b/basis/io/encodings/iana/iana.factor
@@ -47,8 +47,8 @@ PRIVATE>
 "resource:basis/io/encodings/iana/character-sets"
 utf8 <file-reader> make-aliases aliases set-global
 
-n>e-table global [ initial-n>e or ] change-at
-e>n-table global [ initial-e>n or ] change-at
+n>e-table [ initial-n>e ] initialize
+e>n-table [ initial-e>n ] initialize
 
 : register-encoding ( descriptor name -- )
     [
diff --git a/basis/tools/annotations/annotations.factor b/basis/tools/annotations/annotations.factor
index ecf3ba0a76..b436be5163 100644
--- a/basis/tools/annotations/annotations.factor
+++ b/basis/tools/annotations/annotations.factor
@@ -87,7 +87,7 @@ M: word annotate-methods
 
 SYMBOL: word-timing
 
-word-timing global [ H{ } clone or ] change-at
+word-timing [ H{ } clone ] initialize
 
 : reset-word-timing ( -- )
     word-timing get clear-assoc ;
diff --git a/basis/ui/cocoa/cocoa.factor b/basis/ui/cocoa/cocoa.factor
index 331c0a698c..2fc8856b26 100755
--- a/basis/ui/cocoa/cocoa.factor
+++ b/basis/ui/cocoa/cocoa.factor
@@ -141,9 +141,9 @@ CLASS: {
 
 SYMBOL: cocoa-init-hook
 
-cocoa-init-hook global [
-    [ "MiniFactor.nib" load-nib install-app-delegate ] or
-] change-at
+cocoa-init-hook [
+    [ "MiniFactor.nib" load-nib install-app-delegate ]
+] initialize
 
 M: cocoa-ui-backend ui
     "UI" assert.app [
diff --git a/basis/ui/gadgets/worlds/worlds.factor b/basis/ui/gadgets/worlds/worlds.factor
index 732a438203..f57fb60bcd 100644
--- a/basis/ui/gadgets/worlds/worlds.factor
+++ b/basis/ui/gadgets/worlds/worlds.factor
@@ -81,7 +81,7 @@ SYMBOL: ui-error-hook
 : ui-error ( error -- )
     ui-error-hook get [ call ] [ die ] if* ;
 
-ui-error-hook global [ [ rethrow ] or ] change-at
+ui-error-hook [ [ rethrow ] ] initialize
 
 : draw-world ( world -- )
     dup draw-world? [
diff --git a/core/alien/alien.factor b/core/alien/alien.factor
index 93d1a8e306..52e9cd0f30 100644
--- a/core/alien/alien.factor
+++ b/core/alien/alien.factor
@@ -51,7 +51,7 @@ M: alien equal?
 
 SYMBOL: libraries
 
-libraries global [ H{ } assoc-like ] change-at
+libraries [ H{ } clone ] initialize
 
 TUPLE: library path abi dll ;
 
diff --git a/core/compiler/units/units.factor b/core/compiler/units/units.factor
index 999b783c48..ac3e99e24c 100644
--- a/core/compiler/units/units.factor
+++ b/core/compiler/units/units.factor
@@ -178,6 +178,4 @@ SYMBOL: remake-generics-hook
 : default-recompile-hook ( words -- alist )
     [ f ] { } map>assoc ;
 
-recompile-hook global
-[ [ default-recompile-hook ] or ]
-change-at
+recompile-hook [ [ default-recompile-hook ] ] initialize
diff --git a/core/io/backend/backend.factor b/core/io/backend/backend.factor
index fd5567cfa2..2f0bb1063f 100644
--- a/core/io/backend/backend.factor
+++ b/core/io/backend/backend.factor
@@ -8,7 +8,7 @@ SYMBOL: io-backend
 
 SINGLETON: c-io-backend
 
-io-backend global [ c-io-backend or ] change-at
+io-backend [ c-io-backend ] initialize
 
 HOOK: init-io io-backend ( -- )
 
diff --git a/core/parser/parser.factor b/core/parser/parser.factor
index 4be7cfa891..971ba245dd 100644
--- a/core/parser/parser.factor
+++ b/core/parser/parser.factor
@@ -200,7 +200,7 @@ SYMBOL: interactive-vocabs
 
 SYMBOL: print-use-hook
 
-print-use-hook global [ [ ] or ] change-at
+print-use-hook [ [ ] ] initialize
 
 : parse-fresh ( lines -- quot )
     [
diff --git a/core/strings/parser/parser.factor b/core/strings/parser/parser.factor
index 4062e16e3d..8c9d0b5557 100644
--- a/core/strings/parser/parser.factor
+++ b/core/strings/parser/parser.factor
@@ -22,9 +22,9 @@ ERROR: bad-escape ;
 
 SYMBOL: name>char-hook
 
-name>char-hook global [
-    [ "Unicode support not available" throw ] or
-] change-at
+name>char-hook [
+    [ "Unicode support not available" throw ]
+] initialize
 
 : unicode-escape ( str -- ch str' )
     "{" ?head-slice [
diff --git a/core/words/words.factor b/core/words/words.factor
index 3197d0a6f6..8648664031 100755
--- a/core/words/words.factor
+++ b/core/words/words.factor
@@ -96,11 +96,11 @@ M: word uses ( word -- seq )
 
 SYMBOL: compiled-crossref
 
-compiled-crossref global [ H{ } assoc-like ] change-at
+compiled-crossref [ H{ } clone ] initialize
 
 SYMBOL: compiled-generic-crossref
 
-compiled-generic-crossref global [ H{ } assoc-like ] change-at
+compiled-generic-crossref [ H{ } clone ] initialize
 
 : (compiled-xref) ( word dependencies word-prop variable -- )
     [ [ set-word-prop ] curry ]
diff --git a/extra/mason/config/config.factor b/extra/mason/config/config.factor
index b1739d85fa..51b09543f4 100644
--- a/extra/mason/config/config.factor
+++ b/extra/mason/config/config.factor
@@ -81,7 +81,7 @@ SYMBOL: upload-directory
 
 ! Optional: override ssh and scp command names
 SYMBOL: scp-command
-scp-command global [ "scp" or ] change-at
+scp-command [ "scp" ] initialize
 
 SYMBOL: ssh-command
-ssh-command global [ "ssh" or ] change-at
+ssh-command [ "ssh" ] initialize