implemented a CRTP for Reducer::process