push should be decided on forward. fixing #5?