greatly reduced event map API.  components are only re-rendered when its state has changed