diff --git a/addons/auction/report/artists_lots.py b/addons/auction/report/artists_lots.py
index 981440dac537bf8d37c4b36d84934dbe1f5a262d..6c9344c88dbf8cc5e07a6ffecebce40ce9b9b14d 100644
--- a/addons/auction/report/artists_lots.py
+++ b/addons/auction/report/artists_lots.py
@@ -21,14 +21,15 @@
 
 from report.interface import report_int
 import netsvc
+import openerp.pooler
 
 class report_artistlot(report_int):
     def __init__(self, name):
         report_int.__init__(self, name)
 
     def create(self, cr, uid, ids, datas, context):
-        service = netsvc.LocalService("object_proxy")
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', ids, ['artist_id'])
+        pool = pooler.get_pool(cr.dbname)
+        lots = pool.get('auction.lots').read(cr, uid, ids, ['artist_id'])
         artists = []
         for lot in lots:
             if lot['artist_id'] and lot['artist_id'] not in artists:
diff --git a/addons/auction/report/seller_address.py b/addons/auction/report/seller_address.py
index 315533e99f4d098ce37b3c8498ebb8c1202e90aa..7a7c10cb4aab8ea74e7dad78805f485e4e233c67 100644
--- a/addons/auction/report/seller_address.py
+++ b/addons/auction/report/seller_address.py
@@ -20,15 +20,15 @@
 ##############################################################################
 
 from report.interface import report_int
-import netsvc
+import openerp.pooler
 
 class auction_seller(report_int):
     def __init__(self, name):
         report_int.__init__(self, name)
 
     def create(self, cr, uid, ids, datas, context):
-        service = netsvc.LocalService("object_proxy")
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', ids, ['bord_vnd_id'])
+        pool = openerp.pooler.get_pool(cr.dbname)
+        lots = pool.get('auction.lots').read(cr, uid, ids, ['bord_vnd_id'])
 
         bords = {}
         for l in lots:
@@ -37,7 +37,7 @@ class auction_seller(report_int):
         new_ids = bords.keys()
 
         parts = {}
-        partners = service.execute(cr.dbname, uid, 'auction.deposit', 'read', new_ids, ['partner_id'])
+        partners = pool.get('auction.deposit').read(cr, uid, new_ids, ['partner_id'])
         for l in partners:
             if l['partner_id']:
                 parts[l['partner_id'][0]]=True
diff --git a/addons/auction/report/total.py b/addons/auction/report/total.py
index e878001c2e463a51395692d63656a31e2d0c24b8..609a1ad3a480c0509ee86b923389928df67d294d 100644
--- a/addons/auction/report/total.py
+++ b/addons/auction/report/total.py
@@ -32,10 +32,8 @@ class report_custom(report_rml):
         report_rml.__init__(self, name, table, tmpl, xsl)
 
     def create_xml(self, cr, uid, ids, datas, context=None):
-        service = netsvc.LocalService("object_proxy")
-
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', ids, ['obj_price','ach_login','obj_comm','lot_est1','lot_est2','bord_vnd_id','ach_emp','auction_id'])
-        auction = service.execute(cr.dbname, uid, 'auction.dates', 'read', [lots[0]['auction_id'][0]])[0]
+        lots = self.pool.get('auction.lots').read(cr, uid , ids, ['obj_price','ach_login','obj_comm','lot_est1','lot_est2','bord_vnd_id','ach_emp','auction_id'])
+        auction = self.pool.get('auction.dates').read(cr, uid, [lots[0]['auction_id'][0]])[0]
 
         unsold = comm = emp = paid = unpaid = 0
         est1 = est2 = adj = 0
@@ -75,7 +73,7 @@ class report_custom(report_rml):
 
 
         debit = adj
-        costs = service.execute(cr.dbname, uid, 'auction.lots', 'compute_seller_costs', ids)
+        costs = self.pool.get('auction.lots').compute_seller_costs(cr, uid, ids)
         for cost in costs:
             debit += cost['amount']
 
diff --git a/addons/auction/wizard/auction_aie_send.py b/addons/auction/wizard/auction_aie_send.py
index 1caec13b852ca3a95b248f698a873c1cda104d63..563230c0d1f8a066a48f721c3b8e82bea6229f7f 100644
--- a/addons/auction/wizard/auction_aie_send.py
+++ b/addons/auction/wizard/auction_aie_send.py
@@ -141,9 +141,8 @@ class auction_lots_send_aie(osv.osv_memory):
     
     
     def _photos_send(cr, uid, uname, passwd, did, ids):
-        service = netsvc.LocalService("object_proxy")
         for (ref,id) in ids:
-            datas = service.execute(cr.db_name, uid, 'auction.lots', 'read', [id], ['name','image'])
+            datas = self.pool.get('auction.lots').read(cr, uid, [id], ['name','image'])
             if len(datas):
                 bin = base64.decodestring(datas[0]['image'])
                 fname = datas[0]['name']
@@ -186,8 +185,7 @@ class auction_lots_send_aie(osv.osv_memory):
         if context is None: 
             context = {}
     
-        service = netsvc.LocalService("object_proxy")
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', context.get('active_ids',[]),  ['obj_num','lot_num','obj_desc','bord_vnd_id','lot_est1','lot_est2','artist_id','lot_type','aie_categ'])
+        lots = self.pool.get('auction.lots').read(cr, uid, context.get('active_ids',[]), ['obj_num','lot_num','obj_desc','bord_vnd_id','lot_est1','lot_est2','artist_id','lot_type','aie_categ'])
         lots_ids = []
         datas = self.read(cr, uid, ids[0],['uname','login','lang','numerotation','dates'])
         for l in lots:
diff --git a/addons/auction/wizard/auction_aie_send_result.py b/addons/auction/wizard/auction_aie_send_result.py
index d6102dd0522b136302472c4edd09d8751f94b0d8..24489fda4410cf2adbad87ac0a13c161f9631330 100644
--- a/addons/auction/wizard/auction_aie_send_result.py
+++ b/addons/auction/wizard/auction_aie_send_result.py
@@ -132,9 +132,8 @@ class auction_lots_pay(osv.osv_memory):
         if context is None: 
             context = {}
         import pickle
-        service = netsvc.LocalService("object_proxy")
         datas = self.read(cr, uid, ids[0],['uname','password','dates'])
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', context['active_ids'],  ['obj_num','obj_price'])
+        lots = self.pool.get('auction.lots').read(cr, uid, context['active_ids'],  ['obj_num','obj_price'])
         args = pickle.dumps(lots)
         self._catalog_send(datas['uname'], datas['password'], datas['dates'], args)
         return {'type': 'ir.actions.act_window_close'}
diff --git a/addons/auction/wizard/auction_lots_invoice.py b/addons/auction/wizard/auction_lots_invoice.py
index 66bb5e42f2b0e934fbca42370d73e908635baddb..3994aa6ff91e14b48c4e23591f4d060a8965541a 100644
--- a/addons/auction/wizard/auction_lots_invoice.py
+++ b/addons/auction/wizard/auction_lots_invoice.py
@@ -49,9 +49,8 @@ class auction_lots_invoice(osv.osv_memory):
         if context is None: 
             context = {}
         res = super(auction_lots_invoice, self).default_get(cr, uid, fields, context=context)
-        service = netsvc.LocalService("object_proxy")
-        lots = service.execute(cr.dbname, uid, 'auction.lots', 'read', context.get('active_ids', []))
-        auction = service.execute(cr.dbname, uid, 'auction.dates', 'read', [lots[0]['auction_id'][0]])[0]
+        lots = self.pool.get('auction.lots').read(cr, uid, context.get('active_ids', []))
+        auction = self.pool.get('auction.dates').read(cr, uid, [lots[0]['auction_id'][0]])[0]
 
         price = 0.0
         price_topay = 0.0
@@ -59,7 +58,7 @@ class auction_lots_invoice(osv.osv_memory):
         for lot in lots:
             price_lot = lot['obj_price'] or 0.0
 
-            costs = service.execute(cr.dbname, uid, 'auction.lots', 'compute_buyer_costs', [lot['id']])
+            costs = self.pool.get('auction.lots').compute_buyer_costs(cr, uid, [lot['id']])
             price_lot += costs['amount']
             price += price_lot
 
@@ -68,7 +67,7 @@ class auction_lots_invoice(osv.osv_memory):
                     raise osv.except_osv(_('UserError'), _('Two different buyers for the same invoice !\nPlease correct this problem before invoicing'))
                 uid = lot['ach_uid'][0]
             elif lot['ach_login']:
-                refs = service.execute(uid, 'res.partner', 'search', [('ref','=',lot['ach_login'])])
+                refs = self.pool.get('res.partner').search(cr, uid, [('ref','=',lot['ach_login'])])
                 if len(refs):
                     uid = refs[-1]
             if 'ach_pay_id' in lot and lot['ach_pay_id']:
@@ -105,7 +104,6 @@ class auction_lots_invoice(osv.osv_memory):
         """
         if context is None: 
             context = {}
-        service = netsvc.LocalService("object_proxy")
         datas = {'ids' : context.get('active_ids',[])}
         res = self.read(cr, uid, ids, ['number','ach_uid'])
         res = res and res[0] or {}
diff --git a/addons/document_webdav/dav_fs.py b/addons/document_webdav/dav_fs.py
index d21dcdc033569adec4ec1416b9e4f7242077e78f..c167d90ba4224a17dbd7cf848db52e943ebcac13 100644
--- a/addons/document_webdav/dav_fs.py
+++ b/addons/document_webdav/dav_fs.py
@@ -455,7 +455,7 @@ class openerp_dav_handler(dav_interface):
     def get_cr(self, uri, allow_last=False):
         """ Split the uri, grab a cursor for that db
         """
-        pdb = self.parent.auth_proxy.last_auth
+        pdb = self.parent.auth_provider.last_auth
         dbname, uri2 = self.get_db(uri, rest_ret=True, allow_last=allow_last)
         uri2 = (uri2 and uri2.split('/')) or []
         if not dbname:
@@ -463,10 +463,10 @@ class openerp_dav_handler(dav_interface):
         # if dbname was in our uri, we should have authenticated
         # against that.
         assert pdb == dbname, " %s != %s" %(pdb, dbname)
-        res = self.parent.auth_proxy.auth_creds.get(dbname, False)
+        res = self.parent.auth_provider.auth_creds.get(dbname, False)
         if not res:
-            self.parent.auth_proxy.checkRequest(self.parent, uri, dbname)
-            res = self.parent.auth_proxy.auth_creds[dbname]
+            self.parent.auth_provider.checkRequest(self.parent, uri, dbname)
+            res = self.parent.auth_provider.auth_creds[dbname]
         user, passwd, dbn2, uid = res
         db,pool = pooler.get_db_and_pool(dbname)
         cr = db.cursor()
diff --git a/addons/document_webdav/webdav_server.py b/addons/document_webdav/webdav_server.py
index e23daab9f664a780ff46bfe29f4006ff62e1c519..aeff0a23f252d84b2b1a12503b9cbb98075fb77a 100644
--- a/addons/document_webdav/webdav_server.py
+++ b/addons/document_webdav/webdav_server.py
@@ -40,7 +40,7 @@ from dav_fs import openerp_dav_handler
 from tools.config import config
 from DAV.WebDAVServer import DAVRequestHandler
 from service import http_server
-from service.websrv_lib import HTTPDir, FixSendError, HttpOptions
+from service.websrv_lib import FixSendError, HttpOptions
 from BaseHTTPServer import BaseHTTPRequestHandler
 import urlparse
 import urllib
@@ -174,11 +174,11 @@ class DAVHandler(HttpOptions, FixSendError, DAVRequestHandler):
             pass
         elif self.close_connection == 1: # close header already sent
             pass
-        else:
-            if headers is None:
-                headers = {}
-            if self.headers.get('Connection',False) == 'Keep-Alive':
-                headers['Connection'] = 'keep-alive'
+        elif headers and self.headers.get('Connection',False) == 'Keep-Alive':
+            headers['Connection'] = 'keep-alive'
+
+        if headers is None:
+            headers = {}
 
         DAVRequestHandler.send_body(self, DATA, code=code, msg=msg, desc=desc,
                     ctype=ctype, headers=headers)
@@ -572,7 +572,7 @@ try:
 
         conf = OpenDAVConfig(**_dc)
         handler._config = conf
-        reg_http_service(HTTPDir(directory,DAVHandler,DAVAuthProvider()))
+        reg_http_service(directory, DAVHandler, DAVAuthProvider)
         logging.getLogger('webdav').info("WebDAV service registered at path: %s/ "% directory)
         
         if not (config.get_misc('webdav', 'no_root_hack', False)):
@@ -592,9 +592,7 @@ try:
                 # the StaticHttpHandler can find its dir_path.
                 config.misc.setdefault('static-http',{})['dir_path'] = dir_path
     
-            if reg_http_service(HTTPDir('/', DAVStaticHandler)):
-                logging.getLogger("web-services").info("WebDAV registered HTTP dir %s for /" % \
-                                (dir_path))
+            reg_http_service('/', DAVStaticHandler)
 
 except Exception, e:
     logging.getLogger('webdav').error('Cannot launch webdav: %s' % e)
@@ -613,8 +611,7 @@ def init_well_known():
         reps['/'+uri] = path
 
     if int(num_svcs):
-        if http_server.reg_http_service(HTTPDir('/.well-known', RedirectHTTPHandler)):
-            logging.getLogger("web-services").info("Registered HTTP redirect handler at /.well-known" )
+        reg_http_service('/.well-known', RedirectHTTPHandler)
 
 init_well_known()
 
@@ -641,7 +638,7 @@ def init_principals_redirect():
         dbname = config.get('db_name', False)
     if dbname:
         PrincipalsRedirect.redirect_paths[''] = '/webdav/%s/principals' % dbname
-        reg_http_service(HTTPDir('/principals', PrincipalsRedirect))
+        reg_http_service('/principals', PrincipalsRedirect)
         logging.getLogger("web-services").info(
                 "Registered HTTP redirect handler for /principals to the %s db.",
                 dbname)