Support multi-protocol backends (both tcp and udp)

This should satisfy #7 @mrtazz