Final project for Advanced Programming