Multiparty session types and their application in large distributed systems