Watcher: use a lookup table instead of a map; Fixes #8
Add even more tests; See #4