Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/browser.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/browser.txt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/browser.txt	(revision 8920)
@@ -1000,5 +1000,5 @@
 with their code as key.
 
-Each certificate provides a ``Add course referrer`` action button near top.
+Each certificate provides a ``Add certificate course`` action button near top.
 
 Certificates provide an add-form to add new certcourses:
@@ -1006,5 +1006,5 @@
   >>> cert_url = dept_url + '/certificates/CERT1'
   >>> browser.open(cert_url + '/manage')
-  >>> browser.getControl('Add course referrer').click()
+  >>> browser.getControl('Add certificate course').click()
   >>> print browser.contents
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
@@ -1025,5 +1025,5 @@
   >>> ctrl.getControl('COURSE1').selected = True
   >>> browser.getControl(name='form.level').value = ['100']
-  >>> browser.getControl('Add course referrer').click()
+  >>> browser.getControl('Add certificate course').click()
 
 Our certificatecourse will be linked on the parent certificate page:
@@ -1038,10 +1038,10 @@
   >>> cert_url = dept_url + '/certificates/CERT1'
   >>> browser.open(cert_url + '/manage')
-  >>> browser.getControl('Add course referrer').click()
+  >>> browser.getControl('Add certificate course').click()
   >>> ctrl = browser.getControl(name='form.course')
   >>> ctrl.getControl('COURSE1').selected = True
   >>> browser.getControl(name='form.level').value = ['100']
-  >>> browser.getControl('Add course referrer').click()
-  >>> 'The chosen course referrer is already' in browser.contents
+  >>> browser.getControl('Add certificate course').click()
+  >>> 'The chosen certificate course is already' in browser.contents
   True
 
@@ -1063,5 +1063,5 @@
 
   >>> browser.open(cert_url + '/COURSE1_100')
-  >>> browser.getLink('Edit course referrer').click()
+  >>> browser.getLink('Edit certificate course').click()
 
 If we just click 'Save and return' nothing will change:
@@ -1088,5 +1088,5 @@
 changed:
 
-  >>> browser.getLink('Edit course referrer').click()
+  >>> browser.getLink('Edit certificate course').click()
   >>> browser.getControl(name='form.level').value = ['400']
   >>> browser.getControl('Cancel').click()
@@ -1125,10 +1125,10 @@
   >>> 'COURSE1_200</a>' in browser.contents
   True
-  >>> browser.getControl('Remove selected course referrers').click()
+  >>> browser.getControl('Remove selected certificate courses').click()
   >>> 'No item selected' in browser.contents
   True
   >>> browser.getControl(name='val_id').getControl(
   ...    value='COURSE1_200').selected = True
-  >>> browser.getControl('Remove selected course referrers').click()
+  >>> browser.getControl('Remove selected certificate courses').click()
   >>> 'Successfully removed: COURSE1_200' in browser.contents
   True
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 8920)
@@ -1920,6 +1920,6 @@
     grok.template('certificatemanagepage')
     taboneactions = [_('Save'),_('Cancel')]
-    tabtwoactions = [_('Add course referrer'),
-                     _('Remove selected course referrers'),_('Cancel')]
+    tabtwoactions = [_('Add certificate course'),
+                     _('Remove selected certificate courses'),_('Cancel')]
     tabthreeactions1 = [_('Remove selected local roles')]
     tabthreeactions2 = [_('Add local role')]
@@ -1944,10 +1944,10 @@
         return msave(self, **data)
 
-    @jsaction(_('Remove selected course referrers'))
+    @jsaction(_('Remove selected certificate courses'))
     def delCertificateCourses(self, **data):
         delSubobjects(self, redirect='@@manage', tab='2')
         return
 
-    @action(_('Add course referrer'), validator=NullValidator)
+    @action(_('Add certificate course'), validator=NullValidator)
     def addCertificateCourse(self, **data):
         self.redirect(self.url(self.context, 'addcertificatecourse'))
@@ -1986,16 +1986,16 @@
     form_fields = grok.AutoFields(ICertificateCourseAdd)
     pnav = 1
-    label = _('Add course referrer')
-
-    @action(_('Add course referrer'))
+    label = _('Add certificate course')
+
+    @action(_('Add certificate course'))
     def addCertcourse(self, **data):
         try:
-            self.context.addCourseRef(**data)
+            self.context.addCertCourse(**data)
         except KeyError:
-            self.status = self.flash(_('The chosen course referrer is already '
+            self.status = self.flash(_('The chosen certificate course is already '
                                   'part of this certificate.'))
             return
         self.status = self.flash(
-            _("Course referrer ${a}_${b} added.",
+            _("certificate course ${a}_${b} added.",
             mapping = {'a': data['course'].code, 'b': data['level']}))
         code = "%s_%s" % (data['course'].code, data['level'])
@@ -2038,5 +2038,5 @@
     grok.require('waeup.manageAcademics')
     form_fields = grok.AutoFields(ICertificateCourse)
-    label = _('Edit course referrer')
+    label = _('Edit certificate course')
     pnav = 1
 
@@ -2051,6 +2051,6 @@
             old_level = self.context.level
             data['course'] = self.context.course
-            parent.addCourseRef(**data)
-            parent.delCourseRef(data['course'].code, level=old_level)
+            parent.addCertCourse(**data)
+            parent.delCertCourse(data['course'].code, level=old_level)
             self.flash(_('Form has been saved.'))
             old_code = "%s_%s" % (data['course'].code, old_level)
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatemanagepage.pt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatemanagepage.pt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatemanagepage.pt	(revision 8920)
@@ -4,5 +4,5 @@
   <ul class="tabs" data-tabs="tabs">
     <li tal:attributes="class view/tab1"><a href="#tab-1" i18n:translate="">Settings</a></li>
-    <li tal:attributes="class view/tab2"><a href="#tab-2" i18n:translate="">Course Referrers</a></li>
+    <li tal:attributes="class view/tab2"><a href="#tab-2" i18n:translate="">Certificate Courses</a></li>
     <li tal:attributes="class view/tab3"><a href="#tab-3" i18n:translate="">Local Roles</a></li>
   </ul>
@@ -24,11 +24,17 @@
     </div>
     <div id="tab-2" tal:attributes="class view/tab2">
-      <h3 i18n:translate="">Course Referrers</h3>
+      <h3>
+        <span tal:content="context/__name__">Code</span>
+        <span i18n:domain="waeup.kofa" i18n:translate="">Courses</span>
+      </h3>
       <table class="display dataTableManage">
         <thead>
           <tr>
-            <th>&nbsp;</th><th i18n:translate="">Level</th>
-            <th i18n:translate="">Semester</th><th i18n:translate="">Referrer</th>
-            <th i18n:translate="">Course</th><th i18n:translate="">Title</th>
+            <th>&nbsp;</th>
+            <th i18n:translate="">Level</th>
+            <th i18n:translate="">Semester</th>
+            <th i18n:translate="">Cert. Course</th>
+            <th i18n:translate="">Dep. Course</th>
+            <th i18n:translate="">Title</th>
             <th i18n:translate="">Mandatory</th>
           </tr>
@@ -37,6 +43,5 @@
           <tr tal:repeat="cc context/values" class="gradeC">
              <td>
-              <input type="checkbox"
-        		 name="val_id"
+              <input type="checkbox" name="val_id"
         		 tal:attributes="value cc/__name__" />
             </td>
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatepage.pt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatepage.pt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/certificatepage.pt	(revision 8920)
@@ -20,5 +20,5 @@
 <h3>
   <span tal:content="context/__name__">Code</span>
-  <span i18n:domain="waeup.kofa" i18n:translate="">Course Referrers</span>
+  <span i18n:domain="waeup.kofa" i18n:translate="">Courses</span>
 </h3>
 <br />
@@ -26,7 +26,10 @@
 <thead>
   <tr>
-    <th i18n:translate="">Level</th><th i18n:translate="">Semester</th>
-    <th i18n:translate="">Referrer</th><th i18n:translate="">Course</th>
-    <th i18n:translate="">Title</th><th i18n:translate="">Mandatory</th>
+    <th i18n:translate="">Level</th>
+    <th i18n:translate="">Semester</th>
+    <th i18n:translate="">Cert. Course</th>
+    <th i18n:translate="">Dep. Course</th>
+    <th i18n:translate="">Title</th>
+    <th i18n:translate="">Mandatory</th>
   </tr>
 </thead>
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_browser.py	(revision 8920)
@@ -84,5 +84,5 @@
         self.app['faculties']['fac1']['dep1'].courses.addCourse(
             self.course)
-        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCourseRef(
+        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCertCourse(
             self.course, level=100)
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_permissions.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_permissions.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/tests/test_permissions.py	(revision 8920)
@@ -91,5 +91,5 @@
         cert.code = 'cert1'
         dept.certificates.addCertificate(cert)
-        cert.addCourseRef(course)
+        cert.addCertCourse(course)
 
         self.browser = Browser()
Index: /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/browser/viewlets.py	(revision 8920)
@@ -456,5 +456,5 @@
     grok.context(ICertificateCourse)
     grok.view(CertificateCoursePage)
-    text = _('Edit course referrer')
+    text = _('Edit certificate course')
 
 #
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 8920)
@@ -932,13 +932,6 @@
         ticket.automatic = False
         ticket.carry_over = False
-        ticket.code = course.code
-        ticket.title = course.title
-        ticket.fcode = course.__parent__.__parent__.__parent__.code
-        ticket.dcode = course.__parent__.__parent__.code
-        ticket.credits = course.credits
-        ticket.passmark = course.passmark
-        ticket.semester = course.semester
         try:
-            self.context.addCourseTicket(ticket)
+            self.context.addCourseTicket(ticket, course)
         except KeyError:
             self.flash(_('The ticket exists.'))
@@ -1784,5 +1777,5 @@
         level_title = translate(self.context.level_title, 'waeup.kofa',
             target_language=lang)
-        return _('Add and remove course tickets of study level ${a}',
+        return _('Edit course list of ${a}',
             mapping = {'a':level_title})
 
@@ -1855,9 +1848,8 @@
         ticket = createObject(u'waeup.CourseTicket')
         course = data['course']
-        for name in ['code', 'title', 'credits', 'passmark', 'semester']:
-            setattr(ticket, name, getattr(course, name))
         ticket.automatic = False
+        ticket.carry_over = False
         try:
-            self.context.addCourseTicket(ticket)
+            self.context.addCourseTicket(ticket, course)
         except KeyError:
             self.flash(_('The ticket exists.'))
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/studylevelpage.pt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/studylevelpage.pt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/studylevelpage.pt	(revision 8920)
@@ -34,6 +34,6 @@
       <th i18n:translate="">Code</th>
       <th i18n:translate="">Title</th>
-      <th i18n:translate="">Dept.</th>
-      <th i18n:translate="">Fact.</th>
+      <th i18n:translate="">Dep.</th>
+      <th i18n:translate="">Fac.</th>
       <th i18n:translate="">Cred.</th>
       <th i18n:translate="">Mand.</th>
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/interfaces.py	(revision 8920)
@@ -402,5 +402,5 @@
         )
 
-    def addCourseTicket(courseticket):
+    def addCourseTicket(ticket, course):
         """Add a course ticket object.
         """
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/studylevel.py	(revision 8920)
@@ -56,11 +56,18 @@
         return studylevelsource.factory.getTitle(self.__parent__, self.level)
 
-    def addCourseTicket(self, courseticket):
+    def addCourseTicket(self, ticket, course):
         """Add a course ticket object.
         """
-        if not ICourseTicket.providedBy(courseticket):
+        if not ICourseTicket.providedBy(ticket):
             raise TypeError(
                 'StudentStudyLeves contain only ICourseTicket instances')
-        self[courseticket.code] = courseticket
+        ticket.code = course.code
+        ticket.title = course.title
+        ticket.fcode = course.__parent__.__parent__.__parent__.code
+        ticket.dcode = course.__parent__.__parent__.code
+        ticket.credits = course.credits
+        ticket.passmark = course.passmark
+        ticket.semester = course.semester
+        self[ticket.code] = ticket
         return
 
@@ -87,6 +94,7 @@
 
     A course ticket contains a copy of the original course and
-    course referrer data. If the courses and/or their referrers are removed, the
-    corresponding tickets remain unchanged. So we do not need any event
+    certificate course data. If the courses and/or the referrin certificate
+    courses are removed, the corresponding tickets remain unchanged.
+    So we do not need any event
     triggered actions on course tickets.
     """
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_batching.py	(revision 8920)
@@ -218,5 +218,5 @@
         ticket.passmark = 100
         ticket.semester = 2
-        study_level.addCourseTicket(ticket)
+        study_level[ticket.code] = ticket
         self.add_payment(student)
         return student
@@ -688,5 +688,5 @@
         shutil.rmtree(os.path.dirname(fin_file))
 
-        # Add course and course referrer
+        # Add course and certificate course
         self.course = createObject('waeup.Course')
         self.course.code = 'COURSE1'
@@ -696,5 +696,5 @@
         self.app['faculties']['fac1']['dep1'].courses.addCourse(
             self.course)
-        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCourseRef(
+        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCertCourse(
             self.course, level=100)
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 8920)
@@ -171,5 +171,5 @@
         self.app['faculties']['fac1']['dep1'].courses.addCourse(
             self.course)
-        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCourseRef(
+        self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCertCourse(
             self.course, level=100)
 
@@ -1240,5 +1240,5 @@
         self.browser.getControl("Create course list now").click()
         self.browser.getLink("100").click()
-        self.browser.getLink("Add and remove courses").click()
+        self.browser.getLink("Edit course list").click()
         self.browser.getControl("Add course ticket").click()
         self.browser.getControl(name="form.course").value = ['COURSE1']
@@ -1253,5 +1253,5 @@
         self.browser.getControl("Create course list now").click()
         self.browser.getLink("200").click()
-        self.browser.getLink("Add and remove courses").click()
+        self.browser.getLink("Edit course list").click()
         self.browser.getControl("Add course ticket").click()
         self.browser.getControl(name="form.course").value = ['COURSE1']
@@ -1521,5 +1521,5 @@
         # The new SFE-0 pin can be used for starting new session
         self.browser.open(self.studycourse_path)
-        self.browser.getLink('Start session').click()
+        self.browser.getLink('Start new session').click()
         pin = self.app['accesscodes']['SFE-0'].keys()[0]
         parts = pin.split('-')[1:]
@@ -1570,5 +1570,5 @@
         # The new SFE-0 pin can be used for starting session
         self.browser.open(self.studycourse_path)
-        self.browser.getLink('Start session').click()
+        self.browser.getLink('Start new session').click()
         pin = self.app['accesscodes']['SFE-0'].keys()[0]
         parts = pin.split('-')[1:]
@@ -1610,5 +1610,5 @@
         # The new SFE-1 pin can be used for starting new session
         self.browser.open(self.studycourse_path)
-        self.browser.getLink('Start session').click()
+        self.browser.getLink('Start new session').click()
         self.browser.getControl(name="ac_series").value = sfeseries
         self.browser.getControl(name="ac_number").value = sfenumber
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_student.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_student.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_student.py	(revision 8920)
@@ -129,5 +129,5 @@
         studylevel = StudentStudyLevel()
         self.assertRaises(
-            TypeError, studylevel.addCourseTicket, department)
+            TypeError, studylevel.addCourseTicket, department, department)
 
     def test_booking_date(self):
Index: /main/waeup.kofa/trunk/src/waeup/kofa/students/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/students/viewlets.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/students/viewlets.py	(revision 8920)
@@ -445,5 +445,5 @@
     grok.require('waeup.handleStudent')
     icon = 'actionicon_start.gif'
-    text = _('Start session')
+    text = _('Start new session')
     target = 'start_session'
 
@@ -477,5 +477,5 @@
     grok.view(StudyLevelDisplayFormPage)
     grok.require('waeup.handleStudent')
-    text = _('Add and remove courses')
+    text = _('Edit course list')
     target = 'edit'
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/api.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/api.txt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/api.txt	(revision 8920)
@@ -28,3 +28,3 @@
    :maxdepth: 1
 
-   courserefs.txt
+   certcourses.txt
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/batching.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/batching.py	(revision 8920)
@@ -317,5 +317,5 @@
     def addEntry(self, obj, row, site):
         parent = self.getParent(row, site)
-        parent.addCourseRef(row['course'],
+        parent.addCertCourse(row['course'],
                             row['level'], row['mandatory'])
         return
@@ -323,4 +323,4 @@
     def delEntry(self, row, site):
         parent = self.getParent(row, site)
-        parent.delCourseRef(row['course'].code, row['level'])
-        return
+        parent.delCertCourse(row['course'].code, row['level'])
+        return
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/catalog.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/catalog.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/catalog.py	(revision 8920)
@@ -159,5 +159,5 @@
         self.title = context.course.title
         self.code = context.getCourseCode
-        self.type = 'Course Referrer'
+        self.type = 'Certificate Course'
 
 def search(query=None, view=None):
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/certcourses.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/certcourses.txt	(revision 8920)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/certcourses.txt	(revision 8920)
@@ -0,0 +1,116 @@
+Certificate Courses
+*******************
+
+Courses are referred to by certificate courses.
+
+We can be sure, that when removing courses or referrers of them,
+other data will be handled in a way we expect. That is,
+
+* when we remove a course, we want all referrers to it be removed as
+  well
+
+* when we remove a referrer of a course, nothing else should be
+  touched but only this very referrer.
+
+
+As correct deletion of referrer needs support of catalogs (we lookup
+catalogs to find referrers), we need a fully blown ZODB here,
+including an instance of :class:`waeup.kofa.app.University`, as this is our
+`ISite` object where the catalogs are stored.
+
+We create a complete university tree, starting with a
+:class:`University` instance and going down to courses, certificats
+and course certificates:
+
+    >>> from waeup.kofa.app import University
+    >>> root = getRootFolder()
+    >>> root['app'] = University()
+
+We have to set the site, to enable proper working of catalogs and
+`IObjectRemoved` handlers:
+
+    >>> from zope.app.component.hooks import setSite
+    >>> setSite(root['app'])
+
+    >>> from zope.component import createObject
+    >>> faculty = createObject('waeup.Faculty')
+    >>> faculty.code = 'FAC'
+    >>> root['app']['faculties'].addFaculty(faculty)
+    >>> fac = root['app']['faculties']['FAC']
+
+    >>> dept = createObject('waeup.Department')
+    >>> dept.code = 'DEPT'
+    >>> root['app']['faculties']['FAC'].addDepartment(dept)
+
+    >>> course = createObject('waeup.Course')
+    >>> course.code = 'CRS1'
+    >>> fac['DEPT'].courses.addCourse(course)
+
+Now let's add another department, which will also hold a course:
+
+    >>> dept2 = createObject('waeup.Department')
+    >>> dept2.code = 'DEPT2'
+    >>> root['app']['faculties']['FAC'].addDepartment(dept2)
+
+    >>> course = createObject('waeup.Course')
+    >>> course.code = 'CRS2'
+    >>> fac['DEPT2'].courses.addCourse(course)
+
+Finally, we add a certificate with referrers (certificate courses) to
+the created courses:
+
+    >>> cert = createObject('waeup.Certificate')
+    >>> cert.code = 'CERT'
+    >>> fac['DEPT'].certificates.addCertificate(cert)
+
+    >>> fac['DEPT'].certificates['CERT'].addCertCourse(
+    ...   fac['DEPT'].courses['CRS1'])
+
+    >>> fac['DEPT'].certificates['CERT'].addCertCourse(
+    ...   fac['DEPT2'].courses['CRS2'])
+
+We add the latter course again, but this time for the second level:
+
+    >>> fac['DEPT'].certificates['CERT'].addCertCourse(
+    ...   fac['DEPT2'].courses['CRS2'], level=200)
+
+So, we have three referrers in our certificate of two different
+courses stored somewhere in the application:
+
+    >>> list(fac['DEPT'].certificates['CERT'])
+    [u'CRS1_100', u'CRS2_100', u'CRS2_200']
+
+Both, the courses themselves and the referrers of them, are the same
+(not only equal):
+
+    >>> a = root['app']['faculties']['FAC']['DEPT']
+    >>> b1 = a.courses['CRS1']
+    >>> b2 = a.certificates['CERT']['CRS1_100'].course
+    >>> b1 is b2
+    True
+
+If we remove the course, also the select item in the certificate course
+will be gone:
+
+    >>> list(a.certificates['CERT'])
+    [u'CRS1_100', u'CRS2_100', u'CRS2_200']
+
+    >>> list(a.courses)
+    [u'CRS1']
+
+    >>> del root['app']['faculties']['FAC']['DEPT'].courses['CRS1']
+    >>> list(a.certificates['CERT'])
+    [u'CRS2_100', u'CRS2_200']
+
+    >>> list(a.courses)
+    []
+
+If we remove a referrer of a course, this will not touch the course
+nor other referrers:
+
+    >>> del fac['DEPT'].certificates['CERT']['CRS2_200']
+    >>> list(a.certificates['CERT'])
+    [u'CRS2_100']
+
+    >>> list(fac['DEPT2'].courses)
+    [u'CRS2']
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.py	(revision 8920)
@@ -63,6 +63,6 @@
         return "%s (%s)" % (self.title,self.code)
 
-    def addCourseRef(self, course, level=100, mandatory=True):
-        """Add a course referrer.
+    def addCertCourse(self, course, level=100, mandatory=True):
+        """Add a certificate course.
         """
         code = "%s_%s" % (course.code, level)
@@ -72,6 +72,6 @@
         self._p_changed = True
 
-    def delCourseRef(self, code, level=None):
-        """Delete a course referrer denoted by its code.
+    def delCertCourse(self, code, level=None):
+        """Delete a certificate course denoted by its code.
         """
         keys = list(self.keys()) # create list copy
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.txt	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/certificate.txt	(revision 8920)
@@ -96,19 +96,19 @@
       .. XXX: This is not a proper description
 
-   .. method:: addCourseRef(course[, level=100,[ mandatory=True]])
-
-      Add a referrer of a course. A course is an object implementing
+   .. method:: addCertCourse(course[, level=100,[ mandatory=True]])
+
+      Add a certificate course. A course is an object implementing
       :class:`waeup.kofa.interfaces.ICourse`.
 
-      Please don't be confused by the term 'referrer'. As course objects 
-      will normaly be  stored
-      in a department, the course referrer refers to 
+      Please don't be confused by the term 'certificate course'.
+      As course objects will normaly be  stored
+      in a department, the certificate course refers to
       the 'real' course in the department container.
 
-   .. method:: delCourseRef(code)
-
-      Remove a course referrer from a certificate.
-
-      The referrer must be given by its code number.
+   .. method:: delCertCourse(code)
+
+      Remove a certificate course from a certificate.
+
+      The certificate course must be given by its code number.
 
 :class:`CertificateCourse`
@@ -117,12 +117,12 @@
 .. class:: CertificateCourse(course[, level=100[, mandatory=True]])
 
-   Create a course referrer.
-
-   A certificate course (old term) or course referrer are held in
+   Create a certificate course.
+
+   A certificate course are held in
    certificates and refer to an existing :class:`Course` instance held
    elsewhere.
 
-   A certificate can require several course referrers and one
-   course referrer can be required by several certificates.
+   A certificate can require several certificate courses and one
+   certificate course can be required by several certificates.
 
    .. attribute:: course
@@ -225,5 +225,5 @@
 
    To accomplish that, the parents of the removed course are looked up
-   for a certifcate container which contains a course referrer that
+   for a certifcate container which contains a certificate course that
    refers to the deleted course.
 
@@ -341,5 +341,5 @@
     >>> mycert.code = 'MYCERT'
     >>> mydept.certificates.addCertificate(mycert)
-    >>> mycert.addCourseRef(mycourse)
+    >>> mycert.addCertCourse(mycourse)
 
     >>> transaction.commit()
@@ -354,5 +354,5 @@
     ['mydept']
 
-The course referrer we stored in the certificate is indeed a
+The certificate course we stored in the certificate is indeed a
 referrer of the course, not a copy of it:
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/course.py	(revision 8920)
@@ -78,5 +78,5 @@
         # Remove that referrer...
         cert = certcourse.__parent__
-        cert.delCourseRef(code)
+        cert.delCertCourse(code)
         cert._p_changed = True
     return
Index: in/waeup.kofa/trunk/src/waeup/kofa/university/courserefs.txt
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/courserefs.txt	(revision 8919)
+++ 	(revision )
@@ -1,116 +1,0 @@
-Course referrers
-****************
-
-Courses are referred to by certificate courses.
-
-We can be sure, that when removing courses or referrers of them,
-other data will be handled in a way we expect. That is,
-
-* when we remove a course, we want all referrers to it be removed as
-  well
-
-* when we remove a referrer of a course, nothing else should be
-  touched but only this very referrer.
-
-
-As correct deletion of referrer needs support of catalogs (we lookup
-catalogs to find referrers), we need a fully blown ZODB here,
-including an instance of :class:`waeup.kofa.app.University`, as this is our
-`ISite` object where the catalogs are stored.
-
-We create a complete university tree, starting with a
-:class:`University` instance and going down to courses, certificats
-and course certificates:
-
-    >>> from waeup.kofa.app import University
-    >>> root = getRootFolder()
-    >>> root['app'] = University()
-
-We have to set the site, to enable proper working of catalogs and
-`IObjectRemoved` handlers:
-
-    >>> from zope.app.component.hooks import setSite
-    >>> setSite(root['app'])
-
-    >>> from zope.component import createObject
-    >>> faculty = createObject('waeup.Faculty')
-    >>> faculty.code = 'FAC'
-    >>> root['app']['faculties'].addFaculty(faculty)
-    >>> fac = root['app']['faculties']['FAC']
-
-    >>> dept = createObject('waeup.Department')
-    >>> dept.code = 'DEPT'
-    >>> root['app']['faculties']['FAC'].addDepartment(dept)
-
-    >>> course = createObject('waeup.Course')
-    >>> course.code = 'CRS1'
-    >>> fac['DEPT'].courses.addCourse(course)
-
-Now let's add another department, which will also hold a course:
-
-    >>> dept2 = createObject('waeup.Department')
-    >>> dept2.code = 'DEPT2'
-    >>> root['app']['faculties']['FAC'].addDepartment(dept2)
-
-    >>> course = createObject('waeup.Course')
-    >>> course.code = 'CRS2'
-    >>> fac['DEPT2'].courses.addCourse(course)
-
-Finally, we add a certificate with referrers (certificate courses) to
-the created courses:
-
-    >>> cert = createObject('waeup.Certificate')
-    >>> cert.code = 'CERT'
-    >>> fac['DEPT'].certificates.addCertificate(cert)
-
-    >>> fac['DEPT'].certificates['CERT'].addCourseRef(
-    ...   fac['DEPT'].courses['CRS1'])
-
-    >>> fac['DEPT'].certificates['CERT'].addCourseRef(
-    ...   fac['DEPT2'].courses['CRS2'])
-
-We add the latter course again, but this time for the second level:
-
-    >>> fac['DEPT'].certificates['CERT'].addCourseRef(
-    ...   fac['DEPT2'].courses['CRS2'], level=200)
-
-So, we have three referrers in our certificate of two different
-courses stored somewhere in the application:
-
-    >>> list(fac['DEPT'].certificates['CERT'])
-    [u'CRS1_100', u'CRS2_100', u'CRS2_200']
-
-Both, the courses themselves and the referrers of them, are the same
-(not only equal):
-
-    >>> a = root['app']['faculties']['FAC']['DEPT']
-    >>> b1 = a.courses['CRS1']
-    >>> b2 = a.certificates['CERT']['CRS1_100'].course
-    >>> b1 is b2
-    True
-
-If we remove the course, also the select item in the certificate course
-will be gone:
-
-    >>> list(a.certificates['CERT'])
-    [u'CRS1_100', u'CRS2_100', u'CRS2_200']
-
-    >>> list(a.courses)
-    [u'CRS1']
-
-    >>> del root['app']['faculties']['FAC']['DEPT'].courses['CRS1']
-    >>> list(a.certificates['CERT'])
-    [u'CRS2_100', u'CRS2_200']
-
-    >>> list(a.courses)
-    []
-
-If we remove a referrer of a course, this will not touch the course
-nor other referrers:
-
-    >>> del fac['DEPT'].certificates['CERT']['CRS2_200']
-    >>> list(a.certificates['CERT'])
-    [u'CRS2_100']
-
-    >>> list(fac['DEPT2'].courses)
-    [u'CRS2']
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/interfaces.py	(revision 8920)
@@ -286,5 +286,5 @@
     """
     course = schema.Choice(
-        title = _(u'Course Referrer'),
+        title = _(u'Course'),
         source = CourseSource(),
         readonly = True,
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 8920)
@@ -266,5 +266,5 @@
         self.department2.certificates['CRT'] = self.certificate
         self.course = Course(code='CRS')
-        self.department2.certificates['CRT'].addCourseRef(self.course)
+        self.department2.certificates['CRT'].addCertCourse(self.course)
         self.cert_course = self.certificate['CRS_100']
         self.department2.courses['CRS'] = self.course
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_export.py	(revision 8920)
@@ -444,7 +444,7 @@
         self.dept1.certificates.addCertificate(self.cert2)
         self.dept2.certificates.addCertificate(self.cert3)
-        self.cert1.addCourseRef(self.course1, 100, True)
-        self.cert1.addCourseRef(self.course2, 400, False)
-        self.cert3.addCourseRef(self.course3, 100, False)
+        self.cert1.addCertCourse(self.course1, 100, True)
+        self.cert1.addCertCourse(self.course2, 400, False)
+        self.cert3.addCertCourse(self.course3, 100, False)
         self.certcourse1 = self.cert1['C1_100']
         self.certcourse2 = self.cert1['C2_400']
Index: /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_university.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_university.py	(revision 8919)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_university.py	(revision 8920)
@@ -33,5 +33,5 @@
 def test_suite():
     # collect doctests for university subpackage
-    suite = get_doctest_suite(['university/courserefs.txt',])
+    suite = get_doctest_suite(['university/certcourses.txt',])
     # add local unittests (actually only one)
     for testcase in [UniversitySubpackageTests,]:
