Index: /waeup/trunk/src/waeup/app_templates/index.pt
===================================================================
--- /waeup/trunk/src/waeup/app_templates/index.pt	(revision 3528)
+++ /waeup/trunk/src/waeup/app_templates/index.pt	(revision 3529)
@@ -21,7 +21,4 @@
   </div>
 
-  <div>
-    <a href="@@importstudents">Import Students</a>
-  </div>
 </body>
 </html>
Index: /waeup/trunk/src/waeup/basecontainer.py
===================================================================
--- /waeup/trunk/src/waeup/basecontainer.py	(revision 3528)
+++ /waeup/trunk/src/waeup/basecontainer.py	(revision 3529)
@@ -1,5 +1,6 @@
 import grok
+from baseitem import BaseItem
 
-class BaseContainer(grok.Container):
+class BaseContainer(BaseItem, grok.Container):
     """
     The base container. This is a stub for now. It can have
@@ -9,4 +10,5 @@
     name = u"BaseContainer"
     childClass = None
+    specialActions = []
     
 class Index(grok.View):
Index: /waeup/trunk/src/waeup/basecontainer_templates/index.pt
===================================================================
--- /waeup/trunk/src/waeup/basecontainer_templates/index.pt	(revision 3528)
+++ /waeup/trunk/src/waeup/basecontainer_templates/index.pt	(revision 3529)
@@ -17,4 +17,8 @@
     </table>
     <a href="" tal:attributes="href python:view.url(context, 'add')">Add</a>
+    <a href=""
+        tal:repeat="action context/specialActions"
+        tal:attributes="href python:view.url(context, action)"
+        tal:content="action">Add</a>
 </body>
 </html>
Index: /waeup/trunk/src/waeup/hostel/hostel.py
===================================================================
--- /waeup/trunk/src/waeup/hostel/hostel.py	(revision 3528)
+++ /waeup/trunk/src/waeup/hostel/hostel.py	(revision 3529)
@@ -1,4 +1,4 @@
-import grok
+from waeup.baseitem import BaseItem
 
-class Hostel(grok.Model):
+class Hostel(BaseItem):
     pass
Index: /waeup/trunk/src/waeup/students/student.py
===================================================================
--- /waeup/trunk/src/waeup/students/student.py	(revision 3528)
+++ /waeup/trunk/src/waeup/students/student.py	(revision 3529)
@@ -5,8 +5,37 @@
 from waeup.baseitem import BaseItem
 
+def fromCsv(a):
+    #Factory method
+    student = Student("Dummy")
+    student.entry_mode, student.end_level, student.name, student.jamb_reg_no, student.level, student.id, student.lga, student.entry_session, student.matric_no, student.sex, student.phone, student.session, student.course, student.mode, student.faculty, student.department, student.verdict, student.review_state,  student.perm_address, student.email = a
+    return student
+
 class Student(BaseItem):
     """This is a student record.
     """
     grok.implements(IStudent)
+
+    #TODO: REFACTOR TO SCHEMA
+    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"
+            ]
 
     def __init__(self, name):
@@ -38,7 +67,7 @@
         self.name = name
         
-    def fromCsv(self, a):
-        self.entry_mode, self.end_level, self.name, self.jamb_reg_no, self.level, self.id, self.lga, self.entry_session, self.matric_no, self.sex, self.phone, self.session, self.course, self.mode, self.faculty, self.department, self.verdict, self.review_state,  self.perm_address, self.email = a
 
     def getCsv(self):
-        return self.entry_mode, self.end_level, self.name, self.jamb_reg_no, self.level, self.id, self.lga, self.entry_session, self.matric_no, self.sex, self.phone, self.session, self.course, self.mode, self.faculty, self.department, self.verdict, self.review_state,  self.perm_address, self.email
+        #return self.entry_mode, self.end_level, self.name, self.jamb_reg_no, self.level, self.id, self.lga, self.entry_session, self.matric_no, self.sex, self.phone, self.session, self.course, self.mode, self.faculty, self.department, self.verdict, self.review_state,  self.perm_address, self.email
+        return [getattr(self, field, u"") for field in self.fields]
+
Index: /waeup/trunk/src/waeup/students/studentcontainer.py
===================================================================
--- /waeup/trunk/src/waeup/students/studentcontainer.py	(revision 3528)
+++ /waeup/trunk/src/waeup/students/studentcontainer.py	(revision 3529)
@@ -1,7 +1,8 @@
 import grok
+import os
 
 from waeup.basecontainer import BaseContainer
-from student import Student
-from waeup.utils import csv
+from student import Student, fromCsv
+from waeup.utils import importexport as csv
 
 class StudentContainer(BaseContainer):
@@ -11,10 +12,10 @@
     name = u"Students"
     childClass = Student
-    
+    specialActions = [u"import", u"export"]    
 
 class Import(grok.View):
     def render(self):
         t = [0]
-        src = os.path.join(os.path.dirname(__file__), 'tests',
+        src = os.path.join(os.path.dirname(__file__), '..', 'tests',
                            'results2.csv')
         inputfile = file(src, "r")
@@ -22,7 +23,9 @@
         headers, rows = csv.readFile(inputfile)
         for i in rows:
-             s = Student(i)
+             s = fromCsv(i)
              self.context[str(num)] = s
              num += 1
+             if num > 100:
+                 break
         return "%s new Students added in %s" % (num, t[0])
 
Index: /waeup/trunk/src/waeup/university/faculty.py
===================================================================
--- /waeup/trunk/src/waeup/university/faculty.py	(revision 3528)
+++ /waeup/trunk/src/waeup/university/faculty.py	(revision 3529)
@@ -1,6 +1,7 @@
 import grok
+from waeup.basecontainer import BaseContainer
 from interfaces import IFaculty
 
-class Faculty(grok.Container):
+class Faculty(BaseContainer):
     grok.implements(IFaculty)
 
Index: eup/trunk/src/waeup/utils/csv.py
===================================================================
--- /waeup/trunk/src/waeup/utils/csv.py	(revision 3528)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import csv
-
-def readFile(f):
-    """read a CSV file"""
-    headers = []
-    rows = []
-    f = csv.reader(f)
-    headers = f.next()
-    for line in f:
-        rows.append(line)
-    return (headers, rows)
-
-def writeFile(data):
-    writer = csv.writer(open("export.csv", "wb"))
-    writer.writerows(data)
Index: /waeup/trunk/src/waeup/utils/importexport.py
===================================================================
--- /waeup/trunk/src/waeup/utils/importexport.py	(revision 3529)
+++ /waeup/trunk/src/waeup/utils/importexport.py	(revision 3529)
@@ -0,0 +1,15 @@
+import csv
+
+def readFile(f):
+    """read a CSV file"""
+    headers = []
+    rows = []
+    f = csv.reader(f)
+    headers = f.next()
+    for line in f:
+        rows.append(line)
+    return (headers, rows)
+
+def writeFile(data):
+    writer = csv.writer(open("export.csv", "wb"))
+    writer.writerows(data)
