reduction part is revised