slightly changes end_push return value