avoid breaking abstraction of file system