Adding some validation and new events to allow updating the view on change