Now there are two types of games. One is single threaded where drawing and update is done in one thread, and the other is double threaded where drawing and update is done on separate threads.
Need to start making comments really soon and cleaning up the code, and test cases too.