I think your code looks very well written and I apreciate all the comments that help explain what is happening in the code. I think it might be helpful to have a brief paragraph at the top of the code that briefly goes over what the file does. The only other thing I would suggest would be to create a seperate file or files for the multiple classes you have in your main file, and let you main file just be the small while loop you have at the very bottom of your code. This is something Jagath told me to start implenting in my coding projects and I think it helps make the code a bit more readible and a bit more modular.