diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index f48cab2af4c310a131e9fa2a34c799ac7431e67e..e75b9f08c4ed8aca5dc4e41e665d1a6b22ed9dc2 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -899,6 +899,7 @@ function taxonomy_get_children($tid, $vid = 0, $key = 'tid') {
  * @return
  *   An array of all term objects in the tree. Each term object is extended
  *   to have "depth" and "parents" attributes in addition to its normal ones.
+ *   Results are statically cached.
  */
 function taxonomy_get_tree($vid, $parent = 0, $depth = -1, $max_depth = NULL) {
   static $children, $parents, $terms;
@@ -963,7 +964,18 @@ function taxonomy_get_synonym_root($synonym) {
 }
 
 /**
- * Given a term id, count the number of published nodes in it.
+ * Count the number of published nodes classified by a term.
+ *
+ * @param $tid
+ *   The term's ID
+ *
+ * @param $type
+ *   The $node->type. If given, taxonomy_term_count_nodes only counts
+ *   nodes of $type that are classified with the term $tid.
+ *
+ * @return int
+ *   An integer representing a number of nodes.
+ *   Results are statically cached.
  */
 function taxonomy_term_count_nodes($tid, $type = 0) {
   static $count;
@@ -988,7 +1000,16 @@ function taxonomy_term_count_nodes($tid, $type = 0) {
 }
 
 /**
- * Helper for taxonomy_term_count_nodes().
+ * Helper for taxonomy_term_count_nodes(). Used to find out
+ * which terms are children of a parent term.
+ *
+ * @param $tid
+ *   The parent term's ID
+ *
+ * @return array
+ *   An array of term IDs representing the children of $tid.
+ *   Results are statically cached.
+ *
  */
 function _taxonomy_term_children($tid) {
   static $children;
@@ -1026,6 +1047,13 @@ function taxonomy_get_term_by_name($name) {
 
 /**
  * Return the vocabulary object matching a vocabulary ID.
+ *
+ * @param $vid
+ *   The vocabulary's ID
+ *
+ * @return Object
+ *   The vocabulary object with all of its metadata.
+ *   Results are statically cached.
  */
 function taxonomy_get_vocabulary($vid) {
   static $vocabularies = array();
@@ -1046,10 +1074,21 @@ function taxonomy_get_vocabulary($vid) {
 
 /**
  * Return the term object matching a term ID.
+ *
+ * @param $tid
+ *   A term's ID
+ *
+ * @return Object
+ *   A term object. Results are statically cached.
  */
 function taxonomy_get_term($tid) {
-  // simple cache using a static var?
-  return db_fetch_object(db_query('SELECT * FROM {term_data} WHERE tid = %d', $tid));
+  static $terms = array();
+
+  if (!isset($terms[$tid])) {
+    $terms[$tid] = db_fetch_object(db_query('SELECT * FROM {term_data} WHERE tid = %d', $tid));
+  }
+
+  return $terms[$tid];
 }
 
 function _taxonomy_term_select($title, $name, $value, $vocabulary_id, $description, $multiple, $blank, $exclude = array()) {