diff --git a/src/Storm/FileSystem/Disk.php b/src/Storm/FileSystem/Disk.php
index b78c478d50e2ebf90065f40ac7979ebf68965f96..5a66a28e1212de2663bfb84aa718d2a152adac55 100644
--- a/src/Storm/FileSystem/Disk.php
+++ b/src/Storm/FileSystem/Disk.php
@@ -30,7 +30,7 @@ class Storm_FileSystem_Disk extends Storm_FileSystem_Abstract {
   }
 
 
-  public function rmdir($path) {
+  public function rmdir(string $path) :bool {
     return rmdir($path);
   }
 
@@ -136,8 +136,9 @@ class Storm_FileSystem_Disk extends Storm_FileSystem_Abstract {
   }
 
 
-  public function deleteFilesAt($path) {
+  public function deleteFilesAt(string $path) : self {
     foreach ($this->fileNamesAt($path) as $filename)
-      $this->delete($path.'/'.$filename);
+      $this->delete($path. '/' .$filename);
+    return $this;
   }
 }
diff --git a/src/Storm/FileSystem/Volatile.php b/src/Storm/FileSystem/Volatile.php
index 6faf6cacb141dfe0f90585bde38c844f16983e06..da128b2a62ca656a38104aa553e498bc3ce7dbb8 100644
--- a/src/Storm/FileSystem/Volatile.php
+++ b/src/Storm/FileSystem/Volatile.php
@@ -125,13 +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($path) {
+  public function rmdir(string $path) : self {
     $this->asPath($path)->rm();
     return $this;
   }
@@ -176,7 +176,7 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
-  public function isDirectory($path) {
+  public function isDirectory(string $path) : bool {
     return $this->entryAt($path)->isDirectory();
   }
 
@@ -201,9 +201,10 @@ class Storm_FileSystem_Volatile extends Storm_FileSystem_Abstract {
   }
 
 
-  public function deleteFilesAt($path) {
+  public function deleteFilesAt(string $path) :self {
     foreach ($this->fileNamesAt($path) as $filename)
-      $this->delete($path.'/'.$filename);
+      $this->delete($path. '/' .$filename);
+    return $this;
   }
 }
 
diff --git a/tests/Storm/FileSystem/DiskTest.php b/tests/Storm/FileSystem/DiskTest.php
index 0c6db991cd402495aa21260d848c3e3d4a656c56..677344fec7ec6b70ec12f07ae378cc7217b569ed 100644
--- a/tests/Storm/FileSystem/DiskTest.php
+++ b/tests/Storm/FileSystem/DiskTest.php
@@ -42,12 +42,14 @@ class Storm_FileSystem_DiskBasicTest extends Storm_FileSystem_DiskTestCase {
   }
 
   public function tearDown() {
-    if (file_exists($this->_directory.'/testfile')){
-      chmod($this->_directory.'/testfile',0700);
-      unlink($this->_directory.'/testfile');
+    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);
     }
-    chmod($this->_directory.'/'.$this->_subdirectory,0700);
-    rmdir($this->_directory.'/'.$this->_subdirectory);
     rmdir($this->_directory);
     parent::tearDown();
   }
@@ -125,4 +127,11 @@ class Storm_FileSystem_DiskBasicTest extends Storm_FileSystem_DiskTestCase {
     $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));
+  }
 }