**Overview** I have a scene manager in my game and in each 'Scene' I have a render() and a update() method for drawing and updating my game's logic. Basically, when I want to switch to another scene, let's say, when the player progresses to the next level or going from game-over back to the main menu, I just do something like this: SceneManager.getInstance().setCurrentScene(level2); //Where level 2 is a 'Scene' class. I have a 'MainGame' scene who's sole purpose is to house all the methods I call from my individual levels. So I might then do something like this: **Current method** public class Level1 extends MainGame implements Scene { private Resources res; private MyGLRenderer r; Level1(MyGLRenderer r, Resources res){ super(r, res); this.res = res; this.r = r; } @Override public void render() { draw(background); draw(playerSprite); draw(blue-enemies); } @Override public void update(){ super.movePlayer(); super.moveEnemies(); super.checkCollision(); } } However, in my game, when the player survives for a certain amount of time, I want to introduce more elements into the game, so I might then have a 'level2' Scene (although strictly, from the player's perspective, the game is perceived to be one big rolling level)..... public class Level2 extends MainGame implements Scene { private Resources res; private MyGLRenderer r; Level2(MyGLRenderer r, Resources res){ super(r, res); this.res = res; this.r = r; } @Override public void render() { draw(background); draw(playerSprite); draw(blue-enemies); draw(pink-enemies); //New!!!! ********************************* } @Override public void update(){ super.movePlayer(); super.moveEnemies(); super.checkCollision(); } } So, as you can see, Level2 is exactly the same as Leve1 but now I'm also drawing my 'pink-enemies', I can keep doing this for 'levels' 3 through 10 but I'll end up *duplicating* and simply adding to each level each time. Seems like a lot of effort just to introduce 1 or 2 new things every 'level'. **Using conditions within my render / logic?** Is there a cleaner / tidier way of achieving that which I'm trying to achieve? I could do away with all my individual 'Level' classes altogether and just work straight out my MainGame class's Render() and Update() methods, but then I would have to have something like: Render(){ //Render elements common to all levels draw(background); draw(playerSprite); draw(blue-enemies); //Render specific level objects Switch (Level){ case 4:{draw(giantAlienSpaceship);} case 3:{draw(orange-enemies);} case 2:{draw(pinkEnemies);break;} } } And then a similar **switch** in my logic. I'm not sure about this however, as it adds additional switch/conditional statements in my rendering and seems somewhat 'amateur' however, I could be completely wrong and this may be an acceptable method that people do use. Am I missing any other obvious cleaner / cleverer way to do this (similar to my first method but without the duplicated super method calls)