Orc was originally presented as a process calculus. It has now evolved into a full programming language which we describe ill this paper. The language has the structure and feel of a functional programming language! yet, it, handles many non-functional aspects effectively including spawning of concurrent threads, time-outs and mutable state. We first, describe the original concurrency combinators of the process calculus. Next we describe a small functional programming language that forms the core language. Then we show how the concurrency combinatiors of the process calculus and the functional core language are integrated seamlessly. The resulting language and its supporting libraries have proven very effective ill describing typical concurrent computations; we demonstrate how several practical concurrent programming problems axe easily solved ill Orc.