Project finished! Could make code more DRY...