Widget refactor