Try to avoid overloading builtin names. `widget_type` would work here as well. Also, is there a reason to modify the source dict here?