implementation of Push/PopExn complete