It is really hard to redesign software. Very often, no matter how much you have a new understanding of the problem, you tend yourself seeing the same problems facing the same choices and understanding making the same compromises over and over again.