C interfaces and implementations