boilerplate for creating new widgets