refactored Location and subclasses into location module