hard refactor