diff --git a/import.go b/import.go
index b0963ad593b9fa6f2b76f75fdd42a4ce7e57481c..70be5763f038a0529b6125caa3e43403c9f5ad00 100644
--- a/import.go
+++ b/import.go
@@ -95,7 +95,7 @@ func (s *Settings[C]) importFiles() {
 	s.fileWatch.Lock()
 
 	// new files may have been added
-	tmpWatchList := make(map[string]string)
+	tmpWatchList := make(map[string]bool)
 
 	defer func() {
 		s.fileWatch.watchList = tmpWatchList
@@ -123,7 +123,7 @@ func (s *Settings[C]) importFiles() {
 		s.importStream(reader{s.files.format, r})
 		f.Close()
 
-		tmpWatchList[fn] = fn
+		tmpWatchList[fn] = true
 
 	}
 
@@ -138,7 +138,7 @@ func (s *Settings[C]) importFiles() {
 		s.importStream(reader{f.format, r})
 
 		r.Close()
-		tmpWatchList[f.path] = f.path
+		tmpWatchList[f.path] = true
 	}
 
 }
diff --git a/settings.go b/settings.go
index 15f66f6a3877f14fd9214e033e99b52c60179f0a..62a9d095cb54c61a7ab64a79c3ffbcf49058004a 100644
--- a/settings.go
+++ b/settings.go
@@ -13,7 +13,7 @@ import (
 type fileWatch struct {
 	sync.Mutex
 	watcher     *fsnotify.Watcher
-	watchList   map[string]string
+	watchList   map[string]bool
 	cancelWatch chan bool
 	onWatch     bool
 }
diff --git a/watch.go b/watch.go
index 950304861360e4c443f049c7392ede751308906b..52967e7e52b249c81b2ca99a9cb51b4bd6a2581b 100644
--- a/watch.go
+++ b/watch.go
@@ -5,6 +5,8 @@ package configuration
 
 import (
 	"github.com/fsnotify/fsnotify"
+	"os"
+	"path"
 )
 
 func (s *Settings[C]) initWatch() *Settings[C] {
@@ -97,7 +99,19 @@ func (s *Settings[C]) Watch() *Settings[C] {
 
 	// add all files to the watch list
 	for file := range s.fileWatch.watchList {
-		err := s.fileWatch.watcher.Add(file)
+
+		fileInfo, err := os.Stat(file)
+		if err != nil {
+			s.errors = append(s.errors, err)
+			continue
+		}
+
+		if fileInfo.IsDir() {
+			err = s.fileWatch.watcher.Add(file)
+		} else {
+			err = s.fileWatch.watcher.Add(path.Dir(file))
+		}
+
 		if err != nil {
 			s.errors = append(s.errors, err)
 		}
@@ -119,6 +133,11 @@ func (s *Settings[C]) Watch() *Settings[C] {
 					return
 				}
 
+				_, exist := s.fileWatch.watchList[event.Name]
+				if !exist {
+					continue
+				}
+
 				if event.Op&fsnotify.Write == fsnotify.Write {
 					s.Import()
 				} else if event.Op&fsnotify.Remove == fsnotify.Remove {