One more advantage I found over returning interface is that, if a person wants a property
to be exposed as public (to be available in other class) He is force to write it in the interface
Not just in the class
ie he also want it in interface ie our return type.
so he write all properties in the interface that are going to be public in class.
this gives good control, every thing public in class will be there in interface and this is good