add ::reduce