I'm not a fan of re-writes, but in the past iteration of MarketJS, i have to admit that we changed a considerable amount of the code base. Part of me says it's pretty close to a rewrite, but i'd rather call it a 're-imagine'.
The word "re-imagine" is powerful: it forces creators to toss out conventional wisdom, and tackle the problem at hand in its purest form. Unlike a re-write, a re-imagine places a blank sheet of in front of you. All pressure to migrate old code is off, as we initiate the creative engine.
Our game team understands this concept real well: whenever we get tired of an old mechanic, we push the reset button with a blank project. No pressure to re-make a platformer, or a physics game, or a match-3. Instead, we shift our attention to what's fun, and what brings meaning to players.