diff --git a/TODO b/TODO
index fbe426420434f3ff93d54043993eeeae8d39b5c0..e87335e7c37a7168ef865d74113c8d2fd0f995e3 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,6 @@
+* use cl-test-grid to see if asdf-user can :use most of UIOP.
+  Unhappily, on SBCL, sb-grovel uses asdf and sb-ext,
+  which causes a clash with run-program.
 * have some automated test to make sure asdf-driver works with asdf 2.26
 * have a mode to explain WHY a componnet needs to be recompiled.
 * have a better defsystem form verifier - see lp#1007335
diff --git a/doc/index.html b/doc/index.html
index c60abc5ebf54e86b05adc94b961e748b1f9bb899..ad6ed3a9d2d0b186d32c5848ef29650c1407ce6f 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -113,7 +113,8 @@
           (All of them but CLISP also accept
           <tt>:asdf</tt>, <tt>"ASDF"</tt> or <tt>'asdf</tt> as an argument.)
           All of these implementations provide at least ASDF 2,
-          and a few of them aready provide ASDF 3 (<tt>allegro</tt>, <tt>ccl</tt>, <tt>cmucl</tt>, <tt>ecl</tt>).
+          and a few of them aready provide ASDF 3
+          (<tt>abcl</tt>, <tt>allegro</tt>, <tt>ccl</tt>, <tt>cmucl</tt>, <tt>ecl</tt>).
           Hopefully soon all will follow suit;
           but in the meantime, you can download ASDF 3,
           and use <tt>(asdf:load-system :asdf)</tt>
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 3d081f30943917faec127b8bc3df076b0327b74e..e26c27eaf9366fbda24812ea760ba73d6e2c73c2 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -20,13 +20,14 @@ usage () {
     echo "    -c -- clean load test"
     echo "    -l -- load systems tests"
     echo "    -t -- test interactively"
+    echo "    -H -- extract all asdf versions to upgrade from"
 }
 
-unset DEBUG_ASDF_TEST upgrade clean_load load_systems test_interactively
+unset DEBUG_ASDF_TEST upgrade clean_load load_systems test_interactively extract_all
 SHELL=/bin/sh
 export SHELL
 
-while getopts "cdthulhu" OPTION
+while getopts "cdtHulhu" OPTION
 do
     case $OPTION in
         d)
@@ -44,6 +45,9 @@ do
         t)
             test_interactively=t
             ;;
+        H)
+            extract_all=t
+            ;;
         h)
             usage
             exit 1
@@ -264,14 +268,14 @@ upgrade_methods () {
 EOF
 }
 extract_tagged_asdf () {
-    ver=$1
-    if [ REQUIRE = "$ver" ] ; then return 0 ; fi
+    tag=$1
+    if [ REQUIRE = "$tag" ] ; then return 0 ; fi
     file=build/asdf-${tag}.lisp ;
     if [ ! -f $file ] ; then
-        case $ver in
+        case $tag in
             1.*|2.0*|2.2[0-6]|2.26.61)
                 git show ${tag}:asdf.lisp > $file ;;
-            2.2*|3.*)
+            2.[2-9]*|3.*)
                 mkdir -p build/old/build
                 git archive ${tag} Makefile '*.lisp' | (cd build/old/ ; tar xf -)
                 make -C build/old
@@ -285,6 +289,11 @@ extract_tagged_asdf () {
         esac
     fi
 }
+extract_all_tagged_asdf () {
+    for i in `upgrade_tags` ; do
+      extract_tagged_asdf $i
+    done
+}
 valid_upgrade_test_p () {
     case "${1}:${2}:${3}" in
         # It's damn slow. Also, for some reason, we punt on anything earlier than 2.25,
@@ -400,6 +409,8 @@ elif [ -n "$load_systems" ] ; then
     test_load_systems "$@"
 elif [ -n "$upgrade" ] ; then
     run_upgrade_tests
+elif [ -n "$extract_all" ] ; then
+    extract_all_tagged_asdf
 else
     run_tests "$@"
 fi ; exit # NB: "; exit" makes it robust wrt the script being modified while running.