Refactor a lot, add some functions that can run (onChange, onCancel, etc) add ability to override classes easily