more refactor 2