abstracted game engine to support multiple games. Added pickling