added join support
removed need for Criteria pointers