move towards a pipeline abstraction