diff --git a/product/ERP5/Document/Person.py b/product/ERP5/Document/Person.py
index 09ced8dbdb1aca43ff91f0131e05a48fd591c04a..2f4b621928b1ba84f00066669fbc0607a3743974 100755
--- a/product/ERP5/Document/Person.py
+++ b/product/ERP5/Document/Person.py
@@ -28,357 +28,409 @@
 
 from AccessControl import ClassSecurityInfo
 
-from Products.ERP5.Core.Node import Node
-from Products.ERP5.Document.Image import Image
-from Products.ERP5.Document.Entity import Entity
 from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
 from Products.ERP5Type.Utils import assertAttributePortalType
 from Products.ERP5Type.XMLObject import XMLObject
 
+from Products.ERP5.Core.Node import Node
 
-class Person(Entity, Node, Image, XMLObject):
-  """
-    An Person object holds the information about
-    an person (ex. you, me, someone in the company,
-    someone outside of the company, a member of the portal,
-    etc.).
-
-    Person objects can contain Coordinate objects
-    (ex. Telephone, Url) as well a documents of various types.
-
-    Person objects can be synchronized accross multiple
-    sites.
-
-    Person objects inherit from the Node base class
-    (one of the 5 base classes in the ERP5 universal business model)
-  """
-
-  meta_type = 'ERP5 Person'
-  portal_type = 'Person'
-  add_permission = Permissions.AddPortalContent
-  isPortalContent = 1
-  isRADContent = 1
-
-  # Declarative security
-  security = ClassSecurityInfo()
-  security.declareObjectProtected(Permissions.View)
-
-  # Declarative properties
-  property_sheets = ( PropertySheet.Base
-                    , PropertySheet.XMLObject
-                    , PropertySheet.CategoryCore
-                    , PropertySheet.DublinCore
-                    , PropertySheet.Person)
-
-  def _setTitle(self, value):
-    """
-      Here we see that we must define an notion
-      of priority in the way fields are updated
-    """
-    if value != self.getTitle():
-      self.title = value
-
-  security.declareProtected(Permissions.View, 'getTitle')
-  def getTitle(self, **kw):
-    """
-      Returns the title if it exists or a combination of
-      first name and last name
-    """
-    if self.title == '':
-      name_list = []
-      if self.getFirstName() not in (None, ''):
-        name_list.append(self.getFirstName())
-      if self.getMiddleName() not in (None, ''):
-        name_list.append(self.getMiddleName())
-      if self.getLastName() not in (None, ''):
-        name_list.append(self.getLastName())
-      return ' '.join(name_list)
-    else:
-      return self.title
-  Title = getTitle
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setTitle')
-  def setTitle(self, value):
-    """
-      Updates the title if necessary
-    """
-    self._setTitle(value)
-    self.reindexObject()
-
-  def _setFirstName(self, value):
-    """
-      Update Title if first_name is modified
-    """
-    self.first_name = value
-    if self.getFirstName()!=None and self.getLastName()!=None:
-      self._setTitle(self.getFirstName()+' '+self.getLastName())
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setFirstName')
-  def setFirstName(self, value):
-    """
-      Updates the first_name if necessary
-    """
-    self._setFirstName(value)
-    self.reindexObject()
-
-  def _setLastName(self, value):
-    """
-      Update Title if last_name is modified
-    """
-    self.last_name = value
-    if self.getFirstName()!=None and self.getLastName()!=None:
-      self._setTitle(self.getFirstName()+' '+self.getLastName())
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setLastName')
-  def setLastName(self, value):
-    """
-      Updates the last_name if necessary
-    """
-    self._setLastName(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerTitle')
-  def getDefaultCareerTitle(self):
-    """
-      Returns the default career title
-    """
-    try:
-      return self.getDefaultCareerValue().getTitle()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerDescription')
-  def getDefaultCareerDescription(self):
-    """
-      Returns the default career description
-    """
-    try:
-      return self.getDefaultCareerValue().getDescription()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerCollectiveAgreementTitle')
-  def getDefaultCareerCollectiveAgreementTitle(self):
-    """
-      Returns the default career collective agreement
-    """
-    try:
-      return self.getDefaultCareerValue().getCollectiveAgreementTitle()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerStartDate')
-  def getDefaultCareerStartDate(self):
-    """
-      Returns the default career start date
-    """
-    try:
-      return self.getDefaultCareerValue().getStartDate()
-    except:
-      return None
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerStopDate')
-  def getDefaultCareerStopDate(self):
-    """
-      Returns the default career stop date
-    """
-    try:
-      return self.getDefaultCareerValue().getStopDate()
-    except:
-      return None
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerSalaryLevel')
-  def getDefaultCareerSalaryLevel(self):
-    """
-      Returns the default career salary level
-    """
-    try:
-      return self.getDefaultCareerValue().getSalaryLevel()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerSalaryCoefficient')
-  def getDefaultCareerSalaryCoefficient(self):
-    """
-      Returns the default career salary coefficient
-    """
-    try:
-      return self.getDefaultCareerValue().getSalaryCoefficient()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerGrade')
-  def getDefaultCareerGrade(self):
-    """
-      Returns the default career grade
-    """
-    try:
-      return self.getDefaultCareerValue().getGrade()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.View, 'getDefaultCareerRole')
-  def getDefaultCareerRole(self):
-    """
-      Returns the default career role
-    """
-    try:
-      return self.getDefaultCareerValue().getRole()
-    except:
-      return ''
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerTitle')
-  def setDefaultCareerTitle(self, value):
-    """
-      Updates the default career title
-    """
-    self._setDefaultCareerTitle(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerDescription')
-  def setDefaultCareerDescription(self, value):
-    """
-      Updates the default career description
-    """
-    self._setDefaultCareerDescription(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerCollectiveAgreementTitle')
-  def setDefaultCareerCollectiveAgreementTitle(self, value):
-    """
-      Updates the default career collective agreement
-    """
-    self._setDefaultCareerCollectiveAgreementTitle(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStartDate')
-  def setDefaultCareerStartDate(self, value):
-    """
-      Updates the defaul career start date
-    """
-    self._setDefaultCareerStartDate(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStopDate')
-  def setDefaultCareerStopDate(self, value):
-    """
-      Updates the default career stop date
-    """
-    self._setDefaultCareerStopDate(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryLevel')
-  def setDefaultCareerSalaryLevel(self, value):
-    """
-      Updates the default career salary level
-    """
-    self._setDefaultCareerSalaryLevel(value)
-    self.reindexObject()
-
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryCoefficient')
-  def setDefaultCareerSalaryCoefficient(self, value):
-    """
-      Updates the default career salary coefficient
-    """
-    self._setDefaultCareerSalaryCoefficient(value)
-    self.reindexObject()
+from Products.ERP5.Document.Entity import Entity
 
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerGrade')
-  def setDefaultCareerGrade(self, value):
-    """
-      Updates the default career grade
-    """
-    self._setDefaultCareerGrade(value)
-    self.reindexObject()
 
-  security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerRole')
-  def setDefaultCareerRole(self, value):
-    """
-      Updates the default career role
-    """
-    self._setDefaultCareerRole(value)
-    self.reindexObject()
-
-
-  ### Private methods - no reindexing
-
-  security.declarePrivate('_setDefaultCareerTitle')
-  def _setDefaultCareerTitle(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setTitle(coordinate)
-
-  security.declarePrivate('_setDefaultCareerDescription')
-  def _setDefaultCareerDescription(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setDescription(coordinate)
-
-  security.declarePrivate('_setDefaultCareerCollectiveAgreementTitle')
-  def _setDefaultCareerCollectiveAgreementTitle(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setCollectiveAgreementTitle(coordinate)
-
-  security.declarePrivate('_setDefaultCareerStartDate')
-  def _setDefaultCareerStartDate(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setStartDate(coordinate)
-
-  security.declarePrivate('_setDefaultCareerStopDate')
-  def _setDefaultCareerStopDate(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setStopDate(coordinate)
-
-  security.declarePrivate('_setDefaultCareerSalaryLevel')
-  def _setDefaultCareerSalaryLevel(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setSalaryLevel(coordinate)
-
-  security.declarePrivate('_setDefaultCareerSalaryCoefficient')
-  def _setDefaultCareerSalaryCoefficient(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setSalaryCoefficient(coordinate)
-
-  security.declarePrivate('_setDefaultCareerGrade')
-  def _setDefaultCareerGrade(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setGrade(coordinate)
-
-  security.declarePrivate('_setDefaultCareerRole')
-  def _setDefaultCareerRole(self, coordinate):
-    assertAttributePortalType(self, 'default_career', 'Career')
-    if not hasattr(self,'default_career'):
-      self.invokeFactory( type_name='Career'
-                        , id='default_career'
-                        )
-    self.default_career.setRole(coordinate)
\ No newline at end of file
+class Person(Entity, Node, XMLObject):
+    """
+      An Person object holds the information about
+      an person (ex. you, me, someone in the company,
+      someone outside of the company, a member of the portal,
+      etc.).
+
+      Person objects can contain Coordinate objects
+      (ex. Telephone, Url) as well a documents of various types.
+
+      Person objects can be synchronized accross multiple
+      sites.
+
+      Person objects inherit from the Node base class
+      (one of the 5 base classes in the ERP5 universal business model)
+    """
+
+    meta_type = 'ERP5 Person'
+    portal_type = 'Person'
+    add_permission = Permissions.AddPortalContent
+    isPortalContent = 1
+    isRADContent = 1
+
+    # Declarative security
+    security = ClassSecurityInfo()
+    security.declareObjectProtected(Permissions.View)
+
+    # Declarative properties
+    property_sheets = ( PropertySheet.Base
+                      , PropertySheet.XMLObject
+                      , PropertySheet.CategoryCore
+                      , PropertySheet.DublinCore
+                      , PropertySheet.Person)
+
+    # Factory Type Information
+    factory_type_information = \
+      {    'id'             : portal_type
+         , 'meta_type'      : meta_type
+         , 'description'    : """\
+An Person object holds the information about
+an person (ex. you, me, someone in the company,
+someone outside of the company, a member of the portal,
+etc.)."""
+         , 'icon'           : 'person_icon.gif'
+         , 'product'        : 'ERP5'
+         , 'factory'        : 'addPerson'
+         , 'immediate_view' : 'person_edit'
+         , 'allow_discussion'     : 1
+         , 'allowed_content_types': ('Assignment', 'Telephone', 'Fax', 'Bank Account',
+                                     'Geographic Address', 'Career'
+                                      )
+         , 'filter_content_types' : 1
+         , 'global_allow'   : 1
+         , 'actions'        :
+        ( { 'id'            : 'view'
+          , 'name'          : 'View'
+          , 'category'      : 'object_view'
+          , 'action'        : 'person_edit'
+          , 'permissions'   : (
+              Permissions.View, )
+          }
+        , { 'id'            : 'print'
+          , 'name'          : 'Print'
+          , 'category'      : 'object_print'
+          , 'action'        : 'person_print'
+          , 'permissions'   : (
+              Permissions.View, )
+          }
+        , { 'id'            : 'metadata'
+          , 'name'          : 'Metadata'
+          , 'category'      : 'object_edit'
+          , 'action'        : 'metadata_edit'
+          , 'permissions'   : (
+              Permissions.View, )
+          }
+        , { 'id'            : 'translate'
+          , 'name'          : 'Translate'
+          , 'category'      : 'object_action'
+          , 'action'        : 'translation_template_view'
+          , 'permissions'   : (
+              Permissions.TranslateContent, )
+          }
+        )
+      }
+
+    def _setTitle(self, value):
+      """
+        Here we see that we must define an notion
+        of priority in the way fields are updated
+      """
+      if value != self.getTitle():
+        self.title = value
+
+    security.declareProtected(Permissions.View, 'getTitle')
+    def getTitle(self, **kw):
+      """
+        Returns the title if it exists or a combination of
+        first name and last name
+      """
+      if self.title == '':
+        name_list = []
+        if self.getFirstName() not in (None, ''):
+          name_list.append(self.getFirstName())
+        if self.getMiddleName() not in (None, ''):
+          name_list.append(self.getMiddleName())
+        if self.getLastName() not in (None, ''):
+          name_list.append(self.getLastName())
+        return ' '.join(name_list)
+      else:
+        return self.title
+    Title = getTitle
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setTitle')
+    def setTitle(self, value):
+      """
+        Updates the title if necessary
+      """
+      self._setTitle(value)
+      self.reindexObject()
+
+    def _setFirstName(self, value):
+      """
+        Update Title if first_name is modified
+      """
+      self.first_name = value
+      if self.getFirstName()!=None and self.getLastName()!=None:
+        self._setTitle(self.getFirstName()+' '+self.getLastName())
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setFirstName')
+    def setFirstName(self, value):
+      """
+        Updates the first_name if necessary
+      """
+      self._setFirstName(value)
+      self.reindexObject()
+
+    def _setLastName(self, value):
+      """
+        Update Title if last_name is modified
+      """
+      self.last_name = value
+      if self.getFirstName()!=None and self.getLastName()!=None:
+        self._setTitle(self.getFirstName()+' '+self.getLastName())
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setLastName')
+    def setLastName(self, value):
+      """
+        Updates the last_name if necessary
+      """
+      self._setLastName(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerTitle')
+    def getDefaultCareerTitle(self):
+      """
+        Returns the default career title
+      """
+      try:
+        return self.getDefaultCareerValue().getTitle()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerDescription')
+    def getDefaultCareerDescription(self):
+      """
+        Returns the default career description
+      """
+      try:
+        return self.getDefaultCareerValue().getDescription()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerCollectiveAgreementTitle')
+    def getDefaultCareerCollectiveAgreementTitle(self):
+      """
+        Returns the default career collective agreement
+      """
+      try:
+        return self.getDefaultCareerValue().getCollectiveAgreementTitle()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerStartDate')
+    def getDefaultCareerStartDate(self):
+      """
+        Returns the default career start date
+      """
+      try:
+        return self.getDefaultCareerValue().getStartDate()
+      except:
+        return None
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerStopDate')
+    def getDefaultCareerStopDate(self):
+      """
+        Returns the default career stop date
+      """
+      try:
+        return self.getDefaultCareerValue().getStopDate()
+      except:
+        return None
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerSalaryLevel')
+    def getDefaultCareerSalaryLevel(self):
+      """
+        Returns the default career salary level
+      """
+      try:
+        return self.getDefaultCareerValue().getSalaryLevel()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerSalaryCoefficient')
+    def getDefaultCareerSalaryCoefficient(self):
+      """
+        Returns the default career salary coefficient
+      """
+      try:
+        return self.getDefaultCareerValue().getSalaryCoefficient()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerGrade')
+    def getDefaultCareerGrade(self):
+      """
+        Returns the default career grade
+      """
+      try:
+        return self.getDefaultCareerValue().getGrade()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.View, 'getDefaultCareerRole')
+    def getDefaultCareerRole(self):
+      """
+        Returns the default career role
+      """
+      try:
+        return self.getDefaultCareerValue().getRole()
+      except:
+        return ''
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerTitle')
+    def setDefaultCareerTitle(self, value):
+      """
+        Updates the default career title
+      """
+      self._setDefaultCareerTitle(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerDescription')
+    def setDefaultCareerDescription(self, value):
+      """
+        Updates the default career description
+      """
+      self._setDefaultCareerDescription(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerCollectiveAgreementTitle')
+    def setDefaultCareerCollectiveAgreementTitle(self, value):
+      """
+        Updates the default career collective agreement
+      """
+      self._setDefaultCareerCollectiveAgreementTitle(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStartDate')
+    def setDefaultCareerStartDate(self, value):
+      """
+        Updates the defaul career start date
+      """
+      self._setDefaultCareerStartDate(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStopDate')
+    def setDefaultCareerStopDate(self, value):
+      """
+        Updates the default career stop date
+      """
+      self._setDefaultCareerStopDate(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryLevel')
+    def setDefaultCareerSalaryLevel(self, value):
+      """
+        Updates the default career salary level
+      """
+      self._setDefaultCareerSalaryLevel(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryCoefficient')
+    def setDefaultCareerSalaryCoefficient(self, value):
+      """
+        Updates the default career salary coefficient
+      """
+      self._setDefaultCareerSalaryCoefficient(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerGrade')
+    def setDefaultCareerGrade(self, value):
+      """
+        Updates the default career grade
+      """
+      self._setDefaultCareerGrade(value)
+      self.reindexObject()
+
+    security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerRole')
+    def setDefaultCareerRole(self, value):
+      """
+        Updates the default career role
+      """
+      self._setDefaultCareerRole(value)
+      self.reindexObject()
+
+      
+    ### Private methods - no reindexing
+
+    security.declarePrivate('_setDefaultCareerTitle')
+    def _setDefaultCareerTitle(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setTitle(coordinate)
+
+    security.declarePrivate('_setDefaultCareerDescription')
+    def _setDefaultCareerDescription(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setDescription(coordinate)
+
+    security.declarePrivate('_setDefaultCareerCollectiveAgreementTitle')
+    def _setDefaultCareerCollectiveAgreementTitle(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setCollectiveAgreementTitle(coordinate)
+
+    security.declarePrivate('_setDefaultCareerStartDate')
+    def _setDefaultCareerStartDate(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setStartDate(coordinate)
+
+    security.declarePrivate('_setDefaultCareerStopDate')
+    def _setDefaultCareerStopDate(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setStopDate(coordinate)
+
+    security.declarePrivate('_setDefaultCareerSalaryLevel')
+    def _setDefaultCareerSalaryLevel(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setSalaryLevel(coordinate)
+
+    security.declarePrivate('_setDefaultCareerSalaryCoefficient')
+    def _setDefaultCareerSalaryCoefficient(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setSalaryCoefficient(coordinate)
+    
+    security.declarePrivate('_setDefaultCareerGrade')
+    def _setDefaultCareerGrade(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setGrade(coordinate)
+    
+    security.declarePrivate('_setDefaultCareerRole')
+    def _setDefaultCareerRole(self, coordinate):
+      assertAttributePortalType(self, 'default_career', 'Career')
+      if not hasattr(self,'default_career'):
+        self.invokeFactory( type_name='Career'
+                          , id='default_career'
+                          )
+      self.default_career.setRole(coordinate)
\ No newline at end of file