can we better encapsulate this if isinstance/elif isinstance stuff, can we put this "new addressing/old addressing" into the Location object itself? I'm afraid this type checking will end up all over the place and be error prone.