sketching how to support joins... time for refactoring