This document describes Icarus. Icarus is a programming language that is designed to support mobile software. Icarus provides the basic facilities needed for mobile software (concurrency, communication and mobility) without any of the syntactic sugar found in other languages, such as the windowing toolkit of Java or even some convenient types (like floating point numbers). This allowed is to concentrate on the main features, without being side tracked in the implementation of large libraries. Icarus has a syntax that is very similar to C. It supports procedures, variables, the assignment statement and basic control flow statements (if, for, while). In addition Icarus provides the par-statement, OCCAM style I/O statements. In order to provide mobility, Icaurus has includes two powerful extension s to OCCAM, an ``on-statement'', which locates a process near another process, and a first class ports, allowing the programmer to pass communication capabilities around.