using file observer