It took me like a year to really understand how everything works and come to this version (it was 4 years ago). I really learned C/C++ (and some assembly) with doing this, so I wasn't really good at C++ before (and if you take a look at the code, you'll see that it's not really pretty).
(Sorry for my english, I'm french)