Hey! 1) Yes in general when you are working on one-file only program you set your main at the end, it's typical in C/C++ and in fact a lot of languages. If you're on a bigger program your main will be in a separate file. 2) We set main function at the end to avoid declare prototype in the code, here you add preprocessor treatment and it's useless, if main is at the end it does know what are your functions. A more correct way to declare prototype is to declare them in a header file and not in the cpp file 3) I don't, naming things in very hard but you have to follow one principle in software engineering, it's: separation of concerns. Each function must have one thing to do and not a lot of things. That means your code must be clean and cut! (I'm not a native english speaker)