A group project for ITCS 3146.