Refactor to make the widget init-less

Add documentation and update sample