C interfaces and implementations - implementations for creating reusable software