Building Complex Data Pipelines with Simple List Operations