http://eli.thegreenplace.net/2009/01/09/writing-a-game-in-python-with-pygame-part-iii/