There are two kinds of variables: method variables and object variables. Method variables are declared in methods, and are temporary. They are created for the execution of the method, and are freed when execution is complete. Object variables are permanent, and are used to store the state of an object (its name, location, etc). Object variables are inherited by instances of an object. Method variables are sometimes referred to as "local", and object variables as "global". An object's variables may only be assigned by that object's methods. The only way to retrieve or modify another object's variables is to send a message to that object. For example, the "location" message says, "give me your location", and the "moveto" message says, "move yourself to the following location". Variables may be fixed type, in that they can store one type of value, or variable, so that they can store any. Assigning the wrong type of value to a fixed-type variable raises E_TYPE, a type mismatch. Variables cannot be initialized in the declaration; this must be done in a statement. Examples -------- str name; declares a fixed-type string variable called "name". num contents; declares a fixed-type list variable called "contents". var a, b; declares a variables "a" and "b" which may hold values of any type.