refactor widgets + docs