custom serialization to deal with different map versions
custom serialization to deal with multiple versions of a file type