diff --git a/common/project-info.class.php b/common/project-info.class.php
index 7413237..9388cd6 100644
--- a/common/project-info.class.php
+++ b/common/project-info.class.php
@@ -1096,24 +1096,46 @@
 	/**
 	 * Generate the common left menu navigation menu
 	 */
-    function generate_common_nav( $thenav ) {
+    function generate_common_nav( $thenav, $users = NULL, $integrators = NULL, $contributors = NULL ) {
     	global $Nav;
     	$Nav->setLinkList( array() );
     	$Nav->addNavSeparator( $this->getShortName(), $this->getUrlIndex() );
-        $Nav->addCustomNav("About", "#", "", 1);
-        $Nav->addCustomNav("Description", $this->description_url(), "", 2);
-        $Nav->addCustomNav("Project Plan", $this->project_plan_url(), "", 2);
-        $Nav->addCustomNav("Leadership", $this->leaders_url(), "", 2);
-        $Nav->addCustomNav("Committers", $this->committers_url(), "", 2);
-        $Nav->addCustomNav("Contributors", $this->contributors_url(), "", 2);
-        $Nav->addCustomNav("IP Log", $this->ip_log_url(), "", 2);
-        $Nav->addCustomNav("Downloads", $this->downloads_url(), "", 1);
-        $Nav->addCustomNav("Getting Started", $this->getting_started_url(), "", 1);
-        $Nav->addCustomNav("Development", "#", "", 1);
-        $Nav->addCustomNav("Project Plan", $this->project_plan_url(), "", 2);
-        $Nav->addCustomNav("Mailing Lists", $this->mailing_lists_url(), "", 2);
-        $Nav->addCustomNav("CVS", $this->cvs_url(), "", 2);
-        $Nav->addCustomNav("Bugs", $this->bugs_url(), "", 2);
+    	
+        $Nav->addCustomNav("About", $this->description_url(), "", 1);
+	        if( $this->team_url() != ""
+	         || ($this->leaders_url() == "" && $this->committers_url() == "" && $this->contributors_url() == "") ) {
+	        $Nav->addCustomNav("Team", $this->team_url(), "", 2);
+	        } else { /* old-style */
+	        $Nav->addCustomNav("Team", "#", "", 2);
+		        $Nav->addCustomNav("Leaders", $this->leaders_url(), "", 3);
+		        $Nav->addCustomNav("Committers", $this->committers_url(), "", 3);
+		        $Nav->addCustomNav("Contributors", $this->contributors_url(), "", 3);
+	        }
+	        $Nav->addCustomNav("Plan", $this->project_plan_url(), "", 2);
+	        if( $this->legal_url() != "" ) {
+	        $Nav->addCustomNav("Legal", $this->legal_url(), "", 2);
+	        } else { /* old-style */
+	        $Nav->addCustomNav("Legal", $this->ip_log_url(), "", 2);
+	        }
+        $Nav->addCustomNav("Users", $this->getting_started_url(), "", 1);
+ 	        $Nav->addCustomNav("Getting Started", $this->getting_started_url(), "", 2);
+	        $Nav->addCustomNav("Downloads", $this->downloads_url(), "", 2);
+	        $Nav->addCustomNav("Newsgroups", $this->newsgroups_url(), "", 2);
+	        $Nav->addCustomNav("Bugs", $this->bugs_url(), "", 2);
+	        if( !empty($users) ) {
+	        	$users($Nav);
+	        }
+        $Nav->addCustomNav("Integrators", "", "", 1);
+	        $Nav->addCustomNav("API Plan", $this->project_plan_url(), "", 2);
+	        if( !empty($integrators) ) {
+	        	$integrators($Nav);
+	        }
+        $Nav->addCustomNav("Contributors", $this->contributing_url(), "", 1);
+	        $Nav->addCustomNav("Contributing", $this->contributing_url(), "", 2);
+	        $Nav->addCustomNav("Mailing Lists", $this->mailing_lists_url(), "", 2);
+	        if( !empty($contributors) ) {
+	        	$contributors($Nav);
+	        }
     }
 }
 ?>
\ No newline at end of file
