My final project for CS50x