Version 0.3: Changed to using functors for processing to allow processors with state.