split out actual pipeline stage into separate class