changed the structure so it will be easier to extend
distill, flatten and zip would also be good functions