added first support for different join types and algorithms