Refactor and reduce redundancy in subsonicClient