diff --git a/bundle.lisp b/bundle.lisp
index 8582a486812003ff6c69a3279cb5378e30483300..ec76f4aeba99fc3858130c2ed7de378d0cc05f2f 100644
--- a/bundle.lisp
+++ b/bundle.lisp
@@ -110,7 +110,7 @@ itself."))
   (defclass basic-compile-bundle-op (bundle-op basic-compile-op)
     ((gather-type :initform #-(or clasp ecl mkcl) :fasl #+(or clasp ecl mkcl) :object
                   :allocation :class)
-     (bundle-type :initform :fasl :allocation :class))
+     (bundle-type :initform :fasb :allocation :class))
     (:documentation "Base class for compiling into a bundle"))
 
   ;; Analog to prepare-op, for load-bundle-op and compile-bundle-op
@@ -217,6 +217,8 @@ for all the linkable object files associated with the system or its dependencies
       ((eql :no-output-file) ;; marker for a bundle-type that has NO output file
        (error "No output file, therefore no pathname type"))
       ((eql :fasl) ;; the type of a fasl
+       (compile-file-type)) ; on image-based platforms, used as input and output
+      ((eql :fasb) ;; the type of a fasl
        #-(or clasp ecl mkcl) (compile-file-type) ; on image-based platforms, used as input and output
        #+(or clasp ecl mkcl) "fasb") ; on C-linking platforms, only used as output for system bundles
       ((member :image)
@@ -274,7 +276,7 @@ e.g. as part of the implementation, of an outer build system that calls into ASD
 or of opaque libraries shipped along the source code."))
 
   (defclass precompiled-system (system)
-    ((build-pathname :initarg :fasl))
+    ((build-pathname :initarg :fasb :initarg :fasl))
     (:documentation "Class For a system that is delivered as a precompiled fasl"))
 
   (defclass prebuilt-system (system)
@@ -341,7 +343,7 @@ or of opaque libraries shipped along the source code."))
        (if monolithic 'monolithic-dll-op 'dll-op))
       ((:lib :static-library)
        (if monolithic 'monolithic-lib-op 'lib-op))
-      ((:fasl)
+      ((:fasb)
        (if monolithic 'monolithic-compile-bundle-op 'compile-bundle-op))
       ((:image)
        'image-op)
diff --git a/test/make-hello-world.lisp b/test/make-hello-world.lisp
index d823495b5da5b2ed24f552ed5317e84f6bd48786..7e528194b772af1ce1bad4c2b909ada1269b48a2 100644
--- a/test/make-hello-world.lisp
+++ b/test/make-hello-world.lisp
@@ -20,7 +20,7 @@
   ;; make sure mkcl-X.X.X.dll is the same directory as the executable
   (let* ((dll-orig (subpathname (si::self-truename)
                                 (strcat #-os-windows "../lib/"
-                                        "mkcl_" (lisp-implementation-version)
+                                        "mkcl_" (si:mkcl-version)
                                         "." (asdf/bundle:bundle-pathname-type :shared-library))))
          (dll-dest (subpathname pathname (strcat #-os-windows "../lib/" (file-namestring dll-orig)))))
     (ensure-directories-exist dll-dest)
diff --git a/test/test-program.script b/test/test-program.script
index 37ecb3de06b4cc869535db2e9f0b16b3fd172334..f7442742f26dd7c5889c130404e074ef1874851a 100644
--- a/test/test-program.script
+++ b/test/test-program.script
@@ -122,8 +122,9 @@
 #+(or ecl mkcl)
 (progn
   (DBG "Now create an program without UIOP")
-  (assert (probe-file (asdf/bundle::system-module-pathname "asdf")))
-  (assert (probe-file (asdf/bundle::system-module-pathname "cmp")))
+  #+mkcl (assert (probe-file* (asdf/bundle::system-module-pathname "uiop")))
+  (assert (probe-file* (asdf/bundle::system-module-pathname "asdf")))
+  #+ecl (assert (probe-file* (asdf/bundle::system-module-pathname "cmp")))
   (def-test-system hello-no-uiop
     :class program-system
     :no-uiop t
@@ -142,10 +143,9 @@
    '("Look ma, no UIOP!" "And TEST-PACKAGE!" "And no ASDF!"))
 
   (DBG "Now create an program with explicit ASDF dependency, without registered ASDF (use implementation-provided prebuilt)")
-  (trace c::builder) ;; component-depends-on input-files output-files
   (assert-pathname-equal
    (truename (pathname-directory-pathname (output-file 'lib-op (asdf/bundle::linkable-system "asdf"))))
-   (truename (lisp-implementation-directory)))
+   (truename (subpathname (lisp-implementation-directory) #+mkcl "contrib/" #-mkcl nil)))
   (def-test-system hello-asdf
     :class program-system
     :depends-on ("asdf")
diff --git a/uiop/image.lisp b/uiop/image.lisp
index d1d2a25d99ad60197c97640459decf77f5cf5adf..7850d9ad52736320f919ae108054a696649f70e0 100644
--- a/uiop/image.lisp
+++ b/uiop/image.lisp
@@ -445,7 +445,9 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
                             (shell-boolean-exit
                              (restore-image))))))))
                  (when forms `(progn ,@forms))))))
-      #+(or clasp ecl) (check-type kind (member :dll :shared-library :lib :static-library :program :fasl))
+      #+(or clasp ecl mkcl)
+      (check-type kind (member :dll :shared-library :lib :static-library
+                               :fasl :fasb :program))
       (apply #+clasp 'cmp:builder #+clasp kind
              #+(or ecl mkcl)
              (ecase kind
@@ -453,13 +455,17 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
                 #+ecl 'c::build-shared-library #+mkcl 'compiler:build-shared-library)
                ((:lib :static-library)
                 #+ecl 'c::build-static-library #+mkcl 'compiler:build-static-library)
-               ((:fasl)
+               ((:fasl #+ecl :fasb)
                 #+ecl 'c::build-fasl #+mkcl 'compiler:build-fasl)
+               #+mkcl ((:fasb) 'compiler:build-bundle)
                ((:program)
                 #+ecl 'c::build-program #+mkcl 'compiler:build-program))
              (pathname destination)
-             #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files (append lisp-object-files #+(or clasp ecl) extra-object-files)
-             #+(or clasp ecl) :init-name #+(or clasp ecl) (c::compute-init-name (or output-name destination) :kind kind)
+             #+(or clasp ecl) :lisp-files #+mkcl :lisp-object-files
+             (append lisp-object-files #+(or clasp ecl) extra-object-files)
+             #+ecl :init-name
+             #+ecl (c::compute-init-name (or output-name destination)
+                                         :kind (if (eq kind :fasb) :fasl kind))
              (append
               (when prologue-code `(:prologue-code ,prologue-code))
               (when epilogue-code `(:epilogue-code ,epilogue-code))