SUMMARY: The text below is the basic definition of a lightweight xml-based remote procedure call protocol. It supports complex objects, unicode and type coercion while keeping a very small footprint whenever possible. A - FORMAT DESCRIPTION This protocol is structured around the idea of remote object manipulation as opposed to remote method calls.A.1. CLIENT MESSAGESa.1.1. Client messages that request for data (GET ACTION) are issued using a <c g="object.attribute" p="modifier" /> where (c) means 'client-originated message' , (g) means 'get' and object.attribute maps to a remote object exposed by the server( actually a method that will process the info and return the resulting data). The optional (p) attribute is passed as a parameter to the code processing the request and may modify the way the data is returned.a.1.2. Client messages that request for data (SET ACTION) are issued using a <s g="object.attribute" p="modifier" /> where (c) means 'client-originated message' , (s) means 'set' and object.attribute maps to a remote object exposed by the server( actually a method that will process the info. The **mandatory** (p) attribute is passed as a parameter to the code processing the request and will hold information on which remote data should be updated. NOTE: SET messages to the server do not directly return data to the client HOWEVER it may trigger other processes on the server that will cause data to be dispatched to the server ( such as updating the view )a.1.3. Client messages that target remote methods on the server which DO NOT RELATE WITH exposed and persistent remote objects are issued using a <s c="class.method" p="modifier" /> where (c) means 'client-originated message' , (c) means 'call' or 'command' and object.attribute maps to a remote service exposed by the server. The optional (p) attribute is passed as a parameter to the code processing the request. Examples of this type of services would be changing one's password or performing a logout.A.2 - SERVER MESSAGESa.2.1. Server originated commands are sent using a <object-attribute d="value1*value2*value3" /> format where the tag name a mapping of the remote object that holds the returned the data , (d) is the XML attribute which presents the data being returned in the form of a asterisk-separated list of values.A.3 - COMPLEX DATAa.3.1 Data of complex type( such as lists ) or data that needs to be Unicode formated are not suitable to fit the d="someValue" format.a.3.2. - More complex data must be sent using a sequence of <d> nodes.Example:<global-messages> <d>Msg1</d> <d>Msg2</d> <d>Msg3</d></global-messages>a.3.3 - Such <d> nodes suport CDATA tags for Unicode strings. Example: <global-messages> <d><![CDATA[ Unicode text1 ]]></d> <d><![CDATA[ Unicode text2 ]]></d> <d><![CDATA[ Unicode text3 ]]></d></global-messages>a.3.3 - Such <d> nodes suport <i> subnodes to list items of a list (array). . Example: <brisbane-couples> <d> <i>Tari</i> <i>James</i> </d> <d> <i>Robert</i> <i>Jill</i> </d></brisbane-couples>a.3.4. - Both <d> nodes and their subnodes ( <i> ) should support type coercion if a t="" attribute is present.Initially only coercion to integer numbers ( t="n" ) should be implemented.