Adding a new 'HasLocation' Moose role, and assigning it to all item classes with locations. This role contains a lot of code especially for managing location information.
Expanding the conditions under which the new location-role logic gets triggered.