add TcpServer and tests