add accumulate
finish accumulate