Widgets are now self-discoreved. This allows optional dependencies to be used