Include charset
Add modifier option, select between types and signal on collision
Don't return new value for caller to handle, set UI immediately
Tidy code and include needed callbacks