really search subtree; unroll one|all versions for clarity; slight refactor; add a test