Make Widget impl close to upstream