TODO: move client, msg, and server to 3 repositories