diff --git a/src/Storm/FileSystem/Disk.php b/src/Storm/FileSystem/Disk.php
index 1a53a92d2d8a59496d9b037945164c4a17fe0da3..b78c478d50e2ebf90065f40ac7979ebf68965f96 100644
--- a/src/Storm/FileSystem/Disk.php
+++ b/src/Storm/FileSystem/Disk.php
@@ -30,6 +30,11 @@ class Storm_FileSystem_Disk extends Storm_FileSystem_Abstract {
   }
 
 
+  public function rmdir($path) {
+    return rmdir($path);
+  }
+
+
   public function fileExists($path) {
     return file_exists($path);
   }
diff --git a/src/Storm/FileSystem/Volatile.php b/src/Storm/FileSystem/Volatile.php
index 95419c033bcbae7ed0cd9cba98f29198ca209123..6faf6cacb141dfe0f90585bde38c844f16983e06 100644
--- a/src/Storm/FileSystem/Volatile.php
+++ b/src/Storm/FileSystem/Volatile.php
@@ -97,7 +97,6 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   public function rename(string $from, string $to) : bool {
     if (!$this->fileExists($from))
       return false;
-
     $this->filePutContents($to, $this->fileGetContents($from))
          ->rm($from);
 
@@ -132,6 +131,12 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
+  public function rmdir($path) {
+    $this->asPath($path)->rm();
+    return $this;
+  }
+
+
   public function delete(string $path) : bool {
     $this->rm($path);
     return !$this->isReadable($path);
@@ -171,6 +176,11 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
+  public function isDirectory($path) {
+    return $this->entryAt($path)->isDirectory();
+  }
+
+
   public function directoryNamesAt($path) {
     $collection = $this->entryAt($path)->select(
       function ($entry) {