diff --git a/Plotting.py b/Plotting.py
index 4d00a8f29522abeb361c5036fd9013a027945c07..cfed1efae84b5312a87bc3b9bd42bab8301ddef5 100644
--- a/Plotting.py
+++ b/Plotting.py
@@ -18,7 +18,7 @@ from sympy import Symbol
 
 from Quadrature import Quadrature
 from Initial_Condition import InitialCondition
-from Basis_Function import Basis
+from Basis_Function import Basis, OrthonormalLegendre
 from projection_utils import calculate_exact_solution,\
     calculate_approximate_solution, Mesh
 from encoding_utils import decode_ndarray
@@ -318,7 +318,7 @@ def plot_evaluation_results(evaluation_file: str, directory: str,
 
 
 def plot_approximation_results(data_file: str, directory: str, plot_name: str,
-                               basis: Basis, quadrature: Quadrature,
+                               quadrature: Quadrature,
                                init_cond: InitialCondition) -> None:
     """Plots given approximation results.
 
@@ -333,8 +333,6 @@ def plot_approximation_results(data_file: str, directory: str, plot_name: str,
         Path to directory in which plots will be saved.
     plot_name : str
         Name of plot.
-    basis: Basis object
-        Basis used for calculation.
     quadrature: Quadrature object
         Quadrature used for evaluation.
     init_cond : InitialCondition object
@@ -348,13 +346,12 @@ def plot_approximation_results(data_file: str, directory: str, plot_name: str,
     # Decode all ndarrays by converting lists
     approx_stats = {key: decode_ndarray(approx_stats[key])
                     for key in approx_stats.keys()}
-    approx_stats.pop('polynomial_degree')
+    approx_stats['basis'] = OrthonormalLegendre(**approx_stats['basis'])
     approx_stats['mesh'] = Mesh(**approx_stats['mesh'])
 
     # Plot exact/approximate results, errors, shock tubes,
     # and any detector-dependant plots
-    plot_results(quadrature=quadrature, basis=basis,
-                 init_cond=init_cond, **approx_stats)
+    plot_results(quadrature=quadrature, init_cond=init_cond, **approx_stats)
 
     # Set paths for plot files if not existing already
     if not os.path.exists(directory):
diff --git a/Troubled_Cell_Detector.py b/Troubled_Cell_Detector.py
index 807e5abac900b5032569a7704e619abea7f15569..ed420b966214d58067ed4948d85d485d22aa3d83 100644
--- a/Troubled_Cell_Detector.py
+++ b/Troubled_Cell_Detector.py
@@ -112,7 +112,7 @@ class TroubledCellDetector(ABC):
                 'final_time': self._final_time,
                 'left_bound': self._left_bound,
                 'right_bound': self._right_bound,
-                'polynomial_degree': self._basis.polynomial_degree,
+                'basis': {'polynomial_degree': self._basis.polynomial_degree},
                 'mesh': {'num_grid_cells': self._num_grid_cells,
                          'left_bound': self._left_bound,
                          'right_bound': self._right_bound,
diff --git a/workflows/approximation.smk b/workflows/approximation.smk
index eb8a84c17ad7f67c964a110afedfe0cb212f24c5..00b89a370ca50e8cecb1b0b3b6967d2721d2bf4e 100644
--- a/workflows/approximation.smk
+++ b/workflows/approximation.smk
@@ -6,7 +6,6 @@ import Initial_Condition
 import Quadrature
 from DG_Approximation import DGScheme
 from Plotting import plot_approximation_results
-from Basis_Function import OrthonormalLegendre
 
 configfile: 'config.yaml'
 
@@ -92,12 +91,10 @@ rule plot_approximation_results:
             quadrature = getattr(Quadrature, detector_dict.pop(
                 'quadrature', 'Gauss'))(detector_dict.pop(
                 'quadrature_config', {}))
-            basis = OrthonormalLegendre(detector_dict.pop(
-                'polynomial_degree', 2))
 
             plot_approximation_results(directory=params.plot_dir,
                 plot_name=wildcards.scheme,
-                data_file=params.plot_dir+'/'+wildcards.scheme, basis=basis,
+                data_file=params.plot_dir+'/'+wildcards.scheme,
                 quadrature=quadrature, init_cond=init_cond)
 
             toc = time.perf_counter()