Semester project written by Giovanni Ambrosioni.