push refactoring and simplification