All SmartObjects have common capabilities which allow them to interact in an application. All SmartObjects can:
These capabilities provide a standard interface for creating and destroying SmartObject instances and for making SmartObjects interact. Unless a procedure object has these capabilities, it is not a SmartObject.