Index: /main/waeup.sirp/trunk/src/waeup/sirp/app.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/app.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/app.py	(revision 7172)
@@ -10,5 +10,5 @@
 from waeup.sirp.interfaces import (
     IUniversity, IWAeUPSIRPPluggable, IObjectUpgradeEvent, )
-from waeup.sirp.usercontainer import UserContainer
+from waeup.sirp.userscontainer import UsersContainer
 from waeup.sirp.utils.logger import Logger
 from waeup.sirp.utils.helpers import attrs_to_fields
@@ -37,5 +37,5 @@
         the like.
         """
-        self['users'] = UserContainer()
+        self['users'] = UsersContainer()
         self['datacenter'] = DataCenter()
         self['students'] = StudentsContainer()
Index: /main/waeup.sirp/trunk/src/waeup/sirp/app.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/app.txt	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/app.txt	(revision 7172)
@@ -65,5 +65,5 @@
 
   >>> myuniversity['users']
-  <waeup.sirp.usercontainer.UserContainer object at 0x...>
+  <waeup.sirp.userscontainer.UsersContainer object at 0x...>
 
   >>> myuniversity['datacenter']
Index: /main/waeup.sirp/trunk/src/waeup/sirp/authentication.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/authentication.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/authentication.py	(revision 7172)
@@ -153,23 +153,23 @@
     def getAccount(self, login):
         # ... look up the account object and return it ...
-        usercontainer = self.getUserContainer()
-        if usercontainer is None:
+        userscontainer = self.getUsersContainer()
+        if userscontainer is None:
             return
-        return usercontainer.get(login, None)
+        return userscontainer.get(login, None)
 
     def addAccount(self, account):
-        usercontainer = self.getUserContainer()
-        if usercontainer is None:
+        userscontainer = self.getUsersContainer()
+        if userscontainer is None:
             return
         # XXX: complain if name already exists...
-        usercontainer.addAccount(account)
+        userscontainer.addAccount(account)
 
     def addUser(self, name, password, title=None, description=None):
-        usercontainer = self.getUserContainer()
-        if usercontainer is None:
+        userscontainer = self.getUsersContainer()
+        if userscontainer is None:
             return
-        usercontainer.addUser(name, password, title, description)
-
-    def getUserContainer(self):
+        userscontainer.addUser(name, password, title, description)
+
+    def getUsersContainer(self):
         site = grok.getSite()
         return site['users']
Index: /main/waeup.sirp/trunk/src/waeup/sirp/authentication.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/authentication.txt	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/authentication.txt	(revision 7172)
@@ -40,5 +40,5 @@
   >>> root['app']['users'].addAccount(alice)
 
-See ``users.txt`` for details about the UserContainer we use here.
+See ``users.txt`` for details about the UsersContainer we use here.
 
 Users and local roles
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.py	(revision 7172)
@@ -124,8 +124,8 @@
         return 'Session %s' % session_string
 
-class UserContainerBreadcrumb(Breadcrumb):
+class UsersContainerBreadcrumb(Breadcrumb):
     """A breadcrumb for user containers.
     """
-    grok.context(interfaces.IUserContainer)
+    grok.context(interfaces.IUsersContainer)
     title = u'Portal Users'
     parent_viewname = 'administration'
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.txt	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/breadcrumbs.txt	(revision 7172)
@@ -120,5 +120,5 @@
     [<...breadcrumbs.UniversityBreadcrumb object at 0x...>,
      <...breadcrumbs.AdministrationBreadcrumb object at 0x...>,
-     <...breadcrumbs.UserContainerBreadcrumb object at 0x...>]
+     <...breadcrumbs.UsersContainerBreadcrumb object at 0x...>]
 
 
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/interfaces.py	(revision 7172)
@@ -4,5 +4,5 @@
 from zope.interface import Interface, Attribute
 from waeup.sirp.interfaces import (
-    IWAeUPObject, IUniversity, IUserContainer, IDataCenter)
+    IWAeUPObject, IUniversity, IUsersContainer, IDataCenter)
 from waeup.sirp.university.interfaces import (
     IFacultyContainer, IFaculty, IFacultyAdd, IDepartment, IDepartmentAdd, 
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7172)
@@ -32,5 +32,5 @@
 from waeup.sirp.browser.resources import warning, datepicker, tabs, datatable
 from waeup.sirp.interfaces import(
-    IWAeUPObject, IUserContainer, IUserAccount, IDataCenter,
+    IWAeUPObject, IUsersContainer, IUserAccount, IDataCenter,
     IWAeUPXMLImporter, IWAeUPXMLExporter, IBatchProcessor,
     ILocalRolesAssignable, DuplicationError, IConfigurationContainer,
@@ -245,9 +245,9 @@
 #
 
-class UserContainerPage(WAeUPPage):
+class UsersContainerPage(WAeUPPage):
     """Overview page for all local users.
     """
     grok.require('waeup.manageUsers')
-    grok.context(IUserContainer)
+    grok.context(IUsersContainer)
     grok.name('index')
     title = 'Portal Users'
@@ -262,5 +262,5 @@
 class AddUserFormPage(WAeUPAddFormPage):
     grok.require('waeup.manageUsers')
-    grok.context(IUserContainer)
+    grok.context(IUsersContainer)
     grok.name('add')
     grok.template('usereditformpage')
Index: in/waeup.sirp/trunk/src/waeup/sirp/browser/templates/usercontainerpage.pt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/usercontainerpage.pt	(revision 7171)
+++ 	(revision )
@@ -1,35 +1,0 @@
-<h2>Portal Users</h2>
-
-<p>
-  Here you can manage portal users.  
-</p>
-
-<table class="zebra">
-  <thead>
-    <tr>
-      <th>User ID</th>
-      <th>Name</th>
-      <th>Description</th>
-      <th>Global roles</th>
-      <th>Local roles</th>
-      <th></th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr tal:repeat="account context/values">
-      <td tal:content="account/name">User name</td>
-      <td tal:content="account/title">Title</td>
-      <td tal:content="account/description">Description</td>
-      <td tal:content="structure python:layout.getGlobalRoles(account)">Global Roles</td>
-      <td tal:content="structure python:layout.getLocalRoles(account)">Local Roles</td>
-      <td class="text-right">
-        <form method="post">
-          <input type="hidden" name="userid"
-           tal:attributes="value account/name"/>
-            <input type="submit" name="manage" value="manage" />
-            <input type="submit" name="delete" value="delete" />
-        </form>
-      </td>
-    </tr>
-  </tbody>
-</table>
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/userscontainerpage.pt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/userscontainerpage.pt	(revision 7172)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/templates/userscontainerpage.pt	(revision 7172)
@@ -0,0 +1,35 @@
+<h2>Portal Users</h2>
+
+<p>
+  Here you can manage portal users.  
+</p>
+
+<table class="zebra">
+  <thead>
+    <tr>
+      <th>User ID</th>
+      <th>Name</th>
+      <th>Description</th>
+      <th>Global roles</th>
+      <th>Local roles</th>
+      <th></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr tal:repeat="account context/values">
+      <td tal:content="account/name">User name</td>
+      <td tal:content="account/title">Title</td>
+      <td tal:content="account/description">Description</td>
+      <td tal:content="structure python:layout.getGlobalRoles(account)">Global Roles</td>
+      <td tal:content="structure python:layout.getLocalRoles(account)">Local Roles</td>
+      <td class="text-right">
+        <form method="post">
+          <input type="hidden" name="userid"
+           tal:attributes="value account/name"/>
+            <input type="submit" name="manage" value="manage" />
+            <input type="submit" name="delete" value="delete" />
+        </form>
+      </td>
+    </tr>
+  </tbody>
+</table>
Index: /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7172)
@@ -10,8 +10,8 @@
 from waeup.sirp.browser.pages import (
     UniversityPage, FacultyContainerPage, DatacenterPage, FacultyPage,
-    DepartmentPage, CoursePage, CertificatePage, CertificateCoursePage, UserContainerPage)
+    DepartmentPage, CoursePage, CertificatePage, CertificateCoursePage, UsersContainerPage)
 from waeup.sirp.browser.interfaces import (
     IFacultyContainer, IFaculty, IDepartment, ICourse, ICertificate,
-    ICertificateCourse, IBreadcrumbContainer, IUniversity, IUserContainer)
+    ICertificateCourse, IBreadcrumbContainer, IUniversity, IUsersContainer)
 from waeup.sirp.interfaces import (IWAeUPObject, IWAeUPXMLExporter,
                                    IWAeUPXMLImporter, IDataCenter)
@@ -422,6 +422,6 @@
 class AddUserActionButton(AddActionButton):
     grok.require('waeup.manageUsers')
-    grok.context(IUserContainer)
-    grok.view(UserContainerPage)
+    grok.context(IUsersContainer)
+    grok.view(UsersContainerPage)
     text = 'Add user'
 
Index: /main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7171)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/interfaces.py	(revision 7172)
@@ -202,5 +202,5 @@
 
 
-class IUserContainer(IWAeUPObject):
+class IUsersContainer(IWAeUPObject):
     """A container for users (principals).
 
Index: in/waeup.sirp/trunk/src/waeup/sirp/usercontainer.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/usercontainer.py	(revision 7171)
+++ 	(revision )
@@ -1,36 +1,0 @@
-"""User container for the WAeUP portal.
-"""
-import grok
-from zope.event import notify
-from waeup.sirp.authentication import Account
-from waeup.sirp.interfaces import IUserContainer
-
-class UserContainer(grok.Container):
-    """A container for principals.
-
-    See interfaces.py and users.txt for extensive description.
-    """
-    grok.implements(IUserContainer)
-    grok.require('waeup.manageUsers')
-
-    def addUser(self, name, password, title=None, description=None, roles=[]):
-        """Add a new Account instance, created from parameters.
-        """
-        if title is None:
-            title = name
-        if description is None:
-            description = title
-        self[name] = Account(name, password, title, description, roles)
-
-    def addAccount(self, account):
-        """Add the account passed.
-        """
-        self[account.name] = account
-
-    def delUser(self, name):
-        """Delete user, if an account with the given name exists.
-
-        Do not complain, if the name does not exist.
-        """
-        if name in self.keys():
-            del self[name]
Index: in/waeup.sirp/trunk/src/waeup/sirp/usercontainer.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/usercontainer.txt	(revision 7171)
+++ 	(revision )
@@ -1,65 +1,0 @@
-User container for the WAeUP portal
-***********************************
-
-.. :doctest:
-.. :layer: waeup.sirp.testing.WAeUPSIRPUnitTestLayer
-
-Before we can start, we need some password managers available:
-
-    >>> from zope.app.authentication.placelesssetup import (
-    ...   PlacelessSetup)
-    >>> PlacelessSetup().setUp()
-
-We can create a user container which will hold the useraccounts for
-us:
-
-    >>> from waeup.sirp.usercontainer import UserContainer
-    >>> myusers = UserContainer()
-
-We can add users, just by passing a name, a password, and (optionally)
-a title and a description:
-
-    >>> myusers.addUser('bob', 'bobssecret')
-
-Now, Bob is in the container:
-
-    >>> list(myusers)
-    [u'bob']
-
-We can get Bob's account:
-
-    >>> bob = myusers['bob']
-    >>> bob
-    <waeup.sirp.authentication.Account object at 0x...>
-
-    >>> bob.name
-    'bob'
-
-    >>> bob.title
-    'bob'
-
-    >>> bob.description
-    'bob'
-
-As we did not give a title nor description, the name was taken instead
-for these values. The password, however, is stored encoded:
-
-    >>> bob.password
-    '...15aca8166'
-
-Remark: that we can tell the last chars of the 'encrypted' password,
-means, that the encryption is broken or at least waeker as it should
-be.
-
-XXX: We could provide a stronger (correct) SHA encryption.
-
-We can delete users:
-
-    >>> myusers.delUser('alice')
-
-The container won't complain, although there is no ``alice`` stored
-yet. But we can really delete users:
-
-    >>> myusers.delUser('bob')
-    >>> list(myusers)
-    []
Index: /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.py
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.py	(revision 7172)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.py	(revision 7172)
@@ -0,0 +1,36 @@
+"""Users container for the WAeUP portal.
+"""
+import grok
+from zope.event import notify
+from waeup.sirp.authentication import Account
+from waeup.sirp.interfaces import IUsersContainer
+
+class UsersContainer(grok.Container):
+    """A container for principals.
+
+    See interfaces.py and users.txt for extensive description.
+    """
+    grok.implements(IUsersContainer)
+    grok.require('waeup.manageUsers')
+
+    def addUser(self, name, password, title=None, description=None, roles=[]):
+        """Add a new Account instance, created from parameters.
+        """
+        if title is None:
+            title = name
+        if description is None:
+            description = title
+        self[name] = Account(name, password, title, description, roles)
+
+    def addAccount(self, account):
+        """Add the account passed.
+        """
+        self[account.name] = account
+
+    def delUser(self, name):
+        """Delete user, if an account with the given name exists.
+
+        Do not complain, if the name does not exist.
+        """
+        if name in self.keys():
+            del self[name]
Index: /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.txt
===================================================================
--- /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.txt	(revision 7172)
+++ /main/waeup.sirp/trunk/src/waeup/sirp/userscontainer.txt	(revision 7172)
@@ -0,0 +1,65 @@
+User container for the WAeUP portal
+***********************************
+
+.. :doctest:
+.. :layer: waeup.sirp.testing.WAeUPSIRPUnitTestLayer
+
+Before we can start, we need some password managers available:
+
+    >>> from zope.app.authentication.placelesssetup import (
+    ...   PlacelessSetup)
+    >>> PlacelessSetup().setUp()
+
+We can create a user container which will hold the useraccounts for
+us:
+
+    >>> from waeup.sirp.userscontainer import UsersContainer
+    >>> myusers = UsersContainer()
+
+We can add users, just by passing a name, a password, and (optionally)
+a title and a description:
+
+    >>> myusers.addUser('bob', 'bobssecret')
+
+Now, Bob is in the container:
+
+    >>> list(myusers)
+    [u'bob']
+
+We can get Bob's account:
+
+    >>> bob = myusers['bob']
+    >>> bob
+    <waeup.sirp.authentication.Account object at 0x...>
+
+    >>> bob.name
+    'bob'
+
+    >>> bob.title
+    'bob'
+
+    >>> bob.description
+    'bob'
+
+As we did not give a title nor description, the name was taken instead
+for these values. The password, however, is stored encoded:
+
+    >>> bob.password
+    '...15aca8166'
+
+Remark: that we can tell the last chars of the 'encrypted' password,
+means, that the encryption is broken or at least waeker as it should
+be.
+
+XXX: We could provide a stronger (correct) SHA encryption.
+
+We can delete users:
+
+    >>> myusers.delUser('alice')
+
+The container won't complain, although there is no ``alice`` stored
+yet. But we can really delete users:
+
+    >>> myusers.delUser('bob')
+    >>> list(myusers)
+    []
