My partner and I are a bit unclear about the OO Design. We have a couple designs drawn out but can't settle on one. The last paragraph of page 3 where it starts talking about history and moves has made it difficult for us to decide on one of the designs we have. The moves (create, buy, deliver, finish) you described sound more like actions which leads us to think of them as methods on a challenge class. But we also have one design that has them as child classes of a parent Challenge class. Were these intended to be operations or classes that represent an action? Should we be using the source code in the abstract histories as a guide/model for our own OO Design? ======================================= In those situations it is useful to think of a suitable design pattern to decide which design is better: for offer-accept-provide-solve methods or classes. I suggest you consider the Command Pattern: http://en.wikipedia.org/wiki/Command_pattern which is useful for: Macro recording If all user actions are represented by command objects, a program can record a sequence of actions simply by keeping a list of the command objects as they are executed. It can then "play back" the same actions by executing the same command objects again in sequence. If the program embeds a scripting engine, each command object can implement a toScript() method, and user actions can then be easily recorded as scripts. We only do the recording. This answers your question: methods or classes in favor of classes. You are welcome to use ideas from the baby agent or administrator and other course directories to guide your design.