working on SingPuzzleState and CharacterExplainingState