revert the last revert ==> re apply the refactoring things.
Revert "Temporarily revert previous refactoring patch."

This reverts commit eb003042b9ab439a939311f852875192aacd62a3.
refactoring: use widget id.
widget, gui: created 'description' infrastructure.