Well it would be nice to actually go through all the code. Not trying to be a douchebag or rip your card apart but here is some random stuff i saw. Again this is just my personal opinion. Might want to actually have Zero in your switch instead of just relying on the default. That should be an error check if anything. Also your pointers seem a bit weird though i would have to go through it more to see. Might as well make your alpha changer into a function as well. You have almost identical code running 4 separate times. I think a good rule is if your going to use it more then twice make it a function. Try to always declare your variables on creation if you can you initialize int width; then assign a value to it but just to be on the safe side try to always int width = 0; Throw your timer class and other classes declare into there own separate header and cpp files, if you are trying for OOP that is. Your naming conventions are also a tad mixed up. Most of the time you are using camel casing which is generally used in the industry. But then you switch to some variables that have caps in the beginning. While not a big deal it will save some time if you always follow the same formula. Also adding m in front of class variables ex: mWidth; is a good way to make sure that you always know its a member variable. Though that is preference. Same with const int FRAMES_PER_SECOND = 20; add a lowercase k in front of the constant variables. Also as for names with all capitals, those are usually reserved for DEFINES. I suggest just setting some breakpoints and seeing exactly what happens when it runs as intended. Then switch the value and see what changes, then it should be pretty apparent what is happening. Check all values in the process. Your timer Constructor looks like ``` Timer::Timer() { //Initialize the variables startTicks = 0; pausedTicks = 0; paused = false; started = false; } ``` While this works you should generally: ``` Timer::Timer() :startTicks(0) ,pausedTicks(0) ,paused(false) ,started(false) { // Clear stuff like arrays here. Or things that require if statements. } ``` your button class is missing a ; ``` class Buttons { } ``` Not sure what this is about. You dont need brackets around each statement. ``` if( ( started == true ) && ( paused == false ) ) ``` Crap that really doesnt matter >! while (OpeningScene4 == true) can be changed to just while(OpeningScene4). Same with false while (!OpeningScene4 ). Though some people prefer == true for readability. Upload your project or teamviewer me and i can look at it for you. Good job so far, wish i had that level of knowledge at your age.