remove reduce wrapper; more tests

Why remove this wrapper?  What's the rationale?

I guess because I'm considering the possibility of widely expanding our dynamic dispatch, this feels like it's going the wrong direction.

It's also a minor API-breaking change.