diff --git a/kernel/AnsiExcept.st b/kernel/AnsiExcept.st
index 97cfbe3..2b335ff 100644
--- a/kernel/AnsiExcept.st
+++ b/kernel/AnsiExcept.st
@@ -910,6 +910,15 @@ InvalidArgument subclass: NotFound [
 	    signal: aString , ' not found'
     ]
 
+    NotFound class >> signalOn: value reason: aString [
+	"Raise an exception: reason specifies the reason of the exception."
+
+	<category: 'accessing'>
+	^(self new)
+	    value: value;
+	    signal: aString
+    ]
+ 
     description [
 	"Answer a textual description of the exception."
 
diff --git a/kernel/PkgLoader.st b/kernel/PkgLoader.st
index 85771c8..f10d8db 100644
--- a/kernel/PkgLoader.st
+++ b/kernel/PkgLoader.st
@@ -57,6 +57,12 @@ NotFound subclass: PackageNotAvailable [
 	^super signalOn: aString what: 'package'
     ]
 
+    PackageNotAvailable class >> signal: package reason: reason [
+	"Signal an exception saying that be package named package
+	 can't be found because the reason named reason."
+	^super signalOn: package reason: reason
+    ]
+
     isResumable [
         "Answer true.  Package unavailability is resumable, because the
 	 package files might just lie elsewhere."
@@ -1254,9 +1260,8 @@ XML.'>
 		file := dir / fileName.
 		file exists ifTrue: [^file]].
 
-	"TODO: should put the name and baseDirectories into the exception."
-	"fileName printNl.  baseDirectories printNl."
 	SystemExceptions.PackageNotAvailable signal: self name
+	    reason: (fileName printString , ' does not exist in ' , baseDirectories printString)
     ]
 
     directory [
