push refactoring