My application has the following model that I simplified on purpose, and I think there is a lot of code smell in the way I am using interfaces: