Concurrency - our applications are best modeled by a very large number of concurrent processes are idle the number of processes and their memory requirements vary with time and are extremely difficult to predict in advance erlang has lightweight processes whose memory requirements vary dynamically no requirements for concurrency are placed on the host operating system