rewrite the interactions between UI and Widget using event
a simple filter