widget type will be inferred inside the class