cleanup Sonar: better model and responsibility separation