widget class refactoring to protect some core code on extending. Widget.onInitalize() method was added.