I mean the key procs I generate are\: 1. routeMessage(msg\: T) (twice, once for the server once for the owlkettle client) 2. sendMessage(msg\: U) (one per message type, converts U to the Variant T for you and calls the send procs on the correct channel for the T) And that's pretty much it (other than that it's just types and the rest is utility stuff)