diff --git a/lib/build/sphinx_ext.py b/lib/build/sphinx_ext.py
index 7273a75095145446bfa8b97ff305471abe3391f6..a336695a7ec96e799d858ac0c418e4708cb155fa 100644
--- a/lib/build/sphinx_ext.py
+++ b/lib/build/sphinx_ext.py
@@ -44,7 +44,7 @@ from ganeti import rapi
 import ganeti.rapi.rlib2 # pylint: disable-msg=W0611
 
 
-COMMON_PARAM_NAMES = map(operator.itemgetter(0), opcodes.OpCode.OP_PARAMS)
+COMMON_PARAM_NAMES = map(compat.fst, opcodes.OpCode.OP_PARAMS)
 
 #: Namespace for evaluating expressions
 EVAL_NS = dict(compat=compat, constants=constants, utils=utils, errors=errors,
@@ -98,7 +98,7 @@ def _BuildOpcodeParams(op_id, include, exclude, alias):
   params_with_alias = \
     utils.NiceSort([(alias.get(name, name), name, default, test, doc)
                     for (name, default, test, doc) in op_cls.GetAllParams()],
-                   key=operator.itemgetter(0))
+                   key=compat.fst)
 
   for (rapi_name, name, default, test, doc) in params_with_alias:
     # Hide common parameters if not explicitely included
@@ -227,7 +227,7 @@ def BuildQueryFields(fields):
 
   """
   for (_, (fdef, _, _, _)) in utils.NiceSort(fields.items(),
-                                             key=operator.itemgetter(0)):
+                                             key=compat.fst):
     assert len(fdef.doc.splitlines()) == 1
     yield "``%s``" % fdef.name
     yield "  %s" % fdef.doc
diff --git a/lib/compat.py b/lib/compat.py
index 1d75c37de5dc89540afcad25d6dcadf6235278db..a1d35da55a4d1da8699f0c7bcc10366ea42ab19d 100644
--- a/lib/compat.py
+++ b/lib/compat.py
@@ -1,7 +1,7 @@
 #
 #
 
-# Copyright (C) 2010 Google Inc.
+# Copyright (C) 2010, 2011 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,6 +24,7 @@
 """
 
 import itertools
+import operator
 
 try:
   # pylint: disable-msg=F0401
@@ -143,3 +144,8 @@ def TryToRoman(val, convert=True):
   else:
     return val
 
+#: returns the first element of a list-like value
+fst = operator.itemgetter(0)
+
+#: returns the second element of a list-like value
+snd = operator.itemgetter(1)
diff --git a/lib/locking.py b/lib/locking.py
index 1b46e5f54c7635ec90f1889ad32f3fd0d9000850..df366583e8ac01221aefc8f09abef709d63353dc 100644
--- a/lib/locking.py
+++ b/lib/locking.py
@@ -1,7 +1,7 @@
 #
 #
 
-# Copyright (C) 2006, 2007, 2008, 2009, 2010 Google Inc.
+# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -1729,7 +1729,7 @@ class LockMonitor(object):
                       key=_MonitorSortKey)
 
     # Extract lock information and build query data
-    return (qobj, query.LockQueryData(map(operator.itemgetter(0), lockinfo)))
+    return (qobj, query.LockQueryData(map(compat.fst, lockinfo)))
 
   def QueryLocks(self, fields):
     """Queries information from all locks.
diff --git a/lib/opcodes.py b/lib/opcodes.py
index e00d651c4d4f774df4a3072b9325f9490c4cec0c..cb55d6e4646b3a6c7b47a57a3362981ddc13ece1 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -37,6 +37,7 @@ import logging
 import re
 import operator
 
+from ganeti import compat
 from ganeti import constants
 from ganeti import errors
 from ganeti import ht
@@ -135,7 +136,7 @@ _OPID_RE = re.compile("([a-z])([A-Z])")
 #: Utility function for L{OpClusterSetParams}
 _TestClusterOsList = ht.TOr(ht.TNone,
   ht.TListOf(ht.TAnd(ht.TList, ht.TIsLength(2),
-    ht.TMap(ht.WithDesc("GetFirstItem")(operator.itemgetter(0)),
+    ht.TMap(ht.WithDesc("GetFirstItem")(compat.fst),
             ht.TElemOf(constants.DDMS_VALUES)))))
 
 
diff --git a/lib/query.py b/lib/query.py
index 3b8133eb264fc79183dda16bb5c5d1743b293403..ae7da5aa6195a66d534c31cf6f29c088bca4c709 100644
--- a/lib/query.py
+++ b/lib/query.py
@@ -2018,8 +2018,7 @@ def _BuildOsFields():
      None, 0, _ConvWrap(sorted, _GetItemAttr("api_versions"))),
     (_MakeField("parameters", "Parameters", QFT_OTHER,
                 "Operating system parameters"),
-     None, 0, _ConvWrap(compat.partial(utils.NiceSort,
-                                       key=operator.itemgetter(0)),
+     None, 0, _ConvWrap(compat.partial(utils.NiceSort, key=compat.fst),
                         _GetItemAttr("parameters"))),
     (_MakeField("node_status", "NodeStatus", QFT_OTHER,
                 "Status from node"),