For our CS308 class. Will likely not be updated substantially but here as example code.