refactor new method