don't think the destructor or the dlfns.clear is necessary