Refactor with interfaces INextCharacter, IEndStage

INextCharacter: select a new character
IEndStage: terminal state of Stage