refactor dlfcn support into DLFCN