Initial checkin of SnapTracks and related classes
Also some refactoring of common classes to better separate concerns