from cs61b: "The purpose of this project is to become comfortable with applications that combine a variety of data structures and algorithms in a big ol' mess of references pointing just every which way.  I'm not even kidding."