#1: improved performance by not triggering a backwards flow for variables that get overwritten anyway
#2: added some assertions