Widget refactoring

Widgets can have many instances.