using `contextData` would be more consistent with other widgets