Created in 2012 as a university project.
Requires refactoring.
For study purposes.