Sorry that I'm not giving you any definitive advice. Without knowing all essential detail of your project, it would be simply impossible. Only a very general advice could be given. I think you do not expect such advice yourself. If feels like you just need some reassurance.
I want to say "it's too late", but it would be misleading and could be taken wrong. Of course, it's never too late to fix your project. It looks like you wish to change your project development radically while not doing too much work and, apparently, not making it worse. And this is something which might be too late.
First of all, please see my post:
http://www.codeproject.com/Members/SAKryukov?msg=5157460#xx5157460xx[
^].
Can you see where I'm coming from? If your architecture was good in that sense, you probably would not ask this question at all, so probably it is not, and then it means that you have to go hard way. Don't get me wrong: also, there could be some change that the easy way exists, but then again, it would be impossible to see it without knowing a lot more detail of your project. The detail you provided are not definitive. Usually, extension of the class is not a problem and rarely requires any redesign, but moving a class along the hierarchy could be a problem, unless your architecture is extremely flexible. But the fact that you have some problems even with such a simple thing as extension is a bad sign: it tells us that most likely you have to do a major redesign. And this is the reassurance I mentioned above: this is what it is: if you feel you need major redesign, do major redesign, don't be afraid of it.
I would tell you more: in by observation, really good projects are developed at least twice, with second attempt performed nearly from scratch. This is pretty natural; first you create a really working prototype and don't like it much. But then you clearly see all the mistakes you have made, so you gladly do the same project from scratch. And only then you create a really good thing.
Look, I see many people who would protest this idea; they say this is wasteful. Too bad that there are too many of such people, who already caused enormous waste of time by denying the need for the time for such prototype. They pretend they saved a lot of time, but in fact they create projects which never reach maturity, and waste a lot more time on all those multiple version with endless "improvements", often never coming to an acceptably good product.
—SA