don't let them create invalid states
[#21]
update on keyup instead of value change
[#21]