refactor 18