diff --git a/resources/simplex/base.py b/resources/simplex/base.py
index a6973feb386f5cedfef839da48c653b15b0f84c0..c44768b34723a76405d840cfe50c52d77ea0e099 100644
--- a/resources/simplex/base.py
+++ b/resources/simplex/base.py
@@ -50,7 +50,7 @@ class SimplexBase():
     """
     Class to run simplex algorithm.
     """
-    def __init__(self, *args, **kwargs):
+    def __init__(self, *args, debug=False, **kwargs):
         self._matrix_a = None
         self._vector_b = None
         self._vector_c = None
@@ -59,9 +59,9 @@ class SimplexBase():
         self._n_array = None
         self._description = None
 
-        self._run_simplex = RunSimplex(self)
-        self._initialize = Initialize(self)
-        self._pivot = Pivot(self)
+        self._run_simplex = RunSimplex(self, debug=debug)
+        self._initialize = Initialize(self, debug=debug)
+        self._pivot = Pivot(self, debug=debug)
 
     #region Simplex Read in and Setup
 
diff --git a/resources/simplex/initialize.py b/resources/simplex/initialize.py
index d79fc8edfe2e83fa2624f9f1c8fc694e8132396a..577ee84f650a13a96327054b7479976fcc606905 100644
--- a/resources/simplex/initialize.py
+++ b/resources/simplex/initialize.py
@@ -20,7 +20,9 @@ logger = init_logging.get_logger(__name__)
 
 
 class Initialize():
-    def __init__(self, parent, *args, **kwargs):
+    def __init__(self, parent, *args, debug=False, **kwargs):
+        self._debug = debug
+
         # Get calling parent. We use this to pull parent data on __call__.
         self._parent = parent
 
@@ -78,6 +80,16 @@ class Initialize():
         b_array = copy.deepcopy(self._basic_var_indexes)
         n_array = copy.deepcopy(self._nonbasic_var_indexes)
 
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting Initialize._correct_simplex()')
+            logger.info('  n_array: {0}'.format(n_array))
+            logger.info('  b_array: {0}'.format(b_array))
+            logger.info('  matrix_a: {0}'.format(matrix_a))
+            logger.info('  vector_b: {0}'.format(vector_b))
+            logger.info('  obj_constant_index: {0}'.format(obj_const_index))
+
         # Add a "new" constraint variable. This will be set to 1 for all constants and -1 for obj func.
         for row_index in range(len(matrix_a)):
             matrix_a[row_index].append(1)
diff --git a/resources/simplex/pivot.py b/resources/simplex/pivot.py
index 1db73da4f89f6817f54d26c6796e46ac45c034d2..875cf7e93ba111ead8eb63e61e4725152a2f4c74 100644
--- a/resources/simplex/pivot.py
+++ b/resources/simplex/pivot.py
@@ -20,7 +20,9 @@ logger = init_logging.get_logger(__name__)
 
 
 class Pivot():
-    def __init__(self, parent, *args, **kwargs):
+    def __init__(self, parent, *args, debug=False, **kwargs):
+        self._debug = debug
+
         # Get calling parent. We use this to pull parent data on __call__.
         self._parent = parent
 
@@ -115,6 +117,16 @@ class Pivot():
         :param old_basic: Tuple of (row, col) index values for old basic variable.
         :param new_basic: Tuple of (row, col) index values of the new basic variable.
         """
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting Pivot._calculate_new_basic()')
+            logger.info('  n_array: {0}'.format(n_array))
+            logger.info('  matrix_a: {0}'.format(matrix_a))
+            logger.info('  vector_b: {0}'.format(vector_b))
+            logger.info('  old_basic: {0}'.format(old_basic))
+            logger.info('  new_basic: {0}'.format(new_basic))
+
         # Calculate our new constraint constant.
         vector_b[new_basic[0]] = self._vector_b[new_basic[0]] / self._matrix_a[old_basic[0]][new_basic[1]]
 
@@ -152,6 +164,16 @@ class Pivot():
         :param old_basic: Tuple of (row, col) index values for old basic variable.
         :param new_basic: Tuple of (row, col) index values of the new basic variable.
         """
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting Pivot._compute_coefficients()')
+            logger.info('  n_array: {0}'.format(n_array))
+            logger.info('  matrix_a: {0}'.format(matrix_a))
+            logger.info('  vector_b: {0}'.format(vector_b))
+            logger.info('  old_basic: {0}'.format(old_basic))
+            logger.info('  new_basic: {0}'.format(new_basic))
+
         # Loop through all basic indexes (minus the one we're removing). Adjust coefficients in matrix.
         for row_index in range(len(vector_b)):
 
@@ -180,6 +202,16 @@ class Pivot():
         :param old_basic: Tuple of (row, col) index values for old basic variable.
         :param new_basic: Tuple of (row, col) index values of the new basic variable.
         """
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting Pivot._update_objective()')
+            logger.info('  n_array: {0}'.format(n_array))
+            logger.info('  vector_c: {0}'.format(vector_c))
+            logger.info('  obj_const_index: {0}'.format(obj_const_index))
+            logger.info('  old_basic: {0}'.format(old_basic))
+            logger.info('  new_basic: {0}'.format(new_basic))
+
         # Update objective constant.
         vector_c[self._obj_constant_index] = self._vector_c[self._obj_constant_index] - (self._vector_b[new_basic[0]] * self._vector_c[new_basic[1]])
 
@@ -201,6 +233,15 @@ class Pivot():
         :param old_basic: Tuple of (row, col) index values for old basic variable.
         :param new_basic: Tuple of (row, col) index values of the new basic variable.
         """
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting Pivot._update_objective()')
+            logger.info('  n_array: {0}'.format(n_array))
+            logger.info('  b_array: {0}'.format(b_array))
+            logger.info('  old_basic: {0}'.format(old_basic))
+            logger.info('  new_basic: {0}'.format(new_basic))
+
         # Remove new basic variable from set of nonbasics.
         n_array.remove(new_basic[1])
 
diff --git a/resources/simplex/run_simplex.py b/resources/simplex/run_simplex.py
index 7378f43c9cd4a90a720d26dbc5da2443f2ed85d5..04bd42ca141e4570d5cdae259a27b869cde546e8 100644
--- a/resources/simplex/run_simplex.py
+++ b/resources/simplex/run_simplex.py
@@ -20,7 +20,9 @@ logger = init_logging.get_logger(__name__)
 
 
 class RunSimplex():
-    def __init__(self, parent, *args, **kwargs):
+    def __init__(self, parent, *args, debug=False, **kwargs):
+        self._debug = debug
+
         # Get calling parent. We use this to pull parent data on __call__.
         self._parent = parent
 
@@ -33,10 +35,10 @@ class RunSimplex():
         self._nonbasic_var_indexes = None
 
     def __call__(self, *args, **kwargs):
-        # Run pivot function.
-        return self._simplex()
+        # Run simplex logic loop until optimized.
+        return self._optimization_loop()
 
-    def _simplex(self):
+    def _optimization_loop(self):
         # Run "Initialize-Simplex" function before we do any work.
         self._parent.initialize()
 
@@ -54,6 +56,16 @@ class RunSimplex():
             basic_var_indexes = self._parent._b_array
             nonbasic_var_indexes = self._parent._n_array
 
+            # Optional debugging printout.
+            if self._debug:
+                logger.info('')
+                logger.info('Starting RunSimplex._optimization_loop()')
+                logger.info('  n_array: {0}'.format(nonbasic_var_indexes))
+                logger.info('  b_array: {0}'.format(basic_var_indexes))
+                logger.info('  matrix_a: {0}'.format(matrix_a))
+                logger.info('  vector_b: {0}'.format(vector_b))
+                logger.info('  obj_constant_index: {0}'.format(obj_constant_index))
+
             # Check that we actually can still optimize values.
             for col_index in range(len(vector_b)):
                 # Check if value is greater than 0.
@@ -102,6 +114,15 @@ class RunSimplex():
         vector_c = self._parent._vector_c
         basic_var_indexes = self._parent._b_array
 
+        # Optional debugging printout.
+        if self._debug:
+            logger.info('')
+            logger.info('Starting RunSimplex._optimization_on_index()')
+            logger.info('  col_index: {0}'.format(col_index))
+            logger.info('  b_array: {0}'.format(basic_var_indexes))
+            logger.info('  matrix_a: {0}'.format(matrix_a))
+            logger.info('  vector_b: {0}'.format(vector_b))
+
         logger.info('Attempting to pivot on index {0}: {1}'.format(col_index, vector_c[col_index]))
 
         # Loop through all rows, finding best one to pivot on.