widgets architecture