add unbind methods
add onchange optimization
add ability to use labels with same vals