refactor message system to use locations parent class