Added push and pull classes (optional)

Basically the same as in the original.