diff --git a/tools/worldload.lisp b/tools/worldload.lisp
index 6b91c4f80d8adff940203e60f60732c553912f0f..66bc07c9346422a4919f3f27f46671e7c6c8afe5 100644
--- a/tools/worldload.lisp
+++ b/tools/worldload.lisp
@@ -6,7 +6,7 @@
 ;;; If you want to use this code or any part of CMU Common Lisp, please contact
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.93 2001/07/10 22:50:46 pw Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/tools/worldload.lisp,v 1.94 2001/12/11 00:27:31 pmai Exp $
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -221,14 +221,15 @@
   (setq ext:*ansi-defstruct-options-p* t)
   ;;
   ;; Save the lisp.  If RUNTIME, there is nothing new to purify, so don't.
-  (let ((root-structures
-         #-(or runtime no-hemlock) `(ed ,hi::*global-command-table*)
-         #+(or runtime no-hemlock) ())
-        (purify (not (featurep :runtime))))
-    ;; the following features are only used to control the build
-    ;; process, so we remove them from the generated image
-    (dolist (f '(:runtime :no-compiler :no-pcl :no-clx :no-clm :no-hemlock))
-      (setf *features* (remove f *features*)))
-    (save-lisp "lisp.core"
-               :root-structures root-structures
-               :purify purify)))
+  ;; the following features are only used to control the build
+  ;; process, so we remove them from the generated image
+  (setq *features*
+	(nreverse
+	 (set-difference
+	  *features* 
+	  '(:runtime :no-compiler :no-pcl :no-clx :no-clm :no-hemlock))))
+  (save-lisp "lisp.core"
+             :root-structures
+             #-(or runtime no-hemlock) `(ed ,hi::*global-command-table*)
+             #+(or runtime no-hemlock) ()
+             :purify #+runtime nil #-runtime t))