--- a/src/mediaserver/cdplugins/uprcl/uprcluntagged.py
+++ b/src/mediaserver/cdplugins/uprcl/uprcluntagged.py
@@ -14,34 +14,46 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+# Manage the 'untagged' section of the tree.  Our selection is made of
+# all tracks without a 'title' field. This is different from what
+# Minimserver does (I think that more or less any field present makes
+# a track not untagged for minim).
+#
+# Initialization filters the untagged tracks and creates a vector of
+# indexes into the global doc vector.
+#
+# Object Id prefix: 0$uprcl$untagged
+# 
+# Obect id inside the section: $u<idx> where <idx> is the document index
+#  inside the global document vector.
+
 import os
 import shlex
 import urllib
 import sys
 
-from uprclutils import uplog, rcldoctoentry, rcldirentry, cmpentries
+from uprclutils import uplog, rcldoctoentry, rcldirentry
 
 untg_prefix = '0$uprcl$untagged'
 
+# Create the untagged entries static vector by filtering the global
+# doc vector, storing the indexes of all tracks without a title
+# field. We keep a reference to the doc vector.
 def recoll2untagged(docs):
     global g_utidx, g_rcldocs
     g_rcldocs = docs
+    # The -1 entry is because we use index 0 for our root.
     g_utidx = [-1]
     
     for docidx in range(len(docs)):
         doc = docs[docidx]
         if doc.mtype == 'inode/directory':
             continue
-        url = doc.getbinurl()
-        url = url[7:]
-        try:
-            decoded = url.decode('utf-8')
-        except:
-            decoded = urllib.quote(url).decode('utf-8')
-        tt = doc.title
-        if not tt:
+        if not doc.title:
             g_utidx.append(docidx)
 
+
+# Compute index into our entries vector by 'parsing' the objid.
 def _objidtoidx(pid):
     if not pid.startswith(untg_prefix):
         raise Exception("untagged.browse: bad pid %s" % pid)
@@ -51,6 +63,7 @@
 
     idx = pid[len(untg_prefix):]
     if not idx:
+        # Browsing the root.
         idx = 0
     else:
         if idx[1] != 'u':
@@ -63,14 +76,15 @@
     return idx
 
 
+# Return entry to be created in the top-level directory ([untagged]).
 def rootentries(pid):
     return [rcldirentry(pid + 'untagged', pid, '[untagged]'),]
 
+
 # Browse method
-# objid is like untagged$*u<index>
-# flag is meta or children. 
+# objid is like untagged$u<index>
+# flag is meta or children.
 def browse(pid, flag, httphp, pathprefix):
-
     idx = _objidtoidx(pid)
 
     entries = []
@@ -90,5 +104,4 @@
         if e:
             entries.append(e)
 
-    return sorted(entries, cmp=cmpentries)
-
+    return sorted(entries, key=lambda entry: entry['tt'].lower())