diff --git a/src/unitgrade/utils.py b/src/unitgrade/utils.py
index 712297a897223d07d0685ad85e42045d7398b579..e106e1032687d4e57ee90a0968dc596756910c82 100644
--- a/src/unitgrade/utils.py
+++ b/src/unitgrade/utils.py
@@ -258,10 +258,26 @@ def methodsWithDecorator(cls, decorator):
             print(inspect.getsourcelines(f) ) # How to get all hidden questions.
     """
     for maybeDecorated in cls.__dict__.values():
-        if hasattr(maybeDecorated, 'decorator'):
-            if maybeDecorated.decorator == decorator:
-                print(maybeDecorated)
-                yield maybeDecorated
+        from types import FunctionType
+
+        def extract_wrapped(decorated):
+            if decorated.__closure__ is None:
+                return decorated
+            closure = (c.cell_contents for c in decorated.__closure__)
+            return next((c for c in closure if isinstance(c, FunctionType)), None)
+        import inspect
+        if inspect.isfunction(maybeDecorated):
+            # elif not isinstance(maybeDecorated, func):
+            f = extract_wrapped(maybeDecorated)
+            source, position = inspect.getsourcelines(f)
+            for l in source:
+                if l.strip().startswith("@hide"):
+                    yield f
+
+        # if hasattr(maybeDecorated, 'decorator'):
+        #     if maybeDecorated.decorator == decorator:
+        # print(maybeDecorated)
+        # yield maybeDecorated
 
 
 """ Methods responsible for turning a dictionary into a string that can be pickled or put into a json file. """