learning PUSH and PUll