adding push and pull