2) PlayerFlags should instead be an EnumMap<Flag, Boolean> where Flag is a simple enum of all the flags. Similarly, PlayerStats should be EnumMap<Stat, Integer>. I would remove everything else from PlayerCharacter; it would just have two getter methods for the EnumMap's.