refactor 3