diff --git a/asdf.lisp b/asdf.lisp
index 291c3957c052ff403fdb4739d90ac9789b0a975f..08c29b8fcce92bac47e83a04f99a3388bde08a25 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -262,7 +262,7 @@
   ;; This parameter isn't actually user-visible
   ;; -- please use the exported function ASDF:ASDF-VERSION below.
   ;; the 1+ hair is to ensure that we don't do an inadvertent find and replace
-  (subseq "VERSION:1.653" (1+ (length "VERSION"))))
+  (subseq "VERSION:1.654" (1+ (length "VERSION"))))
 
 (defun asdf-version ()
   "Exported interface to the version of ASDF currently installed. A string.
@@ -297,8 +297,6 @@ Defaults to `t`.")
 ;;;; Cleanups before hot-upgrade.
 ;;;; Things to do in case we're upgrading from a previous version of ASDF.
 ;;;; See https://bugs.launchpad.net/asdf/+bug/485687
-;;;; * fmakunbound functions that once (in previous version of ASDF)
-;;;;   were simple DEFUNs but now are generic functions.
 ;;;; * define methods on UPDATE-INSTANCE-FOR-REDEFINED-CLASS
 ;;;;   for each of the classes we define that has changed incompatibly.
 (eval-when (:compile-toplevel :load-toplevel :execute)
@@ -2634,7 +2632,7 @@ return the configuration"
 
 ;;;; -----------------------------------------------------------------
 ;;;; Source Registry Configuration, by Francois-Rene Rideau
-;;;; See README.source-registry and https://bugs.launchpad.net/asdf/+bug/485918
+;;;; See the Manual and https://bugs.launchpad.net/asdf/+bug/485918
 
 ;; Using ack 1.2 exclusions
 (defvar *default-exclusions*
@@ -2745,20 +2743,19 @@ with a different configuration, so the configuration would be re-read then."
            (return `(:source-registry ,@(nreverse directives)))))))))
 
 (defun register-asd-directory (directory &key recurse exclude collect)
-  (let ((directory (ensure-directory-pathname directory)))
-    (if (not recurse)
-        (funcall collect directory)
-        (let* ((files (ignore-errors
-                        (directory (merge-pathnames* *wild-asd* directory)
-                                   #+sbcl #+sbcl :resolve-symlinks nil
-                                   #+clisp #+clisp :circle t)))
-               (dirs (remove-duplicates (mapcar #'pathname-directory-pathname files)
-                                        :test #'equal :from-end t)))
-          (loop
-            :for dir :in dirs
-            :unless (loop :for x :in exclude
-                      :thereis (find x (pathname-directory dir) :test #'equal))
-            :do (funcall collect dir))))))
+  (if (not recurse)
+      (funcall collect directory)
+      (let* ((files (ignore-errors
+                      (directory (merge-pathnames* *wild-asd* directory)
+                                 #+sbcl #+sbcl :resolve-symlinks nil
+                                 #+clisp #+clisp :circle t)))
+             (dirs (remove-duplicates (mapcar #'pathname-directory-pathname files)
+                                      :test #'equal :from-end t)))
+        (loop
+          :for dir :in dirs
+          :unless (loop :for x :in exclude
+                    :thereis (find x (pathname-directory dir) :test #'equal))
+          :do (funcall collect dir)))))
 
 (defparameter *default-source-registries*
   '(environment-source-registry
@@ -2850,11 +2847,11 @@ with a different configuration, so the configuration would be re-read then."
       ((:directory)
        (destructuring-bind (pathname) rest
          (when pathname
-           (funcall register (pathname pathname)))))
+           (funcall register (ensure-directory-pathname pathname)))))
       ((:tree)
        (destructuring-bind (pathname) rest
          (when pathname
-           (funcall register (pathname pathname) :recurse t :exclude *default-exclusions*))))
+           (funcall register (ensure-directory-pathname pathname) :recurse t :exclude *default-exclusions*))))
       ((:exclude)
        (setf *default-exclusions* rest))
       ((:default-registry)