Introduce Widget static methods

Fixes #196 
it doesnt look good on diff, but theres only one line in between this and `constructor: (....`