A decorator takes a function and returns a callable, often a wrapper that adds behavior around the original call. The wrapper still needs to honor the original function's inputs and result. Forward positional arguments with a star and keyword arguments with two stars. functools.wraps copies useful metadata such as the name and documentation, which helps debugging and inspection. A wrapper can also record a call without changing what the caller receives. In this lesson you'll add multipliers, preserve keyword settings, inspect a function name, and record an audit trail. The tests inspect returned behavior rather than searching your source for decorator syntax, so an equivalent callable design is accepted.