potential bug: failed search is -1, not 0, so !== will fire both when found, and when not found?