daemon through a table of function pointers. this greatly simplifies the linker magic required to allow the modules to talk with the daemon.