add events controller and model
refactor widget
event controller can capture payloads
updates to view