reimplement Pipeline::run and rename to push