Originally the idea for making the currentState private was to stop the user from calling enter/update/exit functions willy nilly. Leave the FSM as the proprietary keeper of those calls. But I suppose there's no harm.