In this paper we present and analyze an instance of a mutliagent development system we call the standard agent system that enables the construction of distributed agent-based software systems for R&D, industrial, and government applications. The standard-agent system is implemented as an extensible object framework that provides a means for constructing and customizing agent objects through specialization of standard base classes and by composition of component classes. The framework has been used to develop three major applications and has supported numerous research projects. Our position on agent toolkits is that objectcentered frameworks containing standard design patterns and design patterns specialized for the agent domain provide the best compromise between generality and flexibility. Moreover, frameworks (systems of design patterns) enable reuse, contribute to the reliability, maintainability, and extensibility of an agent application. Design patterns capture the conceptualizations of common agent attributes while enabling variations of a design to coexist in the same system. We discuss the use of design patterns applied to agent programming and describe a design pattern that captures a general goal-directed deliberation mechanism. The agent programming environment is supported by supported by advanced object services such as distributed objects, object data bases, lifecycle protocols, and interfaces to the World- Wide Web. We discuss the relevance of these services to agent development.