james | added functools wraps for better stacktraces

The wraps decorator assigns the name and docstring of the wrapped function to the function that wraps it.  This allows for clear stackstraces.