Creating remote procedure calls via mach is a challenging task, but MIG or the Mach Interface Generator makes this task much easier. You only need to do this if you need to define your own interfaces. The Hurd already contains various interfaces.