Actually implement widget model
Remove redundant "private:" headers in classes