add widget implementation