refactor pipelines to use upload