refactor shadowsocks