bug refactor to make widget attributes bundles of data that get passed around