added exponential decay