diff --git a/asdf-ops.lisp b/asdf-ops.lisp
index 4e348a0b95838fd8567ea221e9805ca8b830bf2d..031ea5a0c3794d9b2c8d9f057035c8079ab6f81a 100644
--- a/asdf-ops.lisp
+++ b/asdf-ops.lisp
@@ -109,7 +109,10 @@ to the base of the system."
       (:foo-system (\"component2\") :data-files ())"))))
 
 ;; Used by XCVB.
-(defclass dependency-op (downward-operation) ())
+(defclass dependency-op (load-source-op)
+  ((selfward-operation :initform 'prepare-dependency-op)))
+(defclass prepare-dependency-op (prepare-source-op)
+  ((sideway-operation :initform 'dependency-op)))
 
 (defun state-of (op component)
   (declare (ignore op))
@@ -119,9 +122,6 @@ to the base of the system."
   (declare (ignore op))
   (setf (slot-value component 'last-grovel-state) new-val))
 
-(defmethod source-file-type ((c component-file) (s module))
-  "asd")
-
 (defmethod output-files ((op dependency-op) (c component-file))
   (list
    ;; XXX: base-pathname?