Suppose we want to drop controller letters completely, with nothing in their place. Disk names would presumably become dsk0, dsk1, dsk2,... to some maximum. Unit numbers have a word, so you'd allow 65535 units max systemwide for a type. (May be a problem; already 10,000 disks on tpc tests) Or use ctrl ltr/unit# to grow names, just with no relation to port. e.g., dsE41234: for name... ok, 27*64K is getting up there...may be OK for long enough. Cannot expand with PACs though. Pathing gets harder...a new path name gets just another disk number so there'll be aliases & holes. Use underlying controller slot, processor, address on bus instead of ww id if no ww id. Do so predictably so manual pairing will be ok. Every CPU still needs to know what it is connected to and be "the" authority for such (or "an" authority). First CPU up finds its stuff. Next checks with it, and so on. Pairings discovered thru heuristic, ww id, or config file, negotiate to converge on everyone knowing & having recorded in config file. Config file not needed to be touched if WW IDs are everywhere. Does final device name need a port? Probably better not to pass that on even though needed lower down, but internally the port ID is needed to find things. However ww id or heuristic would override recorded port id info. Only need to keep it constant if neither exists. THAT, we keep as stable as possible but if user screws up the config file, he loses. We only use ww id or heuristic to get device name (for all purposes, and overrides recorded port) or to find port pairs (for pairing ONLY, where one cpu finds ww id X on port 4 and another finds ww id X on port 15, then they infer that port 4 and port 15 share a bus and reset their databases to indicate this, and restart their scans of devices for arbitration to ensure all pairings detected if a change occurred).