Functional Specification Question: Is this model too single-object oriented? Should actions be more of a cooperative effort between objects than a single objects view of the world? Objects are defined by the following: Properties. Define the state of an object. Used internally. Behaviors. Define the result of actions performed on an object. Attributes. The visible external accessor to properties. Do attributes need to exist in addition to properties? Is getProperty, and getRawProperty good enough? Behaviors are dependant on properties. Behaviors should be as simple as possible, as they may eventually be scripted. Simple algorithms based on the properties of the target object, and the attributes of any other objects involved. Behaviors can cause results by changing properties of the target object, or queueing actions. Actions contain only the basic information needed to define the objects involved, and action specific things like velocity. Actions build the list of involved objects themselves, by querying the world for objects by certain criteria. (eg. withing certain area bounds) Inheritance from the Java language will not be used to create the object inheritance tree. Objects will have methods for getting their list of behaviors and properties, which can be added to the set of behaviors and properties for any objects wishing to extend the behavior of that object. How would modifiers work? modifiers modify a property based on specific rules Are modifiers really a good idea? modifiers need some expiry criteria, as, by definition, they are temporary. Modifiers should be added directly to a property, not to an object itself. Modifiers affect only a single property.