Changed PositionLookup to use HashMap and dynamic names, cleaned up how we define and locate positions/cabinets