With the advent of multicore processors, increasingly more attention is devoted to building concurrent applications capable of fully utilizing the capabilities of these new processors. Unfortunately, in most existing application models, concurrency is not uniformly and externally expressed. The result is that concurrency and thread management are hidden within objects or components and intermixed with their functionalities. In this paper, we present the actor, role and coordinator (ARC) model for concurrent and possibly distributed applications. The ARC uses single-threaded asynchronous sequential objects called actors to denote units of concurrency and computation. Special actors, called roles and coordinators, are used to externally manage the coordination among concurrent computational actors. By externalizing concurrency and separating its coordination from functional behaviors we introduce high level abstractions, increase software reusability and, more importantly, make inherently complicated concurrent applications easier to develop, maintain and reason about in multicore and multi-computer environments.