diff --git a/offlineimap/folder/Base.py b/offlineimap/folder/Base.py
index 5bd8061..c8ed108 100644
--- a/offlineimap/folder/Base.py
+++ b/offlineimap/folder/Base.py
@@ -28,8 +28,15 @@ except NameError:
     from sets import Set as set
 
 class BaseFolder(object):
-    def __init__(self):
+    def __init__(self, name, repository):
+        """
+        :para name: Path & name of folder minus root or reference
+        :para repository: Repository() in which the folder is.
+        """
         self.ui = getglobalui()
+        self.name = name
+        self.repository = repository
+        self.config = repository.getconfig()
 
     def getname(self):
         """Returns name"""
@@ -38,6 +45,11 @@ class BaseFolder(object):
     def __str__(self):
         return self.name
 
+    @property
+    def accountname(self):
+        """Account name as string"""
+        return self.repository.accountname
+
     def suggeststhreads(self):
         """Returns true if this folder suggests using threads for actions;
         false otherwise.  Probably only IMAP will return true."""
@@ -233,7 +245,7 @@ class BaseFolder(object):
         # self.getmessage().  So, don't call self.getmessage unless
         # really needed.
         if register: # output that we start a new thread
-            self.ui.registerthread(self.getaccountname())
+            self.ui.registerthread(self.accountname)
 
         try:
             message = None
@@ -289,7 +301,7 @@ class BaseFolder(object):
             self.ui.error(e, exc_info()[2])
         except Exception, e:
             self.ui.error(e, "Copying message %s [acc: %s]:\n %s" %\
-                              (uid, self.getaccountname(),
+                              (uid, self.accountname,
                                traceback.format_exc()))
             raise    #raise on unknown errors, so we can fix those
 
@@ -437,5 +449,5 @@ class BaseFolder(object):
                 self.ui.error(e, exc_info()[2])
             except Exception, e:
                 self.ui.error(e, exc_info()[2], "Syncing folder %s [acc: %s]" %\
-                                  (self, self.getaccountname()))
+                                  (self, self.accountname))
                 raise # raise unknown Exceptions so we can fix them
diff --git a/offlineimap/folder/Gmail.py b/offlineimap/folder/Gmail.py
index 3ca11cd..8d9c0bc 100644
--- a/offlineimap/folder/Gmail.py
+++ b/offlineimap/folder/Gmail.py
@@ -33,13 +33,12 @@ class GmailFolder(IMAPFolder):
       http://mail.google.com/support/bin/answer.py?answer=77657&topic=12815
     """
 
-    def __init__(self, imapserver, name, visiblename, accountname, repository):
+    def __init__(self, imapserver, name, repository):
+        super(GmailFolder, self).__init__(imapserver, name, repository)
         self.realdelete = repository.getrealdelete(name)
         self.trash_folder = repository.gettrashfolder(name)
         #: Gmail will really delete messages upon EXPUNGE in these folders
         self.real_delete_folders =  [ self.trash_folder, repository.getspamfolder() ]
-        IMAPFolder.__init__(self, imapserver, name, visiblename, \
-                            accountname, repository)
 
     def deletemessages_noconvert(self, uidlist):
         uidlist = [uid for uid in uidlist if uid in self.messagelist]
diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py
index 4dcae7d..b23d34c 100644
--- a/offlineimap/folder/IMAP.py
+++ b/offlineimap/folder/IMAP.py
@@ -32,19 +32,16 @@ except NameError:
 
 
 class IMAPFolder(BaseFolder):
-    def __init__(self, imapserver, name, visiblename, accountname, repository):
-        self.config = imapserver.config
+    def __init__(self, imapserver, name, repository):
+        name = imaputil.dequote(name)
+        super(IMAPFolder, self).__init__(name, repository)
         self.expunge = repository.getexpunge()
-        self.name = imaputil.dequote(name)
         self.root = None # imapserver.root
         self.sep = imapserver.delim
         self.imapserver = imapserver
         self.messagelist = None
-        self.visiblename = visiblename
-        self.accountname = accountname
-        self.repository = repository
+        self.visiblename = repository.nametrans(name)
         self.randomgenerator = random.Random()
-        BaseFolder.__init__(self)
         #self.ui is set in BaseFolder
 
     def selectro(self, imapobj):
@@ -61,9 +58,6 @@ class IMAPFolder(BaseFolder):
         except imapobj.readonly:
             imapobj.select(self.getfullname(), readonly = 1)
 
-    def getaccountname(self):
-        return self.accountname
-
     def suggeststhreads(self):
         return 1
 
diff --git a/offlineimap/folder/LocalStatus.py b/offlineimap/folder/LocalStatus.py
index be9d1e3..d03688c 100644
--- a/offlineimap/folder/LocalStatus.py
+++ b/offlineimap/folder/LocalStatus.py
@@ -26,22 +26,15 @@ except NameError:
 magicline = "OFFLINEIMAP LocalStatus CACHE DATA - DO NOT MODIFY - FORMAT 1"
 
 class LocalStatusFolder(BaseFolder):
-    def __init__(self, root, name, repository, accountname, config):
-        self.name = name
-        self.root = root
+    def __init__(self, name, repository):
+        super(LocalStatusFolder, self).__init__(name, repository)
         self.sep = '.'
-        self.config = config
         self.filename = os.path.join(root, self.getfolderbasename())
         self.messagelist = {}
-        self.repository = repository
         self.savelock = threading.Lock()
-        self.doautosave = config.getdefaultboolean("general", "fsync", False)
+        self.doautosave = self.config.getdefaultboolean("general", "fsync",
+                                                        False)
         """Should we perform fsyncs as often as possible?"""
-        self.accountname = accountname
-        super(LocalStatusFolder, self).__init__()
-
-    def getaccountname(self):
-        return self.accountname
 
     def storesmessages(self):
         return 0
@@ -53,7 +46,7 @@ class LocalStatusFolder(BaseFolder):
         return self.name
 
     def getroot(self):
-        return self.root
+        return self.repository.root
 
     def getsep(self):
         return self.sep
diff --git a/offlineimap/folder/LocalStatusSQLite.py b/offlineimap/folder/LocalStatusSQLite.py
index bd38930..08af807 100644
--- a/offlineimap/folder/LocalStatusSQLite.py
+++ b/offlineimap/folder/LocalStatusSQLite.py
@@ -46,12 +46,8 @@ class LocalStatusSQLiteFolder(LocalStatusFolder):
     #current version of our db format
     cur_version = 1
 
-    def __init__(self, root, name, repository, accountname, config):
-        super(LocalStatusSQLiteFolder, self).__init__(root, name, 
-                                                      repository, 
-                                                      accountname,
-                                                      config)       
-
+    def __init__(self, name, repository):
+        super(LocalStatusSQLiteFolder, self).__init__(name, repository)       
         # dblock protects against concurrent writes in same connection
         self._dblock = Lock()
         #Try to establish connection, no need for threadsafety in __init__
diff --git a/offlineimap/folder/Maildir.py b/offlineimap/folder/Maildir.py
index cedcb5d..894328c 100644
--- a/offlineimap/folder/Maildir.py
+++ b/offlineimap/folder/Maildir.py
@@ -58,15 +58,12 @@ def gettimeseq():
         timelock.release()
 
 class MaildirFolder(BaseFolder):
-    def __init__(self, root, name, sep, repository, accountname, config):
-        self.name = name
-        self.config = config
-        self.dofsync = config.getdefaultboolean("general", "fsync", True)
+    def __init__(self, root, name, sep, repository):
+        super(MaildirFolder, self).__init__(name, repository)
+        self.dofsync = self.config.getdefaultboolean("general", "fsync", True)
         self.root = root
         self.sep = sep
         self.messagelist = None
-        self.repository = repository
-        self.accountname = accountname
 
         self.wincompatible = self.config.getdefaultboolean(
             "Account "+self.accountname, "maildir-windows-compatible", False)
@@ -77,15 +74,10 @@ class MaildirFolder(BaseFolder):
             self.infosep = '!'
 
         self.flagmatchre = re.compile(self.infosep + '.*2,([A-Z]+)')
-
-        BaseFolder.__init__(self)
         #self.ui is set in BaseFolder.init()
         # Cache the full folder path, as we use getfullname() very often
         self._fullname = os.path.join(self.getroot(), self.getname())
 
-    def getaccountname(self):
-        return self.accountname
-
     def getfullname(self):
         """Return the absolute file path to the Maildir folder (sans cur|new)"""
         return self._fullname
diff --git a/offlineimap/repository/Base.py b/offlineimap/repository/Base.py
index 184bc9a..9a6cecd 100644
--- a/offlineimap/repository/Base.py
+++ b/offlineimap/repository/Base.py
@@ -22,13 +22,14 @@ from offlineimap import CustomConfig
 from offlineimap.ui import getglobalui
 
 class BaseRepository(object, CustomConfig.ConfigHelperMixin):
+
     def __init__(self, reposname, account):
         self.ui = getglobalui()
         self.account = account
         self.config = account.getconfig()
         self.name = reposname
         self.localeval = account.getlocaleval()
-        self.accountname = self.account.getname()
+        self._accountname = self.account.getname()
         self.uiddir = os.path.join(self.config.getmetadatadir(), 'Repository-' + self.name)
         if not os.path.exists(self.uiddir):
             os.mkdir(self.uiddir, 0700)
@@ -75,15 +76,17 @@ class BaseRepository(object, CustomConfig.ConfigHelperMixin):
     def __str__(self):
         return self.name
 
+    @property
+    def accountname(self):
+        """Account name as string"""
+        return self._accountname
+
     def getuiddir(self):
         return self.uiddir
 
     def getmapdir(self):
         return self.mapdir
 
-    def getaccountname(self):
-        return self.accountname
-
     def getsection(self):
         return 'Repository ' + self.name
 
diff --git a/offlineimap/repository/IMAP.py b/offlineimap/repository/IMAP.py
index 76d0870..64e85f9 100644
--- a/offlineimap/repository/IMAP.py
+++ b/offlineimap/repository/IMAP.py
@@ -259,9 +259,7 @@ class IMAPRepository(BaseRepository):
 
 
     def getfolder(self, foldername):
-        return self.getfoldertype()(self.imapserver, foldername,
-                                    self.nametrans(foldername),
-                                    self.accountname, self)
+        return self.getfoldertype()(self.imapserver, foldername, self)
 
     def getfoldertype(self):
         return folder.IMAP.IMAPFolder
@@ -303,8 +301,7 @@ class IMAPRepository(BaseRepository):
                                   foldername)
                 continue
             retval.append(self.getfoldertype()(self.imapserver, foldername,
-                                               self.nametrans(foldername),
-                                               self.accountname, self))
+                                               self))
         if len(self.folderincludes):
             imapobj = self.imapserver.acquireconnection()
             try:
@@ -320,8 +317,7 @@ class IMAPRepository(BaseRepository):
                         continue
                     retval.append(self.getfoldertype()(self.imapserver,
                                                        foldername,
-                                                       self.nametrans(foldername),
-                                                       self.accountname, self))
+                                                       self))
             finally:
                 self.imapserver.releaseconnection(imapobj)
                 
diff --git a/offlineimap/repository/LocalStatus.py b/offlineimap/repository/LocalStatus.py
index a392dcf..fdd1e19 100644
--- a/offlineimap/repository/LocalStatus.py
+++ b/offlineimap/repository/LocalStatus.py
@@ -25,14 +25,14 @@ import re
 class LocalStatusRepository(BaseRepository):
     def __init__(self, reposname, account):
         BaseRepository.__init__(self, reposname, account)
-        self.directory = os.path.join(account.getaccountmeta(), 'LocalStatus')
-
-        #statusbackend can be 'plain' or 'sqlite'
+        # Root directory in which the LocalStatus folders reside
+        self.root = os.path.join(account.getaccountmeta(), 'LocalStatus')
+        # statusbackend can be 'plain' or 'sqlite'
         backend = self.account.getconf('status_backend', 'plain')
         if backend == 'sqlite':
             self._backend = 'sqlite'
             self.LocalStatusFolderClass = LocalStatusSQLiteFolder
-            self.directory += '-sqlite'
+            self.root += '-sqlite'
         elif backend == 'plain':
             self._backend = 'plain'
             self.LocalStatusFolderClass = LocalStatusFolder
@@ -40,8 +40,8 @@ class LocalStatusRepository(BaseRepository):
             raise SyntaxWarning("Unknown status_backend '%s' for account '%s'" \
                                 % (backend, account.name))
 
-        if not os.path.exists(self.directory):
-            os.mkdir(self.directory, 0700)
+        if not os.path.exists(self.root):
+            os.mkdir(self.root, 0700)
 
         # self._folders is a list of LocalStatusFolders()
         self._folders = None
@@ -60,7 +60,7 @@ class LocalStatusRepository(BaseRepository):
         # replace with literal 'dot' if final path name is '.' as '.' is
         # an invalid file name.
         basename = re.sub('(^|\/)\.$','\\1dot', basename)
-        return os.path.join(self.directory, basename)
+        return os.path.join(self.root, basename)
 
     def makefolder(self, foldername):
         """Create a LocalStatus Folder
@@ -82,9 +82,7 @@ class LocalStatusRepository(BaseRepository):
 
     def getfolder(self, foldername):
         """Return the Folder() object for a foldername"""
-        return self.LocalStatusFolderClass(self.directory, foldername,
-                                           self, self.accountname,
-                                           self.config)
+        return self.LocalStatusFolderClass(foldername, self)
 
     def getfolders(self):
         """Returns a list of all cached folders."""
@@ -92,7 +90,7 @@ class LocalStatusRepository(BaseRepository):
             return self._folders
 
         self._folders = []
-        for folder in os.listdir(self.directory):
+        for folder in os.listdir(self.root):
             self._folders.append(self.getfolder(folder))
         return self._folders
 
diff --git a/offlineimap/repository/Maildir.py b/offlineimap/repository/Maildir.py
index ef3a723..f8f39b8 100644
--- a/offlineimap/repository/Maildir.py
+++ b/offlineimap/repository/Maildir.py
@@ -113,8 +113,7 @@ class MaildirRepository(BaseRepository):
         if self.config.has_option('Repository ' + self.name, 'restoreatime') and self.config.getboolean('Repository ' + self.name, 'restoreatime'):
             self._append_folder_atimes(foldername)
         return folder.Maildir.MaildirFolder(self.root, foldername,
-                                            self.getsep(), self, 
-                                            self.accountname, self.config)
+                                            self.getsep(), self)
     
     def _getfolders_scandir(self, root, extension = None):
         """Recursively scan folder 'root'; return a list of MailDirFolder
@@ -163,9 +162,7 @@ class MaildirRepository(BaseRepository):
                 retval.append(folder.Maildir.MaildirFolder(self.root,
                                                            foldername,
                                                            self.getsep(),
-                                                           self,
-                                                           self.accountname,
-                                                           self.config))
+                                                           self))
             if self.getsep() == '/' and dirname != '.':
                 # Recursively check sub-directories for folders too.
                 retval.extend(self._getfolders_scandir(root, foldername))
