set a separate impl class for the watcher per system type