A general intelligent agent must be able to direct its behavior towards some end. In Soar, the decision cycle gives rise to a hierarchy of goals. When the decision cycle fails to reach a decision, an impasse is reached, and the agent creates a goal to resolve this impasse. Soar still depends on the programmer for its top-level goals.