diff --git a/lib/System/Unix/Path.cpp b/lib/System/Unix/Path.cpp
index d2ba0f9..55ef666 100644
--- a/lib/System/Unix/Path.cpp
+++ b/lib/System/Unix/Path.cpp
@@ -239,10 +239,8 @@
   return path.substr(pos+1);
 }
 
-bool
-Path::getStatusInfo(StatusInfo& info) {
-  if (!isFile() || !readable())
-    return false;
+void
+Path::getStatusInfo(StatusInfo& info) const {
   struct stat buf;
   if (0 != stat(path.c_str(), &buf)) {
     ThrowErrno(std::string("Can't get status: ")+path);
@@ -255,11 +253,10 @@
   info.isDir = S_ISDIR(buf.st_mode);
   if (info.isDir && path[path.length()-1] != '/')
     path += '/';
-  return true;
 }
 
 bool
-Path::getDirectoryContents(Vector& result) const {
+Path::getDirectoryContents(std::set<Path>& result) const {
   if (!isDirectory())
     return false;
   DIR* direntries = ::opendir(path.c_str());
@@ -276,7 +273,7 @@
         ThrowErrno(aPath.path + ": can't get status");
       if (S_ISDIR(buf.st_mode))
         aPath.path += "/";
-      result.push_back(aPath);
+      result.insert(aPath);
     }
     de = ::readdir(direntries);
   }
diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc
index d2ba0f9..55ef666 100644
--- a/lib/System/Unix/Path.inc
+++ b/lib/System/Unix/Path.inc
@@ -239,10 +239,8 @@
   return path.substr(pos+1);
 }
 
-bool
-Path::getStatusInfo(StatusInfo& info) {
-  if (!isFile() || !readable())
-    return false;
+void
+Path::getStatusInfo(StatusInfo& info) const {
   struct stat buf;
   if (0 != stat(path.c_str(), &buf)) {
     ThrowErrno(std::string("Can't get status: ")+path);
@@ -255,11 +253,10 @@
   info.isDir = S_ISDIR(buf.st_mode);
   if (info.isDir && path[path.length()-1] != '/')
     path += '/';
-  return true;
 }
 
 bool
-Path::getDirectoryContents(Vector& result) const {
+Path::getDirectoryContents(std::set<Path>& result) const {
   if (!isDirectory())
     return false;
   DIR* direntries = ::opendir(path.c_str());
@@ -276,7 +273,7 @@
         ThrowErrno(aPath.path + ": can't get status");
       if (S_ISDIR(buf.st_mode))
         aPath.path += "/";
-      result.push_back(aPath);
+      result.insert(aPath);
     }
     de = ::readdir(direntries);
   }
