In this talk I will start with my view of the goals and methodology for developing cognitive architectures. With cognitive architecture, the challenge is to design a set of primitive memories and processes that support the range of capabilities that are both necessary and sufficient for building human-level intelligent systems. Issues of generality, expressibility, efficiency, taskability, adaptability, robustness, and scalability make architecture design a challenging activity. Moreover, as a designer, there is a choice as to whether to support a specific capability (such as means-ends analysis, partial order planning, learning from advice) directly in the architecture or indirectly through interpretation/reflection — using knowledge to implement the capability. I will then analyze the Soar architecture in terms of how we have attempted to meet those goals, with an analysis its basic memories (long-term procedural rule-based memory, short-term declarative) and processes (decision making, learning), including recent extensions for reinforcement learning, episodic memory, and emotion. My goal will be to determine the interdependencies of these components and the tradeoffs between using fixed, but efficient architectural mechanisms vs. flexible, but more costly reflective knowledge-based strategies for implementing specific capabilities.