use an explicit history du to discriminate between history reset and regular history values, implement yield