Library plugin interface: struct CompLibraryFunction { CompLibraryFunction *next; CompLibraryFunction *prev; char *name; void *function; } add CompLibraryFunction *libFunctions to CompDisplay; a additional vtable entry libraryFunctionUpdated(CompDisplay *d, char *name); a function addLibraryFunction(CompDisplay *d, char *name, void *function); and a function removeLibraryFunction(CompDisplay *d, char *name, void *function); Both would call libraryFunctionUpdated to ensure other plugins know about loading/unloading of functions.