Interfaces are great. You can write a library, bind your code internally to interfaces and handout the library to consumers which in turn just implement the interfaces. You, as a library implementer, are none the wiser about any implementers. All you know is your code and your interface. Neat!