refactor new solution