reworked everything so that Track objects are used instead of track dictionaries. By doing so each object will have the most up to date info about the tracks, via a shared context in which the Track objects live