Finish refactor, making the joins submodule completely adapter agnostic (will pull it out of this module in a bit)