switch to array_split for potentially uneven splits
add Daniel's parallel_distributed.py