MIT assignment 5, part 3: fixed some problems