Index: main/waeup.sirp/trunk/src/waeup/sirp/university/certificate.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/university/certificate.py	(revision 5953)
+++ main/waeup.sirp/trunk/src/waeup/sirp/university/certificate.py	(revision 5977)
@@ -58,5 +58,5 @@
     
     def addCourseRef(self, course, level=100, core_or_elective=True):
-        """Add a course reference.
+        """Add a course referrer.
         """
         code = "%s_%s" % (course.code, level)
@@ -67,5 +67,5 @@
 
     def delCourseRef(self, code, level=None):
-        """Delete a course reference denoted by its code.
+        """Delete a course referrer denoted by its code.
         """
         for key in self.keys():
@@ -122,10 +122,10 @@
 @grok.subscribe(ICourse, grok.IObjectRemovedEvent)
 def removedCourseHandler(course, event):
-    """If a course is deleted, we make sure that also references in a
+    """If a course is deleted, we make sure that also referrers in a
        certificatecontainer are removed.
     """
     code = course.code
 
-    # Find all certcourses that reference the given course...
+    # Find all certificatecourses that refer to given course...
     try:
         cat = getUtility(ICatalog, name='certcourses_catalog')
@@ -136,5 +136,5 @@
     results = cat.searchResults(course_code=(code, code))
     for certcourse in results:
-        # Remove that reference...
+        # Remove that referrer...
         cert = certcourse.__parent__
         cert.delCourseRef(code)
Index: main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py	(revision 5953)
+++ main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py	(revision 5977)
@@ -1,29 +1,10 @@
 """Interfaces of academics specific objects.
 """
-from zc.sourcefactory.basic import BasicSourceFactory
 from zope import schema
-try:
-    from zope.catalog.interfaces import ICatalog
-except ImportError:
-    # BBB
-    from zope.app.catalog.interfaces import ICatalog
-from zope.component import getUtility
 from zope.interface import Attribute
-from waeup.sirp.interfaces import (IWAeUPObject, IWAeUPContainer,
-                                   SimpleWAeUPVocabulary)
-
-class CourseSource(BasicSourceFactory):
-    """A course source delivers all courses inside the portal by looking
-       up a catalog.
-    """
-    def getValues(self):
-        catalog = getUtility(ICatalog, name='courses_catalog')
-        return list(catalog.searchResults(code=('', 'z*')))
-
-    def getToken(self, value):
-        return value.code
-        
-    def getTitle(self, value):
-        return "%s - %s" % (value.code, value.title[:64])
+from waeup.sirp.interfaces import (IWAeUPObject, IWAeUPContainer)
+                                   
+from waeup.sirp.university.vocabularies import (course_levels,
+                                                semester, CourseSource)                                   
 
 class IFaculty(IWAeUPContainer):
@@ -151,7 +132,5 @@
         title = u'Semester/Term',
         default = 0,
-        vocabulary = SimpleWAeUPVocabulary(
-            ('N/A', 0), ('First Semester', 1),
-            ('Second Semester', 2), ('Combined', 3)),
+        vocabulary = semester,
         required = True,
         )
@@ -199,13 +178,17 @@
         )
 
-    start_level = schema.TextLine(
+    start_level = schema.Choice(
         title = u'Start Level',
-        default = u'100',
-        required = True,
-        )
-    
-    end_level = schema.TextLine(
+        #source = LevelSource(),
+        vocabulary = course_levels,
+        default = 100,
+        required = True,
+        )
+    
+    end_level = schema.Choice(
         title = u'End Level',
-        default = u'500',
+        #source = LevelSource(),
+        vocabulary = course_levels,
+        default = 500,
         required = True,
         )
@@ -240,17 +223,18 @@
 
 class ICertificateCourse(IWAeUPObject):
-    """A certificatecourse is a course referenced by a certificate, which
+    """A certificatecourse is referring a course and 
        provides some own attributes.
     """
     course = schema.Choice(
-        title = u'Course referenced',
+        title = u'Course referrer',
         source = CourseSource(),
         readonly = True,
         )
     
-    level = schema.Int(
+    level = schema.Choice(
         title = u'Level',
         required = True,
-        default = 100,
+        #source = LevelSource(),
+        vocabulary = course_levels,
         readonly = False,
         )
@@ -263,5 +247,5 @@
 
     def getCourseCode():
-        """Return the code of the referenced course.
+        """Return the code of the course referred to.
 
         This is needed for cataloging.
@@ -270,9 +254,9 @@
         
 class ICertificateCourseAdd(ICertificateCourse):
-    """A certificatecourse is a course referenced by a certificate, which
+    """A certificatecourse is referring a course and 
        provides some own attributes.
     """
     course = schema.Choice(
-        title = u'Course to be referenced',
+        title = u'Course',
         source = CourseSource(),
         readonly = False,
Index: main/waeup.sirp/trunk/src/waeup/sirp/university/vocabularies.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/university/vocabularies.py	(revision 5977)
+++ main/waeup.sirp/trunk/src/waeup/sirp/university/vocabularies.py	(revision 5977)
@@ -0,0 +1,39 @@
+from waeup.sirp.interfaces import SimpleWAeUPVocabulary
+from zc.sourcefactory.basic import BasicSourceFactory
+try:
+    from zope.catalog.interfaces import ICatalog
+except ImportError:
+    # BBB
+    from zope.app.catalog.interfaces import ICatalog
+from zope.component import getUtility
+                                   
+course_levels = SimpleWAeUPVocabulary(
+              ('Year 1 (100)',100),
+              ('Year 2 (200)',200),
+              ('Year 3 (300)',300),
+              ('Year 4 (400)',400),
+              ('Year 5 (500)',500),
+              ('Year 6 (600)',600),
+              ('Year 7 (700)',700),
+              ('Year 8 (800)',800),
+              )
+              
+semester = SimpleWAeUPVocabulary(
+            ('N/A', 0), ('First Semester', 1),
+            ('Second Semester', 2), ('Combined', 3))              
+              
+class CourseSource(BasicSourceFactory):
+    """A course source delivers all courses inside the portal by looking
+       up a catalog.
+    """
+    def getValues(self):
+        catalog = getUtility(ICatalog, name='courses_catalog')
+        return sorted(list(catalog.searchResults(code=('', 'z*'))),key=lambda value: value.code)
+
+    def getToken(self, value):
+        return value.code
+        
+    def getTitle(self, value):
+        return "%s - %s" % (value.code, value.title[:64])
+        
+                                                             
