some edits to free(), minor edits elsewhere.  Free() still doesn't work, but the program runs all the way through without crashes, infinite loops, etc