wrapping a function that could take any arguments and return any type is tricky. probably have to takea ll void * pointers and return a void * pointer