diff --git a/unitgrade/__init__.py b/unitgrade/__init__.py
index f3879d9598bd049e16f5d206fb7a9833074012f6..99989728ac63870fdc5e1b3da76d02f0f320a3d5 100644
--- a/unitgrade/__init__.py
+++ b/unitgrade/__init__.py
@@ -1,9 +1,9 @@
 __version__ = "0.1.1"
 import os
-import compress_pickle
-
+# DONT't import stuff here since install script requires __version__
 
 def cache_write(object, file_name, verbose=True):
+    import compress_pickle
     dn = os.path.dirname(file_name)
     if not os.path.exists(dn):
         os.mkdir(dn)
@@ -19,6 +19,7 @@ def cache_exists(file_name):
 
 
 def cache_read(file_name):
+    import compress_pickle # Import here because if you import in top the __version__ tag will fail.
     # file_name = cn_(file_name) if cache_prefix else file_name
     if os.path.exists(file_name):
         with open(file_name, 'rb') as f:
diff --git a/unitgrade/__pycache__/__init__.cpython-38.pyc b/unitgrade/__pycache__/__init__.cpython-38.pyc
index fe29634741d7164df169bb385cf163de1bb123e7..aad20047d70f9beb019dc28fbd0b324c810fd2da 100644
Binary files a/unitgrade/__pycache__/__init__.cpython-38.pyc and b/unitgrade/__pycache__/__init__.cpython-38.pyc differ
diff --git a/unitgrade/__pycache__/unitgrade.cpython-38.pyc b/unitgrade/__pycache__/unitgrade.cpython-38.pyc
index 1820044dbeb50acd99e4450a74eb13fb9884584a..4ec517f8d78648f4f3a326106aaf7679cb7f9047 100644
Binary files a/unitgrade/__pycache__/unitgrade.cpython-38.pyc and b/unitgrade/__pycache__/unitgrade.cpython-38.pyc differ
diff --git a/unitgrade/__pycache__/unitgrade_helpers.cpython-38.pyc b/unitgrade/__pycache__/unitgrade_helpers.cpython-38.pyc
index de94034c741f9ec141918e8686ac6779ae7409eb..c331efa43b502f419b9e03d666adf77bedf29570 100644
Binary files a/unitgrade/__pycache__/unitgrade_helpers.cpython-38.pyc and b/unitgrade/__pycache__/unitgrade_helpers.cpython-38.pyc differ
diff --git a/unitgrade/unitgrade.py b/unitgrade/unitgrade.py
index 3488f58fb3c23f9cfed47c9742df21d22f107b92..222443fb2187e0338b94e22b36715bfdb83b59ad 100644
--- a/unitgrade/unitgrade.py
+++ b/unitgrade/unitgrade.py
@@ -114,7 +114,7 @@ class QItem(unittest.TestCase):
     def test(self, computed, expected):
         self.testfun(computed, expected)
 
-    def get_points(self, verbose=False, show_expected=False, show_computed=False,unmute=False, passall=False, **kwargs):
+    def get_points(self, verbose=False, show_expected=False, show_computed=False,unmute=False, passall=False, silent=False, **kwargs):
         possible = 1
         computed = None
         def show_computed_(computed):
@@ -132,12 +132,13 @@ class QItem(unittest.TestCase):
             computed = self.compute_answer(unmute=unmute)
         except Exception as e:
             if not passall:
-                print("\n=================================================================================")
-                print(f"When trying to run test class '{self.name}' your code threw an error:", e)
-                show_expected_(correct)
-                import traceback
-                print(traceback.format_exc())
-                print("=================================================================================")
+                if not silent:
+                    print("\n=================================================================================")
+                    print(f"When trying to run test class '{self.name}' your code threw an error:", e)
+                    show_expected_(correct)
+                    import traceback
+                    print(traceback.format_exc())
+                    print("=================================================================================")
                 return (0, possible)
 
         if self._computed_answer is None:
@@ -153,11 +154,12 @@ class QItem(unittest.TestCase):
             if not passall:
                 self.test(computed=computed, expected=correct)
         except Exception as e:
-            print("\n=================================================================================")
-            print(f"Test output from test class '{self.name}' does not match expected result. Test error:")
-            print(e)
-            show_computed_(computed)
-            show_expected_(correct)
+            if not silent:
+                print("\n=================================================================================")
+                print(f"Test output from test class '{self.name}' does not match expected result. Test error:")
+                print(e)
+                show_computed_(computed)
+                show_expected_(correct)
             return (0, possible)
         return (1, possible)
 
diff --git a/unitgrade/unitgrade_helpers.py b/unitgrade/unitgrade_helpers.py
index 4039f0be2affdfe55cb100cb00270e76c378f555..2cd7709757a963218922893d4d9844f87527e025 100644
--- a/unitgrade/unitgrade_helpers.py
+++ b/unitgrade/unitgrade_helpers.py
@@ -87,7 +87,8 @@ def upack(q):
     # ws, possible, obtained = (np.asarray(x).squeeze() for x in zip([(i['w'], i['possible'], i['obtained']) for i in q.values()]))
     # return ws, possible, obtained
 
-def evaluate_report(report, question=None, qitem=None, passall=False, verbose=False,  show_expected=False, show_computed=False,unmute=False, show_help_flag=True):
+def evaluate_report(report, question=None, qitem=None, passall=False, verbose=False,  show_expected=False, show_computed=False,unmute=False, show_help_flag=True,
+                    silent=False):
     now = datetime.now()
     ascii_banner = pyfiglet.figlet_format("UnitGrade", font="doom")
     b = "\n".join( [l for l in ascii_banner.splitlines() if len(l.strip()) > 0] )
@@ -129,7 +130,7 @@ def evaluate_report(report, question=None, qitem=None, passall=False, verbose=Fa
             sys.stdout.flush()
             import time
             start = time.time()
-            (current, possible) = item.get_points(show_expected=show_expected, show_computed=show_computed,unmute=unmute, passall=passall)
+            (current, possible) = item.get_points(show_expected=show_expected, show_computed=show_computed,unmute=unmute, passall=passall, silent=silent)
             q_[j] = {'w': iw, 'possible': possible, 'obtained': current, 'hidden': hidden, 'computed': str(item._computed_answer), 'title': item.title}
             tsecs = np.round(time.time()-start, 2)