support push and pull, fixes #1