Generic character controller