* added reduce mechanism