diff --git a/bundle.lisp b/bundle.lisp
index 7f4cbd3..28b8d19 100644
--- a/bundle.lisp
+++ b/bundle.lisp
@@ -54,9 +54,11 @@
     (:documentation #+(or ecl mkcl) "compile the system and produce linkable (.a) library for it."
      #-(or ecl mkcl) "just compile the system"))
 
-  (defclass dll-op (bundle-op basic-compile-op)
+  #+(or mkcl ecl)
+  (defclass dll-op (bundle-compile-op)
     ((bundle-type :initform :dll))
-    (:documentation "Link together all the dynamic library used by this system into a single one."))
+    (:documentation
+     "compile the system and produce linkable (.so/.dll) library for it."))
 
   (defclass binary-op (basic-compile-op selfward-operation)
     ((selfward-operation :initform '(fasl-op lib-op)))
@@ -84,10 +86,10 @@
     (:documentation #+(or ecl mkcl) "Create a single linkable library for the system and its dependencies."
      #-(or ecl mkcl) "Compile a system and its dependencies."))
 
-  (defclass monolithic-dll-op (monolithic-bundle-op basic-compile-op sideway-operation selfward-operation)
-    ((bundle-type :initform :dll)
-     (selfward-operation :initform 'dll-op)
-     (sideway-operation :initform 'dll-op)))
+  #+(or mkcl ecl)
+  (defclass monolithic-dll-op (monolithic-bundle-compile-op basic-compile-op)
+    ((bundle-type :initform :dll))
+    (:documentation "Create a single linkable library (.so/.dll) for the system and its dependencies."))
 
   (defclass program-op #+(or mkcl ecl) (monolithic-bundle-compile-op)
             #-(or mkcl ecl) (monolithic-bundle-op selfward-operation)
@@ -101,7 +103,7 @@
       ((or null string) bundle-type)
       ((eql :fasl) #-(or ecl mkcl) (compile-file-type) #+(or ecl mkcl) "fasb")
       #+ecl
-      ((member :binary :dll :lib :static-library :program :object :program)
+      ((member :binary :dll :lib :shared-library :static-library :program :object :program)
        (compile-file-type :type bundle-type))
       ((eql :binary) "image")
       ((eql :dll) (cond ((os-unix-p) "so") ((os-windows-p) "dll")))
@@ -179,6 +181,12 @@
       (remf args :ld-flags)
       args))
 
+  (defmethod bundle-op-build-args :around ((o dll-op))
+    (declare (ignorable o))
+    (let ((args (call-next-method)))
+      (remf args :ld-flags)
+      args))
+
   (defun bundlable-file-p (pathname)
     (let ((type (pathname-type pathname)))
       (declare (ignorable type))
