In my discussion with @jasonyu1996 , we thought of a good extension for Anvil: the generalization of message passing and dynamic lifetime contracts. This would solve some of the language's rough edges, such as when we want to take a value from one process and send it to another. Right now, we have to receive it to acknowledge the message, but we may want to acknowledge it only once the second process has received it --- thereby delaying the ACK until the second send. This is very close to passing endpoints in pi-calculus.