CharController refactor