Semester project written by Emanuel Malvetti.