Major rewrite of current location handling