add country support + refactoring