added phone calling and refactoring [ci skip]