Combine the InternalTrackingTool class with the TrackingTool class. Members/Get/Set functions like m_ToolTipPosition etc. should be moved to TrackingToolClass.
Restructure CreateTrackingDeviceSource method (in ...TrackerTypeInformation). Adding tools to the new device should be done in Superclass and not redundant for each Tracking Device with dublicate code. Subclasses like for Polhemus can overwrite this function, add own code (e.g. getting the tool port) and call the superclass function for general adding tools.