more type-stable reductions (fix #6069)