I've seen examples of this problem when working on legacy code. There is a huge temptation to look at a mess of if-statements, inconsistent architecture, and seemingly redundant code - and decide to rewrite it from scratch. Only to find out afterwards that you're also going to rediscover every edge-case, system quirk, and dirty data set.