Fixed typo + started using functools.wraps decorator

Ironically, I had to wrap functools.wraps, so essentially we end up with a decorator that wraps a wrapped wrapper decorator