is there something decorators can do that wrapping things with a function cannot?