Revised per Fiora's comments; still untested.