It's unfortunate that join's, format's etc. definitions have to be rewritten here. There's no guarantee this code will stay in sync with the actual implementations. Maybe we should move this factory to the real lib and defines functions in terms of it. But I'd like to do that without losing ease of use.