diff --git a/src/Storm/FileSystem/Disk.php b/src/Storm/FileSystem/Disk.php
index c9248e3a269850446c224c7176a3fc06a801829e..5a66a28e1212de2663bfb84aa718d2a152adac55 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(string $path) :bool {
+    return rmdir($path);
+  }
+
+
   public function fileExists($path) {
     return file_exists($path);
   }
@@ -129,4 +134,11 @@ class Storm_FileSystem_Disk extends Storm_FileSystem_Abstract {
     asort($files);
     return $files;
   }
+
+
+  public function deleteFilesAt(string $path) : self {
+    foreach ($this->fileNamesAt($path) as $filename)
+      $this->delete($path. '/' .$filename);
+    return $this;
+  }
 }
diff --git a/src/Storm/FileSystem/Volatile.php b/src/Storm/FileSystem/Volatile.php
index c2efb0e8b01b8a9ebcbfccf7c36b8fb4c6ef4b43..da128b2a62ca656a38104aa553e498bc3ce7dbb8 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);
 
@@ -126,7 +125,13 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
-  public function rm($path) {
+  public function rm($path) : self {
+    $this->asPath($path)->rm();
+    return $this;
+  }
+
+
+  public function rmdir(string $path) : self {
     $this->asPath($path)->rm();
     return $this;
   }
@@ -171,6 +176,11 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
+  public function isDirectory(string $path) : bool {
+    return $this->entryAt($path)->isDirectory();
+  }
+
+
   public function directoryNamesAt($path) {
     $collection = $this->entryAt($path)->select(
       function ($entry) {
@@ -189,6 +199,13 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
     array_walk($collection, function (&$entry) {$entry = $entry->getName();});
     return $collection;
   }
+
+
+  public function deleteFilesAt(string $path) :self {
+    foreach ($this->fileNamesAt($path) as $filename)
+      $this->delete($path. '/' .$filename);
+    return $this;
+  }
 }
 
 
diff --git a/tests/Storm/FileSystem/DiskTest.php b/tests/Storm/FileSystem/DiskTest.php
index 091720bd0158dabf369f5b3c314ee1d14694373b..677344fec7ec6b70ec12f07ae378cc7217b569ed 100644
--- a/tests/Storm/FileSystem/DiskTest.php
+++ b/tests/Storm/FileSystem/DiskTest.php
@@ -42,10 +42,14 @@ class Storm_FileSystem_DiskBasicTest extends Storm_FileSystem_DiskTestCase {
   }
 
   public function tearDown() {
-    chmod($this->_directory.'/testfile',0700);
-    unlink($this->_directory.'/testfile');
-    chmod($this->_directory.'/'.$this->_subdirectory,0700);
-    rmdir($this->_directory.'/'.$this->_subdirectory);
+    if (file_exists($this->_directory. '/testfile')){
+      chmod($this->_directory . '/testfile', 0700);
+      unlink($this->_directory . '/testfile');
+    }
+    if (file_exists($this->_directory. '/'. $this->_subdirectory)){
+      chmod($this->_directory . '/' . $this->_subdirectory, 0700);
+      rmdir($this->_directory . '/' . $this->_subdirectory);
+    }
     rmdir($this->_directory);
     parent::tearDown();
   }
@@ -114,4 +118,20 @@ class Storm_FileSystem_DiskBasicTest extends Storm_FileSystem_DiskTestCase {
     $this->assertEquals('buy some butter and some coffee',
                         $this->_fs->fileGetContents($this->_directory . '/testfile'));
   }
+
+
+  /** @test */
+  public function deleteFilesAtShouldDeleteTestFile() {
+    $this->_fs->filePutContents($this->_directory . '/testfile2',
+                                'buy some butter');
+    $this->_fs->deleteFilesAt($this->_directory);
+    $this->assertEmpty($this->_fs->fileNamesAt($this->_directory));
+  }
+
+
+  /** @test */
+  public function rmdirShouldDeleteSubDirectory() {
+    $this->_fs->rmdir($this->_directory .'/'. $this->_subdirectory);
+    $this->assertFalse($this->_fs->fileExists($this->_directory .'/'. $this->_subdirectory));
+  }
 }