Lab 3: All algorithms are completed, unit tests added + some refactoring