\b;References (for specialists) CBOT uses references for \l;classes\u cbot\class; and \l;arrays\u cbot\array;. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A \c;\l;null\u cbot\null;\n; reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a \c;\l;null\u cbot\null;\n; reference. Example: \c;\s;{ \s; MyClass item1(); // create a new instance \s; // referenced by item1 \s; MyClass item2; // create a null reference \s; item2 = item1; // copy the reference, \s; // item2 and item1 now reference \s; // the same instance \s; item1.a = 12; // modifies the instance \s; // referenced by item1 (and item2) \s; message(item2.a);// displays 12 \s;} \n; If you pass a \l;class\u cbot\class; instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified. \c;\s;void Test( MyClass item ) \s;{ \s; item.a = 12; // modify the original instance \s; item = new MyClass(); // new local instance \s; item.a = 33; // modifie the local instance \s;} \n; Calling the fucntion \c;Test()\n;¦: \c;\s;{ \s; MyClass toto(); \s; Test(toto); \s; message(toto.a); // displays 12 \s;} \n; The instance containing the field \c;a = 33\n; is referenced only by the newly created instance \c;item\n; inside the fucntion \c;Test\n;. At the end of \c;Test\n; this newly created instance referenced by \c;item\n; is automatically deleted. A function can return an instance¦: \c;\s;MyClass Test2( ) \s;{ \s; MyClass item = new MyClass(); \s; item.x = 33; \s; return item; \s;} \n; Call the function like this: \c;\s;{ \s; MyClass toto; \s; toto = Test2(); // toto will contain a reference to \s; // the instance created by Test2() \s; message(toto.a); // displays 33 \s;} \n; \t;See also \c;\l;class\u cbot\class;\n;, \c;\l;new\u cbot\new;\n; \l;Programming\u cbot;, \l;types\u cbot\type; and \l;categories\u cbot\category;.