Tom Duex's submission for the RokkinCat Intern Programming Challenge.