preserving original function names when wrapping them