whew...custom serialization for saving and loading game state