add the notion of a manipulation pipeline; manage thread computation in there instead of haveing each stage threaded