don't use path.existsSync