Polymorphic types for constructing concurrent objects and layered communication protocols. - Robert Gregory Lavender (1993)