Limbo has a ref keyword that makes a ref to an adt so you just copy refs around not huge copies of the data structure. I've done a postgresql client in Limbo, it's great having the CSP co-routines just chat away to each other. It really separates out the way you approach a problem.