When removing or renaming a folder, subfiles/folders of the path was not being updated
diff --git a/request-example.go b/request-example.go
index 0f67888..f51eb0d 100644
--- a/request-example.go
+++ b/request-example.go
@@ -11,6 +11,7 @@
 	"os"
 	"path/filepath"
 	"sort"
+	"strings"
 	"sync"
 	"syscall"
 	"time"
@@ -90,12 +91,32 @@
 		file.name = r.Target
 		fs.files[r.Target] = file
 		delete(fs.files, r.Filepath)
+
+		if file.IsDir() {
+			fmt.Printf("Rename Dir %v, %v, %v\n", r.Target, file.name, r.Filepath)
+			for path, file := range fs.files {
+				if strings.HasPrefix(path, r.Filepath+"/") {
+					fmt.Printf("renaming %v from %v to %v\n", file.name, path, r.Target+path[len(r.Filepath):])
+					file.name = r.Target + path[len(r.Filepath):]
+					fs.files[r.Target+path[len(r.Filepath):]] = file
+					delete(fs.files, path)
+				}
+			}
+		}
 	case "Rmdir", "Remove":
-		_, err := fs.fetch(filepath.Dir(r.Filepath))
+		file, err := fs.fetch(filepath.Dir(r.Filepath))
 		if err != nil {
 			return err
 		}
 		delete(fs.files, r.Filepath)
+
+		if file.IsDir() {
+			for path := range fs.files {
+				if strings.HasPrefix(path, r.Filepath+"/") {
+					delete(fs.files, path)
+				}
+			}
+		}
 	case "Mkdir":
 		_, err := fs.fetch(filepath.Dir(r.Filepath))
 		if err != nil {