diff --git a/lib/modules/Crypto.pmod b/lib/modules/Crypto.pmod
index c85f5191a785a69a28b38f876413fcc53170831b..6b2a4fb259c99ce95395c99496dc89821be78d00 100644
--- a/lib/modules/Crypto.pmod
+++ b/lib/modules/Crypto.pmod
@@ -8,7 +8,6 @@ static private mixed crypto_module;
 
 mixed `[](string name)
 {
-//  return (::`[](name) || ((program) ("Crypto/" + name)));
     catch {
       return (crypto_module[name]
 	      || ((program) ("Crypto/" + name))
@@ -17,6 +16,15 @@ mixed `[](string name)
     return ([])[0];	// UNDEFINED
 }
 
+array(string) _indices() {
+  array tmp = ( __FILE__ / "/");
+  tmp[-1] = "Crypto";
+  tmp = get_dir(tmp*"/");
+  return map(glob("*.pike",tmp)+glob("*.pmod",tmp),
+	     lambda(string in){ return in[..sizeof(in)-6]; }) +
+    indices(crypto_module);
+}
+
 void create()
 {
   catch { crypto_module=master()->resolv("_Crypto"); };