add new dd algorithm

choose an algorithm based on the value being updated
add combine function to reduce many low level changes into fewer high
level changes