Refactor lookup_or_add to contain _MUCH_ less duplicated code. Add support for