widget is self-contained