Method calls can produce an arbitrary set of results. Using data-flow information encoded in Legion method invocations, results are forwarded directly to where they are needed, rather than necessarily back to the caller. Objects are instances of classes that define their interface, which must be a superset of a minimal object-mandatory interface. Object-mandatory methods include functions, such as an interface query, and methods to implement object persistence. An active object is hosted within its own running process and can service method invocations.
Objects implement internal methods to store and recover their dynamic state.
LOIDs consist of a variable number of variable length binary fields. Including an object's public key in its LOID makes it easy for other objects to encrypt communications to that object or to verify messages as signed by that particular object. A user creates his own LOID, which is registered with the system and entered in appropriate system groups and access control lists by resource providers. When an object makes a call on behalf of a user, the user's LOID and associated credentials provide the basis for authentication and authorization. The ownership of a user's LOID resides in the user's unique knowledge of the private key that is paired with it.