new diff parse that actually is worse than what I wrote before... but at least its nicer code to look at.