easier to reduce with object