move run to widget, add stop function