Index: /waeup/branches/hraban/src/waeup/app.py
===================================================================
--- /waeup/branches/hraban/src/waeup/app.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/app.py	(revision 3566)
@@ -4,19 +4,21 @@
 from setup import app_setup
 from waeup.viewlets import MainArea
+from basecontainer import BaseContainer
 
-class University(grok.Application, grok.Container):
+class University(grok.Application, BaseContainer):
     grok.implements(IUniversity)
 
-    def __init__(self, name=u'Unnamed', **kw):
+    def __init__(self, **kw):
         super(University, self).__init__(**kw)
-        self.name = name
+        self.__dict__.update(kw)
         app_setup.setup(self)
 
-class Content(grok.Viewlet):
-    grok.viewletmanager(MainArea)
-    grok.context(IUniversity)
-
-
-class Edit(grok.EditForm):
-    grok.context(University)
-    grok.AutoFields(IUniversity)
+#class Content(grok.Viewlet):
+#    grok.viewletmanager(MainArea)
+#    grok.context(IUniversity)
+#    grok.template('basecontainer_templates/content.pt')
+#
+#
+#class Edit(grok.EditForm):
+#    grok.context(University)
+#    grok.AutoFields(IUniversity)
Index: /waeup/branches/hraban/src/waeup/app_templates/content.pt
===================================================================
--- /waeup/branches/hraban/src/waeup/app_templates/content.pt	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/app_templates/content.pt	(revision 3566)
@@ -1,6 +1,2 @@
-  <h1>Congratulations!</h1>
-
-  <h2>Your faculties:</h2>
-
   <ul>
     <li tal:repeat="fac context/values">
Index: /waeup/branches/hraban/src/waeup/basecontainer.py
===================================================================
--- /waeup/branches/hraban/src/waeup/basecontainer.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/basecontainer.py	(revision 3566)
@@ -2,6 +2,5 @@
 import os
 from waeup.interfaces import IBaseContainer
-#from waeup.baseitem import BaseItem
-from waeup.viewlets import MainArea, Index, Add, Edit
+import waeup.viewlets as vw
 from zope.component import getMultiAdapter
 
@@ -9,10 +8,15 @@
     """
     The base container. This is a stub for now. It can have
-    base methods and templates attached to it
+    base methods attached to it
     """
     grok.implements(IBaseContainer)
+    id = 'base'
     name = u"BaseContainer"
     childClass = None
     specialActions = []
+    
+    def __init__(self, **kwargs):
+        super(BaseContainer, self).__init__()
+        self.__dict__.update(kwargs)
     
 class Content(grok.Viewlet):
@@ -20,6 +24,6 @@
     Base viewlet
     """
-    grok.viewletmanager(MainArea)
-    grok.view(Index)
+    grok.viewletmanager(vw.MainArea)
+    grok.view(vw.Index)
     #grok.order(1)
 
@@ -35,22 +39,48 @@
         obj = self.context.childClass(**data)
         try:
-            name = data['name'].lower().replace(' ', '_')
-            self.context[name] = obj
+            id = data['id'].lower()
+            self.context[id] = obj
         except Exception, ex:
             print ex
             print data
-        self.redirect(self.url())
+            raise ex
+        self.redirect(self.url('.'))
 
-class Add(grok.Viewlet):
-    grok.viewletmanager(MainArea)
+class EditForm(grok.EditForm):
+    template = grok.PageTemplate(filename=os.path.join('basecontainer_templates', 'edit_form.pt'))
+   
+    def update(self):
+        self.form_fields = grok.AutoFields(self.context)
+        grok.EditForm.update(self)
+        
+    def handle_edit_action(self, **data):
+        grok.EditForm.handle_edit_action(self, **data)
+        self.redirect(self.url('@@index'))
+
+class AddViewlet(grok.Viewlet):
+    grok.viewletmanager(vw.MainArea)
     grok.context(IBaseContainer)
-    grok.view(Add)
+    grok.view(vw.Add)
+    #grok.name('add')
     #grok.order(2)
 
     def update(self):
-        self.form = getMultiAdapter((self.context, self.request),
-                                    name='addform')
+        self.form = getMultiAdapter((self.context, self.request), name='addform')
         self.form.update_form()
 
     def render(self):
         return self.form.render()
+
+class EditViewlet(grok.Viewlet):
+    grok.viewletmanager(vw.MainArea)
+    grok.context(IBaseContainer)
+    grok.view(vw.Edit)
+    #grok.name('edit')
+    #grok.order(2)
+
+    def update(self):
+        self.form = getMultiAdapter((self.context, self.request), name='editform')
+        self.form.update_form()
+
+    def render(self):
+        return self.form.render()
Index: /waeup/branches/hraban/src/waeup/basecontainer_templates/content.pt
===================================================================
--- /waeup/branches/hraban/src/waeup/basecontainer_templates/content.pt	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/basecontainer_templates/content.pt	(revision 3566)
@@ -2,6 +2,6 @@
 	<ul>
 		<li><a href="" tal:attributes="href python:view.url(context.__parent__)">Up</a></li>
-		<li><a href="" tal:attributes="href python:view.url(context, '@@edit')">Edit</a>
-		<li><a href="" tal:attributes="href python:view.url(context, '@@add')">Add</a>
+		<li><a href="" tal:attributes="href python:view.url(context, '@@edit')">Edit <span tal:replace="context/name">Object</span></a></li>
+		<li tal:condition="exists:context/childClass/name"><a href="" tal:attributes="href python:view.url(context, '@@add')" >Add <span tal:replace="context/childClass/name">Child</span></a></li>
 		<li tal:repeat="action context/specialActions">
 			<a href="" tal:attributes="href python:view.url(context, action)"
@@ -12,17 +12,5 @@
 
 <h2 tal:content="context/name">Objects</h2>
-<table class="datatable">
-	<tr>
-		<th>Name</th>
-	</tr>
-	<tr tal:repeat="item context/values">
-		<td tal:repeat="prop item/items">
-			<a href="" tal:content="prop"
-			tal:attributes="href python:view.url(item)"></a>
-		</td>
-		<!--
-		<td><a href="" tal:content="item/name"
-			tal:attributes="href python:view.url(item)"></a></td>
-		-->
-	</tr>
-</table>
+<ul>
+	<li tal:repeat="item context/values"><a  tal:condition="exists:item/name" href="" tal:attributes="href  python:view.url(item)" tal:content="item/name">Item</a></li>
+</ul>
Index: /waeup/branches/hraban/src/waeup/basecontainer_templates/edit_form.pt
===================================================================
--- /waeup/branches/hraban/src/waeup/basecontainer_templates/edit_form.pt	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/basecontainer_templates/edit_form.pt	(revision 3566)
@@ -17,4 +17,5 @@
     </div>
     -->
+	<div tal:content="context"></div>
     <div class="form-fields">
         <tal:block repeat="widget view/widgets">
Index: /waeup/branches/hraban/src/waeup/baseitem.py
===================================================================
--- /waeup/branches/hraban/src/waeup/baseitem.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/baseitem.py	(revision 3566)
@@ -2,5 +2,5 @@
 import os
 import grok
-from waeup.viewlets import MainArea, Index, Add, Edit
+import waeup.viewlets as vw
 from waeup.interfaces import IBaseItem
 from zope.component import getMultiAdapter
@@ -11,7 +11,11 @@
     """
     grok.implements(IBaseItem)
+    
+    def __init__(self, **kwargs):
+        super(BaseItem, self).__init__()
+        self.__dict__.update(kwargs)
 
 class Index(grok.Viewlet):
-    grok.viewletmanager(MainArea)
+    grok.viewletmanager(vw.MainArea)
     #grok.context(IBaseItem)
     #grok.order(1)
@@ -29,6 +33,7 @@
     def add(self, **data):
         obj = self.context.childClass(**data)
-        name = data['name'].lower().replace(' ', '_')
-        self.context[name] = obj
+        id = data['id'].lower()
+        self.context[id] = obj
+        self.redirect(self.url('@@index'))
 
 class EditForm(grok.EditForm):
@@ -36,17 +41,16 @@
    
     def update(self):
-        self.form_fields = grok.AutoFields(self.context.childClass)
+        self.form_fields = grok.AutoFields(self.context)
         grok.EditForm.update(self)
+        
+    def handle_edit_action(self, **data):
+        grok.EditForm.handle_edit_action(self, **data)
+        self.redirect(self.url('..'))
 
-    @grok.action('Edit item')
-    def edit(self, **data):
-        obj = self.context.childClass(**data)
-        name = data['name'].lower().replace(' ', '_')
-        self.context[name] = obj
-
-class Add(grok.Viewlet):
-    grok.viewletmanager(MainArea)
+class AddViewlet(grok.Viewlet):
+    grok.viewletmanager(vw.MainArea)
     grok.context(IBaseItem)
-    grok.view(Add)
+    grok.view(vw.Add)
+    #grok.name('add')
     #grok.order(2)
 
@@ -60,8 +64,9 @@
 
 
-class Edit(grok.Viewlet):
-    grok.viewletmanager(MainArea)
+class EditViewlet(grok.Viewlet):
+    grok.viewletmanager(vw.MainArea)
     grok.context(IBaseItem)
-    grok.view(Edit)
+    grok.view(vw.Edit)
+    #grok.name('edit')
     #grok.order(2)
 
Index: /waeup/branches/hraban/src/waeup/hostel/__init__.py
===================================================================
--- /waeup/branches/hraban/src/waeup/hostel/__init__.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/hostel/__init__.py	(revision 3566)
@@ -0,0 +1,3 @@
+from interfaces import IHostel
+from hostelcontainer import HostelContainer
+from hostel import Hostel
Index: /waeup/branches/hraban/src/waeup/hostel/hostel.py
===================================================================
--- /waeup/branches/hraban/src/waeup/hostel/hostel.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/hostel/hostel.py	(revision 3566)
@@ -1,13 +1,24 @@
 import grok
-from waeup.baseitem import BaseItem
+import waeup.baseitem as base
 from waeup.hostel.interfaces import IHostel
 
 
-class Hostel(BaseItem):
+class Hostel(base.BaseItem):
     """This is a hostel record.
     """    
     grok.implements(IHostel)
- 
-    def __init__(self, name=u'Unnamed Hostel', **kw):
-        super(Hostel, self).__init__(**kw)
-        self.name = name
+    name = u'Hostel'
+    #childClass = ?
+
+
+#class Add(base.AddViewlet):
+#    grok.context(IHostel)
+#
+#class Edit(base.EditViewlet):
+#    grok.context(IHostel)
+#
+#class EditForm(base.EditForm):
+#    pass
+#
+#class AddForm(base.AddForm):
+#    pass
Index: /waeup/branches/hraban/src/waeup/hostel/hostelcontainer.py
===================================================================
--- /waeup/branches/hraban/src/waeup/hostel/hostelcontainer.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/hostel/hostelcontainer.py	(revision 3566)
@@ -1,6 +1,9 @@
+import grok
+from waeup.interfaces import IBaseContainer
 from waeup.basecontainer import BaseContainer
 from hostel import Hostel
 
 class HostelContainer(BaseContainer):
+    grok.implements(IBaseContainer)
     name = u"Hostels"
     childClass = Hostel
Index: /waeup/branches/hraban/src/waeup/hostel/interfaces.py
===================================================================
--- /waeup/branches/hraban/src/waeup/hostel/interfaces.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/hostel/interfaces.py	(revision 3566)
@@ -2,9 +2,17 @@
 ## interfaces.py
 import grok
+import re
 from zope import schema
+from waeup.interfaces import IBaseContainer
 
-class IHostel(grok.interfaces.IContainer):
+class IHostel(IBaseContainer):
     """Representation of a hostel (AKA hall).
     """
+    id = schema.ASCIILine(
+        title = u'ID of Hostel',
+        default = '1',
+        required = True,
+        constraint = (re.compile('^\w+$').match)
+        )
     name = schema.TextLine(
         title = u'Name of Hostel',
Index: /waeup/branches/hraban/src/waeup/interfaces.py
===================================================================
--- /waeup/branches/hraban/src/waeup/interfaces.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/interfaces.py	(revision 3566)
@@ -2,8 +2,19 @@
 ## interfaces.py
 import grok
-#from zope.interface import Interface
+import re
 from zope import schema
+from zope.interface import Interface
 
 class IBaseContainer(grok.interfaces.IContainer):
+    """
+    ID is something that can be used in an URL and as an index, e.g.
+    faculty/department codes
+    """
+    id = schema.ASCIILine(
+        title = u'ID of Container',
+        default = 'x',
+        required = True,
+        constraint = (re.compile('^\w+$').match)
+        )
     name = schema.TextLine(
         title = u'Name of Container',
@@ -13,5 +24,15 @@
     
 
-class IBaseItem(grok.interfaces.IContainer):
+class IBaseItem(Interface): #(grok.interfaces.IContainer):
+    """
+    ID is something that can be used in an URL and as an index, e.g.
+    course code, student ID
+    """
+    id = schema.ASCIILine(
+        title = u'ID of Item',
+        default = 'x',
+        required = True,
+        constraint = (re.compile('^\w+$').match)
+        )
     name = schema.TextLine(
         title = u'Name of Item',
@@ -20,7 +41,14 @@
         )
 
-class IUniversity(IBaseContainer):
+
+class IUniversity(grok.interfaces.IContainer):
     """Representation of a university.
     """
+    id = schema.ASCIILine(
+        title = u'ID of University',
+        default = 'base',
+        required = False,
+        readonly = True
+        )
     name = schema.TextLine(
         title = u'Name of University',
Index: /waeup/branches/hraban/src/waeup/students/interfaces.py
===================================================================
--- /waeup/branches/hraban/src/waeup/students/interfaces.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/students/interfaces.py	(revision 3566)
@@ -2,4 +2,5 @@
 ## interfaces.py
 import grok
+import re
 from zope import schema
 from waeup.interfaces import IBaseItem
@@ -43,5 +44,5 @@
         default = '',
         required = False,
-        constraint=(re.compile("^[A-Z]\d{6}$").match)
+        constraint=(re.compile("^([A-Z]\d{6})?$").match)
         )
     lga = schema.TextLine(
@@ -63,17 +64,17 @@
         default = '',
         required = False,
-        constraint=re.compile("^[A-Z]{3}\d{7}$").match
+        constraint=re.compile("^([A-Z]{3}\d{7})?$").match
         )
     sex = schema.ASCIILine( # Choice!
         title = u'Sex',
-        default = u'M',
+        default = 'M',
         required = True,
         constraint=(re.compile("^[MF]$").match)
         )
-    phone = schema.TextLine(
+    phone = schema.ASCIILine(
         title = u'Phone',
-        default = u'',
+        default = '',
         required = False,
-        constraint=re.compile(u"^[\d-,]{5,}$").match,
+        constraint=re.compile(u"^([\d-]{5,},?)?$").match,
         description = u'if multiple, separate with comma'
         )
@@ -88,5 +89,5 @@
         default = '',
         required = False,
-        constraint=(re.compile("^[A-Z]{3,8}$").match)
+        constraint=(re.compile("^([A-Z]{3,8})?$").match)
         )
     mode = schema.ASCIILine( # Choice?
@@ -99,5 +100,5 @@
         default = '',
         required = False,
-        constraint=(re.compile("^[A-Z]{3}$").match)
+        constraint=(re.compile("^([A-Z]{3})?$").match)
         )
     department = schema.ASCIILine( # Choice
@@ -105,5 +106,5 @@
         default = '',
         required = False,
-        constraint=(re.compile("^[A-Z]{3}$").match)
+        constraint=(re.compile("^([A-Z]{3})?$").match)
         )
     verdict = schema.ASCIILine(
@@ -126,4 +127,4 @@
         default = '',
         required = True,
-        constraint=(re.compile("^[\w\.]+@(\w+\.)+\w{2,}$").match)
+        constraint=(re.compile("^([\w\.]+@(\w+\.)+\w{2,})?$").match)
         )
Index: /waeup/branches/hraban/src/waeup/students/student.py
===================================================================
--- /waeup/branches/hraban/src/waeup/students/student.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/students/student.py	(revision 3566)
@@ -1,5 +1,5 @@
 import grok
+import waeup.baseitem as base
 from interfaces import IStudent
-from waeup.baseitem import BaseItem
 
 def fromCsv(a):
@@ -15,8 +15,9 @@
     return student
 
-class Student(BaseItem):
+class Student(base.BaseItem):
     """This is a student record.
     """
     grok.implements(IStudent)
+    name = u'Student'
 
     #TODO: REFACTOR TO SCHEMA
@@ -42,32 +43,4 @@
                  "email"
             ]
-
-    def __init__(self, name):
-        """
-        TODO: REFACTOR TO IMPORT METHOD
-        Fields:
-                 entry_mode,
-                 end_level,
-                 name,
-                 jamb_reg_no,
-                 level,
-                 id,
-                 lga,
-                 entry_session,
-                 matric_no,
-                 sex,
-                 phone,
-                 session,
-                 course,
-                 mode,
-                 faculty,
-                 department,
-                 verdict,
-                 review_state,
-                 perm_address,
-                 email
-
-        """
-        self.name = name
         
 
@@ -76,2 +49,8 @@
         return [getattr(self, field, u"") for field in self.fields]
 
+
+class Add(base.AddViewlet):
+    grok.context(IStudent)
+
+class Edit(base.EditViewlet):
+    grok.context(IStudent)
Index: /waeup/branches/hraban/src/waeup/students/studentcontainer.py
===================================================================
--- /waeup/branches/hraban/src/waeup/students/studentcontainer.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/students/studentcontainer.py	(revision 3566)
@@ -1,9 +1,11 @@
 import grok
 import os
-from waeup.basecontainer import BaseContainer
+from waeup.interfaces import IBaseContainer
+import waeup.basecontainer as base
 from student import Student, fromCsv
 from waeup.utils import importexport as csv
 
-class StudentContainer(BaseContainer):
+
+class StudentContainer(base.BaseContainer):
     """
     The node containing the student models
@@ -11,5 +13,5 @@
     name = u"Students"
     childClass = Student
-    specialActions = [u"import", u"export"]    
+    specialActions = [u'import', u'export', u'search']    
 
 class Import(grok.View):
@@ -39,2 +41,6 @@
         csv.writeFile(result)
         return "yeah %s" % t[0]
+
+
+class Edit(base.EditViewlet):
+    grok.context(IBaseContainer)
Index: /waeup/branches/hraban/src/waeup/university/__init__.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/__init__.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/__init__.py	(revision 3566)
@@ -0,0 +1,4 @@
+from interfaces import IFaculty, IDepartment
+from facultycontainer import FacultyContainer
+from faculty import Faculty
+from department import Department
Index: /waeup/branches/hraban/src/waeup/university/course.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/course.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/course.py	(revision 3566)
@@ -0,0 +1,7 @@
+import grok
+import waeup.baseitem as base
+from waeup.university.interfaces import ICourse
+
+class Department(base.BaseItem):
+    grok.implements(ICourse)
+    name = u'Course'
Index: /waeup/branches/hraban/src/waeup/university/department.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/department.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/department.py	(revision 3566)
@@ -0,0 +1,16 @@
+import grok
+import waeup.basecontainer as base
+from waeup.university.interfaces import IDepartment
+from waeup.university.course import Course
+
+class Department(base.BaseContainer):
+    grok.implements(IDepartment)
+    childClass = Course
+    name = u'Department'
+
+class Add(base.AddViewlet):
+    grok.context(IDepartment)
+
+
+#class Edit(base.EditViewlet):
+#    grok.context(IDepartment)
Index: /waeup/branches/hraban/src/waeup/university/faculty.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/faculty.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/faculty.py	(revision 3566)
@@ -1,15 +1,18 @@
 import grok
-from waeup.basecontainer import BaseContainer
+import waeup.basecontainer as base
 from waeup.university.interfaces import IFaculty
+from waeup.university.department import Department
 
-class Faculty(BaseContainer):
+class Faculty(base.BaseContainer):
+    """
+    This is a Faculty (part of University, contains Departments)
+    """
     grok.implements(IFaculty)
+    childClass = Department
+    name = u'Faculty'
 
-    def __init__(self, name=u'Unnamed Faculty', **kw):
-        super(Faculty, self).__init__(**kw)
-        self.name = name
+#class Add(base.AddViewlet):
+#    grok.context(IFaculty)
 
-class Index(grok.DisplayForm):
-    form_fields = grok.AutoFields(IFaculty)
-
-
+#class Edit(base.Edit):
+#    grok.context(IFaculty)
Index: /waeup/branches/hraban/src/waeup/university/facultycontainer.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/facultycontainer.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/facultycontainer.py	(revision 3566)
@@ -5,5 +5,5 @@
 
 class FacultyContainer(BaseContainer):
-    #grok.implements(grok.interfaces.IContainer)
+    #grok.implements(IBaseContainer)
     name = u'Faculties'
     childClass = Faculty
Index: /waeup/branches/hraban/src/waeup/university/interfaces.py
===================================================================
--- /waeup/branches/hraban/src/waeup/university/interfaces.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/university/interfaces.py	(revision 3566)
@@ -1,8 +1,21 @@
 import grok
+import re
 from zope import schema
+from waeup.interfaces import IBaseContainer
 
-class IFaculty(grok.interfaces.IContainer):
+class IFaculty(IBaseContainer):
     """Representation of a university faculty.
     """
+    id = schema.ASCIILine(
+        title = u'ID of Faculty',
+        default = 'XXX',
+        required = True,
+        constraint = (re.compile('^[A-Z]{3}$').match)
+        )
+    title = schema.TextLine(
+        title = u'Title of Faculty',
+        default = u'Faculty of',
+        required = True
+        )
     name = schema.TextLine(
         title = u'Name of Faculty',
@@ -10,2 +23,39 @@
         required = True,
         )
+
+
+class IDepartment(IBaseContainer):
+    """Representation of a university department.
+    """
+    id = schema.ASCIILine(
+        title = u'ID of Department',
+        default = 'XXX',
+        required = True,
+        constraint = (re.compile('^[A-Z]{3}$').match)
+        )
+    title = schema.TextLine(
+        title = u'Title of Department',
+        default = u'Department of',
+        required = True
+        )
+    name = schema.TextLine(
+        title = u'Name of Department',
+        default = u'Unnamed',
+        required = True,
+        )
+
+
+class ICourse(IBaseContainer):
+    """Representation of a study course, provided by a department.
+    """
+    id = schema.ASCIILine(
+        title = u'ID of Course',
+        default = 'XXX',
+        required = True,
+        constraint = (re.compile('^[A-Z]{3,8}$').match)
+        )
+    name = schema.TextLine(
+        title = u'Name of Course',
+        default = u'Unnamed',
+        required = True,
+        )
Index: /waeup/branches/hraban/src/waeup/viewlets.py
===================================================================
--- /waeup/branches/hraban/src/waeup/viewlets.py	(revision 3565)
+++ /waeup/branches/hraban/src/waeup/viewlets.py	(revision 3566)
@@ -8,18 +8,21 @@
 grok.context(Interface)
 
-class Index(grok.View):
+class MainView(grok.View):
     """main structure for all pages"""
     grok.template('master')
     
     def __init__(self, context, request):
-        super(Index, self).__init__(context, request)
+        super(MainView, self).__init__(context, request)
     
     def getSite(self):
         return grok.getSite()
 
-class Edit(Index):
+class Index(MainView):
     pass
 
-class Add(Index):
+class Edit(MainView):
+    pass
+
+class Add(MainView):
     pass
 
@@ -60,5 +63,5 @@
     """display the current user's name"""
     grok.viewletmanager(LeftSidebar)
-    grok.view(Index)
+    grok.view(MainView)
     grok.order(1)
 
