I do this to conform to rules such as, no static or global variables, no singleton patterns and the single responsibility principle.
Sorry that has got to be the absolute worst reason to rewrite your code. The end user doesn't care about any of those things, only results.
Look - forget the "rules" and begin to think only about results. I'm going to be brutally honest with you - nobody else will ever look at your source code for whatever game you're making. If you're lucky they *might* look at the current version of the game as a finished product running on a platform. They won't know or care if you followed the "rules".
Anyway you're design is pathologically simple and uses far too much syntactic sugar to do far too little. Please think about the kind of game and features you need and design your classes around that. Are you making a 3d game with many 3d actors? Can they all share the same skeleton in a scene graph class? Can they share keyframe animations, what about textures, etc.
Ultimately what should force you to scrap a design and start over is if it doesn't scale in terms of size or speed (or both).