how push works