Parallelism and Complex Dependencies with Splits and Joins