be called by you; • Your objects can behave like the built-in types; • They allow your objects to interact with basic language constructs, such as: * Iteration, collections, attribute access, operator overloading, function and method invocation, object creation and destruction, string representation and formatting, managed contexts…