PUSH refactor