#4522 refactor widget separation