Feature/widget refactor