remove business logic from AbstractWidget::__construct()