The presence of network latency leads to usability problems in distributed groupware applications. Example problems include difficulty synchronizing tightly-coupled collaboration, jarring changes in the user interface following the repair of conflicting operations, and confusion when participants discuss state that appears differently to each of them. Techniques exist that can help mitigate the effects of latency, both in the user interface and the groupware application. However, as these techniques necessitate the manipulation of state over time, the effort required to implement them can be significant. In this paper, we present timelines, a programming model allowing the explicit treatment of time in groupware applications. The model has been implemented as part of the Janus toolkit.