diff --git a/views/__init__.py b/views/__init__.py
index ab6783fd3a15ec39e21b670ce905b7f545aaf968_dmlld3MvX19pbml0X18ucHk=..57a92eae8941b1b6a8d09e87002714928d4ea286_dmlld3MvX19pbml0X18ucHk= 100644
--- a/views/__init__.py
+++ b/views/__init__.py
@@ -9,9 +9,13 @@
 _afs.tag_subject_of(('Expense', 'spent_for', '*'), 'main', 'attributes')
 _afs.tag_subject_of(('Expense', 'spent_for', '*'), 'muledit', 'attributes')
 _affk.tag_subject_of(('Expense', 'spent_for', '*'),
-                     {'widget': fw.RestrictedAutoCompletionWidget(autocomplete_initfunc='get_concerned_by')})
+                     {'widget': fw.LazyRestrictedAutoCompletionWidget(
+            autocomplete_initfunc='get_concerned_by',
+            autocomplete_settings={'limit': 100,
+                                   'delay': 300}),
+                      })
 
 
 @monkeypatch(basecontrollers.JSonController)
 @basecontrollers.jsonize
 def js_get_concerned_by(self):
@@ -13,6 +17,11 @@
 
 
 @monkeypatch(basecontrollers.JSonController)
 @basecontrollers.jsonize
 def js_get_concerned_by(self):
-    return self._cw.execute('DISTINCT Any W,R ORDERBY R WHERE W ref R').rows
+    term = self._cw.form['q']
+    limit = self._cw.form.get('limit', 50)
+    return [{'value': eid, 'label': ref}
+            for eid, ref in self._cw.execute('DISTINCT Any W,R ORDERBY R LIMIT %s WHERE W ref R,'
+                                             'W ref ILIKE %%(term)s' % limit,
+                                             {'term': u'%%%s%%' % term})]