Fix article location targeting, refactor Location class