using decorators
more explicit decorators