refactor add new location logic