updated target widgets to use callbacks instead of polling