implemented recursive file watcher