reduce functionality