Simplify our decorator code and make it reusable.
The wrapped function now uses the same name as the original.
We want keyword arguments with their defaults in the signature.