diff --git a/bin/feature_list b/bin/feature_list
index 6c3847090e542f571e668df097651bb2d7a7aabe..2cbb27e4eb0222693a7b66ce88b788406e1f7b20 100755
--- a/bin/feature_list
+++ b/bin/feature_list
@@ -11,15 +11,13 @@ int main(int argc, string *argv)
   write("threads ");
 #endif
 
-  // Special case
-  catch { if(sizeof(indices(master()->resolv("_Crypto"))))
-    write("Crypto ");
-  };
-
-  foreach(({ "CommonLog", "Dbm", "Gdbm", "Gmp", "Gz", "MIME", "Msql", "Mysql",
-	 "Odbc", "Oracle", "Postgres", "Ssleay", "WideValues", "X", "Yp" }),
-	 string modname) {
+  foreach(({ "_Crypto", "CommonLog","Dbm","GL","GTK","Gdbm","Gmp","Gz","_Image_JPEG",
+	     "_Image_TIFF","_Image_TTF","MIME","Msql","Mysql","Odbc","Oracle",
+	     "Perl", "Postgres","Ssleay","WideValues","X","Yp" }),
+	  string modname) {
     catch { if (sizeof(indices(master()->resolv(modname))))
+      if(modname[0] == '_')
+	modname = replace(modname[1..], "_", ".");;
       write(modname+" ");
     };
   }