tests all pass
now supports agnostic joins