widget: added a header inclusion guard code.
refactoring: adopt widget id concept. still going on...