The purpose of this paper is to construct a model of actions and events that facilitates reasoning about dynamic domains involving multiple agents. Unlike traditional approaches, the proposed model allows for the simultaneous performance of actions, rather than use an interleaving approximation. A generalized situation calculus is constructed for describing and reasoning about actions in multiagent settings. Notions of independence and correctness are introduced, and it is shown how they can be used to determine the persistence of facts over time and whether or not actions can be performed concurrently. Unlike most previous formalisms in both single- and multiagent domains, the proposed law of persistence is monotonic and thus has a well-defined model-theoretic semantics. It is shown how the concept of causality can be employed to simplify the description of actions and to model arbitrarily complex machines and physical devices. Furthermore, it is shown how sets of causally interrelated actions can be grouped together in processes and how this structuring of problem domains can substantially reduce combinatorial complexity. Finally, it is indicated how the law of persistence, together with the notion of causality, makes it possible to retain a simple model of action while avoiding most of the difficulties associated with the frame problem.