widgets refactor & update