adds a bunch more data structures and searching algos