The π-calculus offers an attractive basis for concurrent programming. It is small, elegant, and well studied, and supports (via simple encodings) a wide range of high-level constructs including data structures, higher-order functional programming, concurrent control structures, and objects. Moreover, familiar type systems for the λ-calculus have direct counterparts in the π-calculus, yielding strong, static typing for a high-level language using the π-calculus as its core.