diff --git a/trashcli/filesystem.py b/trashcli/filesystem.py
index <HASH>..<HASH> 100644
--- a/trashcli/filesystem.py
+++ b/trashcli/filesystem.py
@@ -109,7 +109,12 @@ class Path (unipath.Path) :
     def mkdir(self):

         os.mkdir(self.path)

 

-    def mkdirs(self, mode=0777):

+    def mkdirs(self):

+        if self.isdir():

+            return

+        os.makedirs(self.path)

+

+    def mkdirs_using_mode(self, mode):

         if self.isdir():

             os.chmod(self.path, mode)

             return

diff --git a/trashcli/trash.py b/trashcli/trash.py
index <HASH>..<HASH> 100644
--- a/trashcli/trash.py
+++ b/trashcli/trash.py
@@ -84,7 +84,7 @@ class TrashDirectory(object) :
                                                  trash_info.deletion_date)
 
         if not self.files_dir.exists() :
-            self.files_dir.mkdirs(0700)
+            self.files_dir.mkdirs_using_mode(0700)
 
         try :
             path.move(trashed_file.actual_path)
@@ -189,7 +189,7 @@ class TrashDirectory(object) :
     def persist_trash_info(self,trash_info) :
         assert(isinstance(trash_info, TrashInfo))
 
-        self.info_dir.mkdirs(0700)
+        self.info_dir.mkdirs_using_mode(0700)
         self.info_dir.chmod(0700)
 
         # write trash info
Fixed #<I>: restore-trash sets all-write permissions for the destination directory