introduce CharacterManager