This can all be a lot simpler when switching to more specific widget