I think the above may call for a little bit of lambda hackery (notice that the 3rd field is either [] or varying?)