The agent-based computing paradigm has flourished in the past few decades. As its popularity has grown, there has been a corresponding growth of agent systems that support the design, development, and operation of applications that incorporate agents. This work derives a set of features desirable to an agent designer, both from a broad set of applications and from existing systems. The AgeS system is then described, highlighting the functionality it provides that is not found in other systems. In addition, a synopsis of an implementation of AgeS and projects that currently rely on it is given.