modified push.c