update opt4

support multiple clients, using json