Working on the next version of a piece of software is hard. You have extended the current piece of software as far as you can and added features at the cost of a clean design. There are a number of features that you currently cannot implement, so after they amount up for awhile, you decide that you need version 2.
Version 2 is not like starting from scratch, which is both a good and bad thing. For version 2 you have a bunch of source code from version 1 that you can use. The bad news is that much of the source code from version 1 will have to be tweaked in order to incorporate the new features that you want to add. Personally, I have found myself cutting-and-pasting code from version 1 into version 2 then modifying it to conform to the current design. My gut says to start version 2 from scratch, but my head knows that that would be a waste time and I probably would end up producing similar code anyways.