final assingment for CS 571