implement FR #40: add processing pipeline