make requires_context a decorator