It seems like a shame that in the ordinary case we init the join tree twice. How about initing once with the where conditions included and then calling solve instead of run?