diff --git a/e107_admin/db.php b/e107_admin/db.php
index 6ae2f1ba8..81eaa9344 100644
--- a/e107_admin/db.php
+++ b/e107_admin/db.php
@@ -52,11 +52,7 @@ if(isset($_POST['db_execute']))
 	}
 }
 
-if(isset($_POST['db_update']) || varset($_GET['mode'])=='db_update')
-{
-	header("location: ".e_ADMIN."e107_update.php");
-	exit();
-}
+
 
 
 
@@ -117,11 +113,11 @@ class system_tools
 			'plugin_scan'			=> array('diz'=>DBLAN_28, 'label'=> DBLAN_29),
 			'pref_editor'			=> array('diz'=>DBLAN_19, 'label'=> DBLAN_20),
 		//	'backup_core'			=> array('diz'=>DBLAN_8, 'label'=> DBLAN_9),
-			'verify_sql_record'		=> array('diz'=>DBLAN_35, 'label'=> DBLAN_36),
+		//	'verify_sql_record'		=> array('diz'=>DBLAN_35, 'label'=> DBLAN_36),
 			'importForm'			=> array('diz'=>DBLAN_59, 'label'=> DBLAN_59),
 			'exportForm'			=> array('diz'=>DBLAN_58, 'label'=> DBLAN_58),
 			'sc_override_scan'		=> array('diz'=>DBLAN_55, 'label'=> DBLAN_56),
-			'convert_to_utf8'		=> array('diz'=>'Convert Database to UTF-8','label'=>'Convert DB to UTF-8'),
+			'convert_to_utf8'		=> array('diz'=>'Check Database Charset','label'=>'Check Charset'),
 			'correct_perms'			=> array('diz'=>'Correct File and Directory permissions','label'=>'Correct Perms')
 		);
 
@@ -151,18 +147,25 @@ class system_tools
 			return;
 		}
 		
-		if(isset($_POST['verify_sql_record']) || varset($_GET['mode'])=='verify_sql_record' || isset($_POST['check_verify_sql_record']) || isset($_POST['delete_verify_sql_record']))
-		{
+	//	if(isset($_POST['verify_sql_record']) || varset($_GET['mode'])=='verify_sql_record' || isset($_POST['check_verify_sql_record']) || isset($_POST['delete_verify_sql_record']))
+	//	{
 		
 			 //$this->verify_sql_record(); // - currently performed in db_verify_class.php
-		}
+	//	}
 
 		if(isset($_POST['importForm']) ||  $_GET['mode']=='importForm')
 		{
 			$this->importForm();
 		}
-
-
+		
+		if(isset($_POST['db_update']) || varset($_GET['mode'])=='db_update') // Requires further testing. 
+		{
+		//	header("location: ".e_ADMIN."e107_update.php");
+			require_once(e_ADMIN."update_routines.php");
+			new e107Update($dbupdate);
+			return;
+		}
+		
 		if(isset($_POST['convert_to_utf8']) ||  $_GET['mode']=='convert_to_utf8')
 		{
 			$this->convertUTF8Form();
@@ -243,117 +246,188 @@ class system_tools
 
 	private function convertUTF8Form()
 	{
-		$mes = e107::getMessage();
-		$frm = e107::getForm();
-		//TODO a function to call the e107_config information in e107_class.php.
-		require(e_BASE."e107_config.php");
-		$dbtable = $mySQLdefaultdb;
+		$mes 	= e107::getMessage();
+		$frm 	= e107::getForm();
+		$config = e107::getMySQLConfig();
+		$sql 	= e107::getDb();
+		
+		$sql->gen('SHOW TABLE STATUS WHERE Name LIKE "'.$config['mySQLprefix'].'%" ');
+		
+		
+		$text = "<table class='table adminlist'>
+							<colgroup>
+								<col style='width: auto' />
+								<col style='width: auto' />
+								<col style='width: auto' />
+								<col style='width: auto' />
+							</colgroup>
+							<thead>
+								<tr>
+									
+									<th>Table</th>
+									<th>Engine</th>
+									<th>Collation</th>
+									<th>Status</th>
+								</tr>
+							</thead>
+							<tbody>";
+		
+		
+		
+		$invalidCollations = false;	
+		while($row = $sql->fetch())
+		{
+				$text .= "<tr>
+					<td>".$row['Name']."</td>
+					<td>".$row['Engine']."</td>
+					<td>".$row['Collation']."</td>
+					<td>".(($row['Collation'] == 'utf8_general_ci') ? ADMIN_TRUE_ICON : ADMIN_FALSE_ICON)."</td>
+					</tr>";
+			//	 print_a($row);
+				
+				if($row['Collation'] != 'utf8_general_ci')
+				{
+					$invalidCollations = true;	
+				}
 
-		//TODO LAN
-		$message = '
-			This function will permanently modify all tables in your database. ('.$mySQLdefaultdb.')<br />
-			It is <b>HIGHLY</b> recommended that you backup your database first.<br />
-			If possible use a copy of your database.<br />
-			Do not forget to purge unnecessary input - e.g. old chatbox messages, pm, …<br />
-			as well as to set the maintenance flag to main admins only.<br />
-			<br />
-			Be sure to click the “Convert Database” button only once.<br />
-			The conversion process can take up to one minute or much much more depending on the size of your database.<br />
-			<br />
-			Known problems (list non-exhaustive):
-			<ul>
-			<li>The MySQL user needs privileges to ALTER the database - this is mandatory.</li>
-			<li>The conversion does not work with serialised arrays.<br />
-			<strong>Be sure</strong> you followed all steps of the upgrade process first.</li>
-			<li>It should work without troubles for databases of sites using only UTF-8 charset. Probably not with other charsets.</li>
-			<li>The function uses the information_schema database for now.</li>
-			</ul>
-			';
+		}
+		
+		$text .= "</tbody></table>";
 
-		$mes->add($message, E_MESSAGE_WARNING);
 
-		$text = "
-			<form method='post' action='".e_SELF."' id='linkform'>
-				<fieldset id='core-db-utf8-convert'>
-					<legend class='e-hideme'>"."Convert Database"."</legend>
-					<div class='buttons-bar center'>
-						".$frm->admin_button('perform_utf8_convert', "Convert Database")."
-					</div>
-				</fieldset>
-			</form>";
+		if($invalidCollations == true)
+		{
+			//TODO LAN
+				$message = '
+				This function will permanently modify all tables in your database. ('.$config['mySQLdefaultdb'].')<br />
+				It is <b>HIGHLY</b> recommended that you first backup your database and switch your site into maintenance mode. 
+				<br />
+				<br />
+				Please note:
+				<ul>
+				<li>The conversion process can take up to one minute or much much more depending on the size of your database.</li>
+				<li>The conversion does not work with serialized arrays.</li>
+				<li>Be sure that you have followed all steps of the upgrade process first.</li>
+				</ul>
+				';
+	
+			$mes->add($message, E_MESSAGE_WARNING);
+	
+			$text .= "
+				<form method='post' action='".e_SELF."' id='linkform'>
+					<fieldset id='core-db-utf8-convert'>
+						<legend class='e-hideme'>"."Convert Database"."</legend>
+						<div class='buttons-bar center'>
+							".$frm->admin_button('perform_utf8_convert', "Convert non-UTF8 Tables",false,"Convert non-UTF8 Tables",'class=btn-success&data-loading-text=Please wait...')."
+						</div>
+					</fieldset>
+				</form>";
+			
+		}
+		else 
+		{
+			$mes->addSuccess("Your tables are using the correct character set.");	
+		}
 
-		e107::getRender()->tablerender(DBLAN_10.SEP."Convert Database to UTF-8", $mes->render().$text);
+
+		e107::getRender()->tablerender(DBLAN_10.SEP."Check Charset".SEP.$config['mySQLdefaultdb'], $mes->render().$text);
 
 	}
 
 	private function perform_utf8_convert()
 	{
-		require(e_BASE."e107_config.php");
-
-		$dbtable = $mySQLdefaultdb;
+		$config = e107::getMySQLConfig();
+		$dbtable = $config['mySQLdefaultdb'];
 
 		//TODO Add a check to be sure the database is not already utf-8.
 		// yep, needs more methods - possibly a class in e107_handler
 
-		$sql = e107::getDb();
+		$sql = e107::getDb('utf8-convert');
 		$mes = e107::getMessage();
 
 		$ERROR = FALSE;
 
-		if(!mysql_query("USE information_schema;"))
-		{
-			$mes->add("Couldn't read information_schema", E_MESSAGE_ERROR);
-			return;
-		}
-
+	//	if(!$sql->gen("USE information_schema;"))
+	//	{
+	//		$mes->add("Couldn't read information_schema", E_MESSAGE_ERROR);
+	//		return;
+	//	}
+		
+	
 		$queries = array();
-		$queries[] = $this->getQueries("SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM columns WHERE table_schema = '".$dbtable."' and data_type LIKE '%char%';");
-		$queries[] = $this->getQueries("SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM columns WHERE table_schema = '".$dbtable."' and data_type LIKE '%text%';");
+		$queries[] = $this->getQueries("SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM information_schema.columns WHERE TABLE_SCHEMA = '".$dbtable."' AND TABLE_NAME LIKE '".$config['mySQLprefix']."%' AND  COLLATION_NAME != 'utf8_general_ci'  and data_type LIKE '%char%';");
+		$queries[] = $this->getQueries("SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM information_schema.columns WHERE TABLE_SCHEMA = '".$dbtable."' AND TABLE_NAME LIKE '".$config['mySQLprefix']."%' AND  COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%text%';");
 
 		$queries2 = array();
-		$queries2[] = $this->getQueries("SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = '".$dbtable."' and data_type LIKE '%char%';");
-		$queries2[] = $this->getQueries("SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = '".$dbtable."' and data_type LIKE '%text%';");
+		$queries2[] = $this->getQueries("SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM information_schema.columns WHERE TABLE_SCHEMA ='".$dbtable."' AND TABLE_NAME LIKE '".$config['mySQLprefix']."%'  AND COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%char%';");
+		$queries2[] = $this->getQueries("SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM information_schema.columns WHERE TABLE_SCHEMA = '".$dbtable."' AND TABLE_NAME LIKE '".$config['mySQLprefix']."%' AND  COLLATION_NAME != 'utf8_general_ci' and data_type LIKE '%text%';");
 
 
-		mysql_query("USE ".$dbtable);
+	//	$sql->gen("USE ".$dbtable);
+		
+		
+	//	print_a($queries2);
+	//	echo $mes->render();
+	//	return;
 
+	
+		// Convert Text tables to Binary. 
 		foreach($queries as $qry)
 		{
+					
 			foreach($qry as $q)
 			{
 				if(!$sql->db_Query($q))
 				{
-					$mes->add($q, E_MESSAGE_ERROR);
+					$mes->addError($q);
 					$ERROR = TRUE;
 				}
+				else
+				{
+					$mes->addDebug($q);	
+				}
 			}
 		}
 
 		//------------
 
-		$result = mysql_list_tables($dbtable);
-		while ($row = mysql_fetch_array($result, MYSQL_NUM))
+		// Convert Table Fields to utf8
+		$sql2 = e107::getDb('sql2');
+		
+		$sql->gen('SHOW TABLE STATUS WHERE Collation != "utf8_general_ci" ');
+		while ($row = $sql->fetch())
 		{
-   			$table = $row[0];
-			$tab_query = "ALTER TABLE ".$table." charset=utf8; ";
-			if(!$sql->db_Query($tab_query))
+   			$table = $row['Name'];
+			$tab_query = "ALTER TABLE ".$table."  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ";
+
+			//echo "TABQRT= ".$tab_query;
+
+			if(!$sql2->db_Query($tab_query))
 			{
-				$mes->add($tab_query, E_MESSAGE_ERROR);
+				$mes->addError($tab_query);
 				$ERROR = TRUE;
 			}
+			else
+			{
+				$mes->addDebug($tab_query);	
+			}
 		}
 
 		// ---------------
-
+		// Convert Table Fields back to Text/varchar etc. 
 		foreach($queries2 as $qry)
 		{
 			foreach($qry as $q)
 			{
 				if(!$sql->db_Query($q))
 				{
-					$mes->add($q, E_MESSAGE_ERROR);
+					$mes->addError($q);
 					$ERROR = TRUE;
 				}
+				else
+				{
+					$mes->addDebug($q);	
+				}
 			}
 		}
 
@@ -367,22 +441,40 @@ class system_tools
 		}
 		elseif($ERROR != TRUE)
 		{
-			$message = "Database Converted successfully to UTF-8. <br />
-			Please now add the following line to your e107_config.php file:<br />
-			<b>\$mySQLcharset   = 'utf8';</b>
-			";
+			$message = "Database Converted successfully to UTF-8. ";
+			//$message .= "<br />Please now add the following line to your e107_config.php file:<br /><b>\$mySQLcharset   = 'utf8';</b>";
 
 			$mes->add($message, E_MESSAGE_SUCCESS);
 		}
 
-
+		echo $mes->render();
 	}
 
 	function getQueries($query)
 	{
+		
+		$mes = e107::getMessage();
+		$sql = e107::getDb('utf8-convert');
+		
+		if($sql->gen($query))
+		{
+			while ($row = $sql->fetch(MYSQL_NUM))
+			{
+	   			 $qry[] = $row[0];
+			}
+		}
+		else 
+		{
+			$mes->addError($query);	
+		}
+
+		return $qry;
+		
+		
+		/*
 		if(!$result = mysql_query($query))
 		{
-			$mes->add("Query Failed", E_MESSAGE_ERROR);
+			$mes->addError("Query Failed: ".$query);
 			return;
 		}
 		while ($row = mysql_fetch_array($result, MYSQL_NUM))
@@ -391,6 +483,7 @@ class system_tools
 		}
 
 		return $qry;
+		 * */
 	}
 
 
@@ -485,18 +578,7 @@ class system_tools
 			<a class='btn btn-large pull-left' style='margin-right:10px' href='".e_SELF."?mode=".$key."' title=\"".$val['label']."\">".ADMIN_EXECUTE_ICON."</a>
 			<h4 style='margin-bottom:3px'><a href='".e_SELF."?mode=".$key."' title=\"".$val['label']."\">".$val['label']."</a></h4><small>".$val['diz']."</small>
 			</div>";
-			/*
-			$text .= "<tr>
-						<td>".$val['diz']."</td>
-						<td>
-						<a class='btn btn-large' href='".e_SELF."?mode=".$key."' title=\"".$val['label']."\">".ADMIN_EXECUTE_ICON."</a>
-							".
-					//		$frm->submit_image('db_execute['.$key.']', '1', 'execute', $val['label']).
-						//	$frm->radio('db_execute', $key).$frm->label($val['label'], 'db_execute', $key).
-							"
-						</td>
-					</tr>\n";
-			*/
+		
 		}
 /*
 		$text .= "
@@ -702,7 +784,7 @@ class system_tools
 	 * Optimize SQL
 	 * @return none
 	 */
-	private function optimizesql($mySQLdefaultdb)
+	private function optimizesql($mySQLdefaultdb) //FIXME Use mysql class. 
 	{
 	//	global $mes;
 		$result = mysql_list_tables($mySQLdefaultdb);
@@ -1118,7 +1200,7 @@ function backup_core()
 
 */
 
-
+/*
 function verify_sql_record() // deprecated by db_verify.php ( i think).
 {
 	global  $e107;
@@ -1531,6 +1613,6 @@ function verify_sql_record() // deprecated by db_verify.php ( i think).
 		$ns->tablerender(DBLAN_10.SEP.DBLAN_50, $mes->render().$text);
 	}
 }
-
+*/
 
 ?>
\ No newline at end of file
diff --git a/e107_admin/e107_update.php b/e107_admin/e107_update.php
index c230055d0..b7202832e 100644
--- a/e107_admin/e107_update.php
+++ b/e107_admin/e107_update.php
@@ -158,195 +158,6 @@ function show_updates($dbupdate, $what)
 */
 
 
-// New in v2.x  ------------------------------------------------
-
-class e107Update
-{
-	var $core = array();
-	var $updates = 0;
-	var $disabled = 0;
-	
-	
-	function __construct($core=null)
-	{
-		$mes = e107::getMessage();
-		
-		$this->core = $core;
-		
-		if(varset($_POST['update_core']) && is_array($_POST['update_core']))
-		{
-			$func = key($_POST['update_core']);
-			$message = $this->updateCore();
-		}	
-		
-		if(varset($_POST['update']) && is_array($_POST['update'])) // Do plugin updates
-		{ 
-			$func = key($_POST['update']);
-			$this->updatePlugin($func);
-		}	
-			
-		if(vartrue($message))
-		{
-			$mes->addSuccess($message);	
-		}
-		
-		$this->renderForm();	
-	}
-	
-	
-	
-	
-	function updateCore($func='')
-	{
-		$mes = e107::getMessage();
-		
-	//	foreach($this->core as $func => $data)
-	//	{
-			if(function_exists('update_'.$func)) // Legacy Method. 
-			{
-				$installed = call_user_func("update_".$func);
-				//?! (LAN_UPDATE == $_POST[$func])
-				if(varsettrue($_POST['update_core'][$func]) && !$installed)
-				{
-					if(function_exists("update_".$func))
-					{
-						$message = LAN_UPDATE_7." ".$data['title'];
-						$error = call_user_func("update_".$func, "do");
-						
-						if($error != '')
-						{
-							$mes->add($message, E_MESSAGE_ERROR);
-							$mes->add($error, E_MESSAGE_ERROR);
-						}
-						else
-						{
-							 $mes->add($message, E_MESSAGE_SUCCESS);
-						}
-					}
-				}	
-			}
-		
-		//}
-		
-	}
-	
-	
-	
-	function updatePlugin($path)
-	{
-		 e107::getPlugin()->install_plugin_xml($path, 'upgrade');
-	}
-	
-	
-	
-	function plugins()
-	{
-		if(!$list = e107::getPlugin()->updateRequired())
-		{
-			return;
-		}
-		
-		$frm = e107::getForm();
-		
-		$text = "";
-		foreach($list as $path=>$val)
-		{
-			$text .= "<tr>
-					<td>".$val['@attributes']['name']."</td>
-					<td>".$frm->admin_button('update['.$path.']', LAN_UPDATE, 'warning', '', 'disabled='.$this->disabled)."</td>
-					</tr>";			
-		}
-		
-		return $text;	
-	}
-	
-	
-	
-	
-	function core()
-	{
-		$frm = e107::getForm();
-		$mes = e107::getMessage();
-		
-		$text = "";
-		
-		foreach($this->core as $func => $data)
-		{
-			if(function_exists("update_".$func))
-			{
-				$text .= "<tr><td>".$data['title']."</td>";
-				
-				
-				
-				if(call_user_func("update_".$func))
-				{
-					$text .= "<td>".ADMIN_TRUE_ICON."</td>";
-				}
-				else
-				{
-					if(vartrue($data['message']))
-					{
-						$mes->addInfo($data['message']);	
-					}
-					
-					$this->updates ++;
-					
-					$text .= "<td>".$frm->admin_button('update_core['.$func.']', LAN_UPDATE, 'warning', '', "id=e-{$func}&disabled=".$this->disabled)."</td>";
-					if($data['master'] == true)
-					{
-						$this->disabled = 1;	
-					}
-				}
-				$text .= "</tr>\n";
-			}	
-		}
-		
-		return $text;
-	}
-	
-	
-	
-	function renderForm()
-	{
-		$ns = e107::getRender();
-		$mes = e107::getMessage();
-		
-		$caption = LAN_UPDATE;
-		$text = "
-		<form method='post' action='".e_SELF."'>
-			<fieldset id='core-e107-update'>
-			<legend>{$caption}</legend>
-				<table class='table adminlist'>
-					<colgroup>
-						<col style='width: 60%' />
-						<col style='width: 40%' />
-					</colgroup>
-					<thead>
-						<tr>
-							<th>".LAN_UPDATE_55."</th>
-							<th class='last'>".LAN_UPDATE_2."</th>
-						</tr>
-					</thead>
-					<tbody>
-		";
-	
-		$text .= $this->core();
-		$text .= $this->plugins();
-	
-		$text .= "
-					</tbody>
-				</table>
-			</fieldset>
-		</form>
-			";
-	
-	
-		$ns->tablerender("Updates",$mes->render() . $text);
-	
-	}
-	
-
-}
 
 new e107Update($dbupdate);
 
diff --git a/e107_admin/header.php b/e107_admin/header.php
index b0e0ce303..3ae3c8e98 100644
--- a/e107_admin/header.php
+++ b/e107_admin/header.php
@@ -468,7 +468,7 @@ echo getAlert();
             
     }
 
-function getAlert($caption)
+function getAlert($caption='')
 {
 	
 	return '<div id="uiAlert" class="alert alert-block alert-success hide fade in" style="box-shadow:0px 15px 8px #000;width:300px;position:absolute;left:40%;right:40%;top:15%;z-index:10000">
diff --git a/e107_admin/update_routines.php b/e107_admin/update_routines.php
index 1d2c5b335..b3be3d73e 100644
--- a/e107_admin/update_routines.php
+++ b/e107_admin/update_routines.php
@@ -135,6 +135,199 @@ if (!$dont_check_update)
 
 
 
+// New in v2.x  ------------------------------------------------
+
+class e107Update
+{
+	var $core = array();
+	var $updates = 0;
+	var $disabled = 0;
+	
+	
+	function __construct($core=null)
+	{
+		$mes = e107::getMessage();
+		
+		$this->core = $core;
+
+		if(varset($_POST['update_core']) && is_array($_POST['update_core']))
+		{
+			$func = key($_POST['update_core']);
+			$message = $this->updateCore($func);
+		}	
+		
+		if(varset($_POST['update']) && is_array($_POST['update'])) // Do plugin updates
+		{ 
+			$func = key($_POST['update']);
+			$this->updatePlugin($func);
+		}	
+			
+		if(vartrue($message))
+		{
+			$mes->addSuccess($message);	
+		}
+		
+		$this->renderForm();	
+	}
+	
+	
+	
+	
+	function updateCore($func='')
+	{
+		$mes = e107::getMessage();
+		
+	//	foreach($this->core as $func => $data)
+	//	{
+			if(function_exists('update_'.$func)) // Legacy Method. 
+			{
+				$installed = call_user_func("update_".$func);
+				//?! (LAN_UPDATE == $_POST[$func])
+				if(varsettrue($_POST['update_core'][$func]) && !$installed)
+				{
+					if(function_exists("update_".$func))
+					{
+						$message = LAN_UPDATE_7." ".$data['title'];
+						$error = call_user_func("update_".$func, "do");
+						
+						if($error != '')
+						{
+							$mes->add($message, E_MESSAGE_ERROR);
+							$mes->add($error, E_MESSAGE_ERROR);
+						}
+						else
+						{
+							 $mes->add($message, E_MESSAGE_SUCCESS);
+						}
+					}
+				}	
+			}
+			else 
+			{
+				$mes->addDebug("could run 'update_".$func);
+			}
+		
+		//}
+		
+	}
+	
+	
+	
+	function updatePlugin($path)
+	{
+		 e107::getPlugin()->install_plugin_xml($path, 'upgrade');
+	}
+	
+	
+	
+	function plugins()
+	{
+		if(!$list = e107::getPlugin()->updateRequired())
+		{
+			return;
+		}
+		
+		$frm = e107::getForm();
+		
+		$text = "";
+		foreach($list as $path=>$val)
+		{
+			$text .= "<tr>
+					<td>".$val['@attributes']['name']."</td>
+					<td>".$frm->admin_button('update['.$path.']', LAN_UPDATE, 'warning', '', 'disabled='.$this->disabled)."</td>
+					</tr>";			
+		}
+		
+		return $text;	
+	}
+	
+	
+	
+	
+	function core()
+	{
+		$frm = e107::getForm();
+		$mes = e107::getMessage();
+		
+		$text = "";
+		
+		foreach($this->core as $func => $data)
+		{
+			if(function_exists("update_".$func))
+			{
+				$text .= "<tr><td>".$data['title']."</td>";
+				
+				
+				
+				if(call_user_func("update_".$func))
+				{
+					$text .= "<td>".ADMIN_TRUE_ICON."</td>";
+				}
+				else
+				{
+					if(vartrue($data['message']))
+					{
+						$mes->addInfo($data['message']);	
+					}
+					
+					$this->updates ++;
+					
+					$text .= "<td>".$frm->admin_button('update_core['.$func.']', LAN_UPDATE, 'warning', '', "id=e-{$func}&disabled=".$this->disabled)."</td>";
+					if($data['master'] == true)
+					{
+						$this->disabled = 1;	
+					}
+				}
+				$text .= "</tr>\n";
+			}	
+		}
+		
+		return $text;
+	}
+	
+	
+	
+	function renderForm()
+	{
+		$ns = e107::getRender();
+		$mes = e107::getMessage();
+		
+		$caption = LAN_UPDATE;
+		$text = "
+		<form method='post' action='".e_SELF."'>
+			<fieldset id='core-e107-update'>
+			<legend>{$caption}</legend>
+				<table class='table adminlist'>
+					<colgroup>
+						<col style='width: 60%' />
+						<col style='width: 40%' />
+					</colgroup>
+					<thead>
+						<tr>
+							<th>".LAN_UPDATE_55."</th>
+							<th class='last'>".LAN_UPDATE_2."</th>
+						</tr>
+					</thead>
+					<tbody>
+		";
+	
+		$text .= $this->core();
+		$text .= $this->plugins();
+	
+		$text .= "
+					</tbody>
+				</table>
+			</fieldset>
+		</form>
+			";
+	
+	
+		$ns->tablerender("Updates",$mes->render() . $text);
+	
+	}
+	
+
+}
 
 /**
  *	Master routine to call to check for updates
diff --git a/e107_handlers/db_verify_class.php b/e107_handlers/db_verify_class.php
index ae90cede9..3a4ebdffd 100644
--- a/e107_handlers/db_verify_class.php
+++ b/e107_handlers/db_verify_class.php
@@ -924,7 +924,7 @@ class db_verify
 					</colgroup>
 					<thead>
 						<tr>
-							<th class='last'>".$frm->checkbox_toggle('check-all-verify', 'verify_table').LAN_CHECKALL.' | '.LAN_UNCHECKALL."</th>
+							<th class='last'>".$frm->checkbox_toggle('check-all-verify', 'verify_table',false,LAN_CHECKALL.' | '.LAN_UNCHECKALL)."</th>
 						</tr>
 					</thead>
 					<tbody>
@@ -934,7 +934,7 @@ class db_verify
 		{
 			$text .= "
 				<tr>
-					<td>".$frm->checkbox('verify_table[]', $x).$frm->label($x, "verify_table".$x, $x)."</td>
+					<td>".$frm->checkbox('verify_table[]', $x,false,'label='.$x)."</td>
 				</tr>
 			";
 		}
diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php
index b58e52711..ea28a9131 100644
--- a/e107_handlers/e107_class.php
+++ b/e107_handlers/e107_class.php
@@ -596,16 +596,20 @@ class e107
 	 * Replaces all $mySQL(*) globals
 	 * Example: <code>$e107->getMySQLConfig('prefix');</code>
 	 *
-	 * @param string $for prefix|server|user|password|defaultdb
-	 * @return string
+	 * @param string $for prefix|server|user|password|defaultdb - leave blank for full array. 
+	 * @return string or array
 	 */
-	function getMySQLConfig($for)
+	function getMySQLConfig($for='')
 	{
 		$key = 'mySQL'.$for;
 		$self = self::getInstance();
-		return (isset($self->e107_config_mysql_info[$key]) ? $self->e107_config_mysql_info[$key] : '');
 		
-	//	return (isset($this->e107_config_mysql_info[$key]) ? $this->e107_config_mysql_info[$key] : '');
+		if($for == '')
+		{
+			return 	$self->e107_config_mysql_info;
+		}
+		
+		return (isset($self->e107_config_mysql_info[$key]) ? $self->e107_config_mysql_info[$key] : '');
 	}
 	
 
diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php
index d8e31931d..d25e813a2 100644
--- a/e107_handlers/form_handler.php
+++ b/e107_handlers/form_handler.php
@@ -967,11 +967,12 @@ class e_form
 		return $this->checkbox($name, $value, $checked).$this->label($label ? $label : LAN_ENABLED, $name, $value);
 	}
 
-	function checkbox_toggle($name, $selector = 'multitoggle', $id = false)
+	function checkbox_toggle($name, $selector = 'multitoggle', $id = false, $label='')
 	{
 		$selector = 'jstarget:'.$selector;
 		if($id) $id = $this->name2id($id);
-		return $this->checkbox($name, $selector, false, array('id' => $id,'class' => 'checkbox toggle-all'));
+		
+		return $this->checkbox($name, $selector, false, array('id' => $id,'class' => 'checkbox toggle-all','label'=>$label));
 	}
 
 	function uc_checkbox($name, $current_value, $uc_options, $field_options = array())
diff --git a/e107_themes/bootstrap/admin_style.css b/e107_themes/bootstrap/admin_style.css
index d9e5dd9db..c515fcebf 100644
--- a/e107_themes/bootstrap/admin_style.css
+++ b/e107_themes/bootstrap/admin_style.css
@@ -397,9 +397,13 @@ i.s-message-debug	{ background-position: -1480px 0; width: 32px; height: 32px;
 }
 
 tr.e-sort { box-shadow: 0 5px 8px #cccccc; -webkit-box-shadow: 0 5px 8px #cccccc; -moz-box-shadow: 0 5px 8px #cccccc;}
+th label.checkbox { min-height:inherit; } /* Bootstrap Fix but doesn't work */
 
 /* ****************************** ICONS ************************************* */
 
+
+
+
 i.S16 {
     background: url(images/adminicons_16.png) no-repeat top left;
  	display:inline-block;
diff --git a/e107_web/js/core/admin.jquery.js b/e107_web/js/core/admin.jquery.js
index d135dede3..ac3393f5c 100644
--- a/e107_web/js/core/admin.jquery.js
+++ b/e107_web/js/core/admin.jquery.js
@@ -123,8 +123,13 @@ $(document).ready(function()
 		
 		$('button[data-loading-text],a[data-loading-text]').on('click', function()
 			{
-				var caption  = $(this).attr('data-loading-text');		
-				$(this).attr('disabled', 'disabled').html(caption);
+				var caption  = $(this).attr('data-loading-text');
+				$(this).removeClass('btn-success');		
+				$(this).html(caption);
+				if($(this).attr('data-disable') == 'true')
+				{	
+					$(this).attr('disabled', 'disabled');
+				}
 				return true;
 			}
 		);