Great Refactoring pt2.1: Fixed bug
Added old code to allow choosing the implementation for now.
Additionally all refactorings will be pushed into another branch from now on.