more tracker refactoring, unit tests to follow