We define an extension of the π-calculus with a static type system which supports high-level specifications of extended patterns
of communication, such as client-server protocols. Subtyping allows protocol specifications to be extended in order to describe
richer behaviour; an implemented server can then be replaced by a refined implementation, without invalidating type-correctness
of the overall system. We use the POP3 protocol as a concrete example of this technique.