It is a Common Lisp philosophy that we shold flush any storing functions where a SETF of an accessor will suffice. Well I suggest that we flush PUSH for this reason. Instead of (PUSH X (CAR Y)) programmers should be encouraged to write (SETF (POP (CAR Y)) X)!