diff --git a/basis/alien/libraries/finder/finder.factor b/basis/alien/libraries/finder/finder.factor
index 78b3a71955..6cc8de0931 100644
--- a/basis/alien/libraries/finder/finder.factor
+++ b/basis/alien/libraries/finder/finder.factor
@@ -1,4 +1,5 @@
-USING: accessors kernel sequences system vocabs ;
+USING: accessors alien.libraries kernel sequences system vocabs
+;
 IN: alien.libraries.finder
 
 HOOK: find-library* os ( name -- path/f )
@@ -6,6 +7,13 @@ HOOK: find-library* os ( name -- path/f )
 : find-library ( name -- path/library-not-found )
     dup find-library* [ nip ] when* ;
 
+: ?add-library ( name path abi -- )
+    pick lookup-library [ dll>> dll-valid? ] [ f ] if* [
+        3drop
+    ] [
+        [ find-library ] [ add-library ] bi*
+    ] if ;
+
 ! Try to find the library from a list, but if it's not found,
 ! try to open a library that is the first name in that list anyway
 ! or "library_not_found" as a last resort for better debugging.