Find all

This is #290 but rebased against the current master, and with some cleanup.

Closes #290