Rename ClientThread to ClientUiBinding
Use concurrent hash maps to avoid too many synchronized objects. Use thread pools.