Abstract: Remote procedure calls are computationally expensive, because network round-trips take several orders of magnitude longer than local interactions. One common technique for amortizing this cost is to batch together multiple independent requests into one compound request. Batching requests amounts to serializing a small program in order to transmit it and run it remotely. The standard representation for serialized programs is to use free monads; we show that free applicative functors are actually a better choice of representation for the problem.