with_tree accepts arguments of arbitrary length