diff --git a/common.php b/common.php
index 8055041b..83497cbe 100644
--- a/common.php
+++ b/common.php
@@ -28,7 +28,7 @@ session_start();
 
 define('MYAAC', true);
 define('MYAAC_VERSION', '0.3.0');
-define('DATABASE_VERSION', 7);
+define('DATABASE_VERSION', 8);
 define('TABLE_PREFIX', 'myaac_');
 define('START_TIME', microtime(true));
 define('MYAAC_OS', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? 'WINDOWS' : (strtoupper(PHP_OS) == 'DARWIN' ? 'MAC' : 'LINUX'));
diff --git a/install/includes/schema.sql b/install/includes/schema.sql
index acb08f6d..25a22cec 100644
--- a/install/includes/schema.sql
+++ b/install/includes/schema.sql
@@ -67,7 +67,7 @@ CREATE TABLE `myaac_faq`
 	PRIMARY KEY (`id`)
 ) ENGINE = MyISAM;
 
-CREATE TABLE `myaac_forum_sections`
+CREATE TABLE `myaac_forum_boards`
 (
 	`id` INT(11) NOT NULL AUTO_INCREMENT,
 	`name` VARCHAR(32) NOT NULL,
@@ -77,11 +77,11 @@ CREATE TABLE `myaac_forum_sections`
 	`hidden` TINYINT(1) NOT NULL DEFAULT 0,
 	PRIMARY KEY (`id`)
 ) ENGINE = MyISAM;
-INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`, `closed`) VALUES (NULL, 'News', 'News commenting', 1);
-INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Trade', 'Trade offers.');
-INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Quests', 'Quest making.');
-INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Pictures', 'Your pictures.');
-INSERT INTO `myaac_forum_sections` (`id`, `name`, `description`) VALUES (NULL, 'Bug Report', 'Report bugs there.');
+INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`, `closed`) VALUES (NULL, 'News', 'News commenting', 0, 1);
+INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Trade', 'Trade offers.', 1);
+INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Quests', 'Quest making.', 2);
+INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Pictures', 'Your pictures.', 3);
+INSERT INTO `myaac_forum_boards` (`id`, `name`, `description`, `ordering`) VALUES (NULL, 'Bug Report', 'Report bugs there.', 4);
 
 CREATE TABLE `myaac_forum`
 (
diff --git a/system/functions.php b/system/functions.php
index de2bcf56..8f84b863 100644
--- a/system/functions.php
+++ b/system/functions.php
@@ -9,13 +9,22 @@
  * @link      http://my-aac.org
  */
 defined('MYAAC') or die('Direct access not allowed!');
-function success($message) {
+function success($message, $return = false) {
+	if($return)
+		return '<p class="success">' . $message . '</p>';
+	
 	echo '<p class="success">' . $message . '</p>';
 }
-function warning($message) {
+function warning($message, $return = false) {
+	if($return)
+		return '<p class="warning">' . $message . '</p>';
+	
 	echo '<p class="warning">' . $message . '</p>';
 }
-function error($message) {
+function error($message, $return = false) {
+	if($return)
+		return '<p class="error">' . $message . '</p>';
+	
 	echo '<p class="error">' . $message . '</p>';
 }
 
@@ -218,10 +227,11 @@ function generateRandomString($length, $lowCase = true, $upCase = false, $numeri
  *
  * @return array Forum sections.
  */
-function getForumSections()
+function getForumBoards()
 {
-	global $db;
-	$sections = $db->query('SELECT `id`, `name`, `description`, `closed` FROM ' . TABLE_PREFIX . 'forum_sections WHERE hidden != 1 ORDER BY `ordering`;');
+	global $db, $canEdit;
+	$sections = $db->query('SELECT `id`, `name`, `description`, `closed`' . ($canEdit ? ', `hidden`, `ordering`' : '') . ' FROM `' . TABLE_PREFIX . 'forum_boards` ' . (!$canEdit ? ' WHERE `hidden` != 1' : '') .
+		' ORDER BY `ordering`;');
 	if($sections)
 		return $sections->fetchAll();
 	
diff --git a/system/login.php b/system/login.php
index 0b5d0f4b..2c916791 100644
--- a/system/login.php
+++ b/system/login.php
@@ -74,8 +74,6 @@ else
 					$_SESSION['remember_me'] = true;
 
 				$logged = true;
-
-				$logged_flags = $account_logged->getWebFlags();
 				if(isset($_POST['admin']) && !admin()) {
 					$errors[] = 'This account has no admin privileges.';
 					unset($_SESSION['account']);
@@ -114,7 +112,7 @@ else
 			}
 		}
 	}
-	
+
 	// stay-logged with sessions
 	if(isset($_SESSION['account']))
 	{
@@ -122,15 +120,17 @@ else
 		$account_logged->load($_SESSION['account']);
 		if($account_logged->isLoaded() && $account_logged->getPassword() == $_SESSION['password']
 			//&& (!isset($_SESSION['admin']) || admin())
-			&& (isset($_SESSION['remember_me']) || $_SESSION['last_visit'] > time() - 15 * 60))  // login for 15 minutes if "remember me" is not used
+			&& (isset($_SESSION['remember_me']) || $_SESSION['last_visit'] > time() - 15 * 60)) {  // login for 15 minutes if "remember me" is not used
 				$logged = true;
+		}
 		else
 		{
+			$logged = false;
 			unset($_SESSION['account']);
 			unset($account_logged);
 		}
 	}
-
+	
 	if($logged) {
 		$logged_flags = $account_logged->getWebFlags();
 		$twig->addGlobal('account_logged', $account_logged);
diff --git a/system/migrations/8.php b/system/migrations/8.php
new file mode 100644
index 00000000..0bf1bb7c
--- /dev/null
+++ b/system/migrations/8.php
@@ -0,0 +1,18 @@
+<?php
+	if(tableExist(TABLE_PREFIX . 'forum_sections'))
+		$db->query('RENAME TABLE `' . TABLE_PREFIX . 'forum_sections` TO `' . TABLE_PREFIX . 'forum_boards`;');
+	
+	$query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'forum_boards` WHERE `ordering` > 0;');
+	if($query->rowCount() == 0) {
+		$boards = array(
+			'News',
+			'Trade',
+			'Quests',
+			'Pictures',
+			'Bug Report'
+		);
+		
+		foreach($boards as $id => $board)
+			$db->query('UPDATE `' . TABLE_PREFIX . 'forum_boards` SET `ordering` = ' . $id . ' WHERE `name` = ' . $db->quote($board));
+	}
+?>
\ No newline at end of file
diff --git a/system/pages/accountmanagement.php b/system/pages/accountmanagement.php
index a1d16c20..50ed2d0f 100644
--- a/system/pages/accountmanagement.php
+++ b/system/pages/accountmanagement.php
@@ -17,7 +17,8 @@ if($config['account_country'])
 
 $groups = new OTS_Groups_List();
 
-$dontshowtableagain = false;
+$errors = array();
+$show_form = true;
 $config_salt_enabled = fieldExist('salt', 'accounts');
 if(!$logged)
 {
@@ -213,55 +214,65 @@ if(!$logged)
 	}
 
 //############# CHANGE E-MAIL ###################
-	if($action == "changeemail") {
-		$email_new_time = $account_logged->getCustomField("email_new_time");
-	if($email_new_time > 10) {$email_new = $account_logged->getCustomField("email_new"); }
-	if($email_new_time < 10){
-	if(isset($_POST['changeemailsave']) && $_POST['changeemailsave'] == 1) {
-		$email_new = $_POST['new_email'];
-		$post_password = $_POST['password'];
-		if(empty($email_new)) {
-			$errors[] = "Please enter your new email address.";
-		}
-		else
-		{
-			if(!check_mail($email_new)) {
-				$errors[] = "E-mail address is not correct.";
-			}
-		}
-		if(empty($post_password)) {
-			$errors[] = "Please enter password to your account.";
-		}
-		else
-		{
-			$post_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $post_password);
-			if($post_password != $account_logged->getPassword()) {
-				$errors[] = "Wrong password to account.";
-			}
-		}
-		if(empty($errors)) {
-			$email_new_time = time() + $config['account_mail_change'] * 24 * 3600;
-			$account_logged->setCustomField("email_new", $email_new);
-			$account_logged->setCustomField("email_new_time", $email_new_time);
-			echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >New Email Address Requested</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td>You have requested to change your email address to <b>'.$email_new.'</b>. The actual change will take place after <b>'.date("j F Y, G:i:s", $email_new_time).'</b>, during which you can cancel the request at any time.</td></tr>          </table>        </div>  </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
-		}
-		else
-		{
-			//show errors
-			echo $twig->render('error_box.html.twig', array('errors' => $errors));
+if($action == "changeemail") {
+	$email_new_time = $account_logged->getCustomField("email_new_time");
+	
+	if($email_new_time > 10) {
+		$email_new = $account_logged->getCustomField("email_new");
+	}
+	
+	if($email_new_time < 10) {
+		if(isset($_POST['changeemailsave']) && $_POST['changeemailsave'] == 1) {
+			$email_new = $_POST['new_email'];
+			$post_password = $_POST['password'];
 			
-			//show form
+			if(empty($email_new)) {
+				$errors[] = 'Please enter your new email address.';
+			}
+			else
+			{
+				if(!check_mail($email_new)) {
+					$errors[] = 'Email address is not correct.';
+				}
+			}
+			
+			if(empty($post_password)) {
+				$errors[] = 'Please enter password to your account.';
+			}
+			else {
+				$post_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $post_password);
+				if($post_password != $account_logged->getPassword()) {
+					$errors[] = 'Wrong password to account.';
+				}
+			}
+			
+			if(empty($errors)) {
+				$email_new_time = time() + $config['account_mail_change'] * 24 * 3600;
+				$account_logged->setCustomField("email_new", $email_new);
+				$account_logged->setCustomField("email_new_time", $email_new_time);
+				echo $twig->render('success.html.twig', array(
+					'title' => 'New Email Address Requested',
+					'description' => 'You have requested to change your email address to <b>' . $email_new . '</b>. The actual change will take place after <b>' . date("j F Y, G:i:s", $email_new_time) . '</b>, during which you can cancel the request at any time.'
+				));
+			}
+			else
+			{
+				//show errors
+				echo $twig->render('error_box.html.twig', array('errors' => $errors));
+				
+				//show form
+				echo $twig->render('account.change_mail.html.twig', array(
+					'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null
+				));
+			}
+		}
+		else
+		{
 			echo $twig->render('account.change_mail.html.twig', array(
 				'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null
 			));
 		}
-	}
-	else
-	{
-		echo $twig->render('account.change_mail.html.twig', array(
-			'new_email' => isset($_POST['new_email']) ? $_POST['new_email'] : null
-		));
-	}
+	
 	}
 	else
 	{
@@ -280,20 +291,89 @@ if(!$logged)
 			}
 			else
 			{
-				echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Email Address Change Accepted</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td>Do you accept <b>'.$email_new.'</b> as your new email adress?</td></tr>          </table>        </div>  </table></div></td></tr><br /><table width="100%"><tr><td width="30">&nbsp;</td><td align=left><form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="changeemailsave" value=1 ><INPUT TYPE=image NAME="I Agree" SRC="'.$template_path.'/images/buttons/sbutton_iagree.gif" BORDER=0 WIDTH=120 HEIGHT=17></FORM></td><td align=left><form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="emailchangecancel" value=1 ><input type=image name="Cancel" src="'.$template_path.'/images/buttons/sbutton_cancel.gif" BORDER=0 WIDTH=120 HEIGHT=17></form></td><td align=right><form action="?subtopic=accountmanagement" method="post" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></form></td><td width="30">&nbsp;</td></tr></table>';
+				$custom_buttons = '
+<table width="100%">
+	<tr>
+		<td width="30">&nbsp;</td>
+		<td align=left>
+			<form action="?subtopic=accountmanagement&action=changeemail" method="post"><input type="hidden" name="changeemailsave" value=1 >
+				<INPUT TYPE=image NAME="I Agree" SRC="' . $template_path . '/images/buttons/sbutton_iagree.gif" BORDER=0 WIDTH=120 HEIGHT=17>
+			</form>
+		</td>
+		<td align=left>
+			<form action="?subtopic=accountmanagement&action=changeemail" method="post">
+				<input type="hidden" name="emailchangecancel" value=1 >
+				<input type=image name="Cancel" src="' . $template_path . '/images/buttons/sbutton_cancel.gif" BORDER=0 WIDTH=120 HEIGHT=17>
+			</form>
+		</td>
+		<td align=right>
+			<form action="?subtopic=accountmanagement" method="post" >
+				<div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="' . $template_path . '/images/buttons/_sbutton_back.gif" ></div>
+				</div>
+			</form>
+		</td>
+		<td width="30">&nbsp;</td>
+	</tr>
+</table>';
+				echo $twig->render('success.html.twig', array(
+					'title' => 'Email Address Change Accepted',
+					'description' => 'Do you accept <b>'.$email_new.'</b> as your new email adress?',
+					'custom_buttons' => $custom_buttons
+				));
 			}
 		}
 		else
 		{
-			echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Change of Email Address</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td>A request has been submitted to change the email address of this account to <b>'.$email_new.'</b>.<br/>The actual change will take place on <b>'.date("j F Y, G:i:s", $email_new_time).'</b>.<br>If you do not want to change your email address, please click on "Cancel".</td></tr>          </table>        </div>  </table></div></td></tr><br/><table style="width:100%;" ><tr align="center"><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement&action=changeemail" method="post" ><tr><td style="border:0px;" ><input type="hidden" name="emailchangecancel" value=1 ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Cancel" alt="Cancel" src="'.$template_path.'/images/buttons/_sbutton_cancel.gif" ></div></div></td></tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>';
+			$custom_buttons = '
+<table style="width:100%;" >
+	<tr align="center">
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0" >
+				<form action="?subtopic=accountmanagement&action=changeemail" method="post" >
+					<tr>
+						<td style="border:0px;" >
+							<input type="hidden" name="emailchangecancel" value="1" >
+							<div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Cancel" alt="Cancel" src="'.$template_path.'/images/buttons/_sbutton_cancel.gif" ></div>
+							</div>
+						</td>
+					</tr>
+				</form>
+			</table>
+		</td>
+		<td>
+			<table border="0" cellspacing="0" cellpadding="0" >
+				<form action="?subtopic=accountmanagement" method="post" >
+					<tr>
+						<td style="border:0px;" >
+							<div class="BigButton" style="background-image:url(' . $template_path . '/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url(' . $template_path . '/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="' . $template_path . '/images/buttons/_sbutton_back.gif" ></div>
+							</div>
+						</td>
+					</tr>
+				</form>
+			</table>
+		</td>
+	</tr>
+</table>';
+			echo $twig->render('success.html.twig', array(
+				'title' => 'Change of Email Address',
+				'description' => 'A request has been submitted to change the email address of this account to <b>'.$email_new.'</b>.<br/>The actual change will take place on <b>'.date("j F Y, G:i:s", $email_new_time).'</b>.<br>If you do not want to change your email address, please click on "Cancel".',
+				'custom_buttons' => $custom_buttons
+			));
 		}
 	}
 	if(isset($_POST['emailchangecancel']) && $_POST['emailchangecancel'] == 1) {
 		$account_logged->setCustomField("email_new", "");
 		$account_logged->setCustomField("email_new_time", 0);
-		echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Email Address Change Cancelled</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td>Your request to change the email address of your account has been cancelled. The email address will not be changed.</td></tr>          </table>        </div>  </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
-	}
+		
+		$custom_buttons = '<center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
+		
+		echo $twig->render('success.html.twig', array(
+			'title' => 'Email Address Change Cancelled',
+			'description' => 'Your request to change the email address of your account has been cancelled. The email address will not be changed.',
+			'custom_buttons' => $custom_buttons
+		));
 	}
+}
 
 //########### CHANGE PUBLIC INFORMATION (about account owner) ######################
 	if($action == "changeinfo") {
@@ -302,8 +382,6 @@ if(!$logged)
 		$new_location = isset($_POST['info_location']) ? htmlspecialchars(stripslashes($_POST['info_location'])) : NULL;
 		$new_country = isset($_POST['info_country']) ? htmlspecialchars(stripslashes($_POST['info_country'])) : NULL;
 		if(isset($_POST['changeinfosave']) && $_POST['changeinfosave'] == 1) {
-			$errors = array();
-			
 			if(!isset($config['countries'][$new_country]))
 				$errors[] = 'Country is not correct.';
 			
@@ -355,44 +433,46 @@ if(!$logged)
 		$_POST['reg_password'] = isset($_POST['reg_password']) ? $_POST['reg_password'] : '';
 		$reg_password = encrypt(($config_salt_enabled ? $account_logged->getCustomField('salt') : '') . $_POST['reg_password']);
 		$old_key = $account_logged->getCustomField("key");
+		
 		if(isset($_POST['registeraccountsave']) && $_POST['registeraccountsave'] == "1") {
 			if($reg_password == $account_logged->getPassword()) {
 				if(empty($old_key)) {
-					$dontshowtableagain = true;
+					$show_form = false;
 					$new_rec_key = generateRandomString(10, false, true, true);
 
 					$account_logged->setCustomField("key", $new_rec_key);
 					$account_logged->logAction('Generated recovery key.');
-					echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Account Registered</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" >Thank you for registering your account! You can now recover your account if you have lost access to the assigned email address by using the following<br/><br/><font size="5">&nbsp;&nbsp;&nbsp;<b>Recovery Key: '.$new_rec_key.'</b></font><br/><br/><br/><b>Important:</b><ul><li>Write down this recovery key carefully.</li><li>Store it at a safe place!</li>';
+					
 					if($config['mail_enabled'] && $config['send_mail_when_generate_reckey'])
 					{
-						$mailBody = '
-						<h3>New recovery key!</h3>
-						<p>You or someone else generated recovery key to your account on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a>.</p>
-						<p>Recovery key: <b>'.$new_rec_key.'</b></p>';
-						if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - recovery key", $mailBody))
-							echo '<br /><small>Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b>.</small>';
+						$mailBody = $twig->render('mail.account.register.html.twig', array(
+							'recovery_key' => $new_rec_key
+						));
+						if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - Recovery Key", $mailBody))
+							$message = '<br /><small>Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b>.</small>';
 						else
-							echo '<br /><p class="error">An error occorred while sending email with recovery key! You will not receive e-mail with this key. Error:<br/>' . $mailer->ErrorInfo . '</p>';
+							$message = '<br /><p class="error">An error occorred while sending email with recovery key! You will not receive e-mail with this key. Error:<br/>' . $mailer->ErrorInfo . '</p>';
 					}
-					echo '</ul>          </table>        </div>  </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
+					echo $twig->render('success.html.twig', array(
+						'title' => 'Account Registered',
+						'description' => 'Thank you for registering your account! You can now recover your account if you have lost access to the assigned email address by using the following<br/><br/><font size="5">&nbsp;&nbsp;&nbsp;<b>Recovery Key: '.$new_rec_key.'</b></font><br/><br/><br/><b>Important:</b><ul><li>Write down this recovery key carefully.</li><li>Store it at a safe place!</li>' . $message . '</ul>'
+					));
 				}
 				else
-					$reg_errors[] = 'Your account is already registered.';
+					$errors[] = 'Your account is already registered.';
 			}
 			else
-				$reg_errors[] = 'Wrong password to account.';
+				$errors[] = 'Wrong password to account.';
 		}
-		if(!$dontshowtableagain)
-		{
-			if(!empty($reg_errors))
-			{
+		
+		if($show_form) {
+			if(!empty($errors)) {
 				//show errors
-				echo $twig->render('error_box.html.twig', array('errors' => $reg_errors));
+				echo $twig->render('error_box.html.twig', array('errors' => $errors));
 			}
 			
 			//show form
-			echo $twig->render('account.register.html.twig');
+			echo $twig->render('account.generate_recovery_key.html.twig');
 		}
 	}
 
@@ -414,40 +494,46 @@ if(!$logged)
 				{
 					if($points >= $config['generate_new_reckey_price'])
 					{
-							$dontshowtableagain = true;
-							$new_rec_key = generateRandomString(10, false, true, true);
-
-							echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Account Registered</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><ul>';
-
-								$mailBody = '
-								<h3>New recovery key!</h3>
-								<p>You or someone else generated recovery key to your account on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a>.</p>
-								<p>Recovery key: <b>'.$new_rec_key.'</b></p>';
-								if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - new recovery key", $mailBody))
-								{
-									$account_logged->setCustomField("key", $new_rec_key);
-									$account_logged->setCustomField("premium_points", $account_logged->getCustomField("premium_points") - $config['generate_new_reckey_price']);
-									$account_logged->logAction('Generated new recovery key for ' . $config['generate_new_reckey_price'] . ' premium points.');
-									echo '<br />Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b> for '.$config['generate_new_reckey_price'].' premium points.';
-								}
-								else
-									echo '<br /><p class="error">An error occorred while sending email ( <b>'.$account_logged->getEMail().'</b> ) with recovery key! Recovery key not changed. Try again. Error:<br/>' . $mailer->ErrorInfo . '</p>';
-							echo '</ul>          </table>        </div>  </table></div></td></tr><br/><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
+						$show_form = false;
+						$new_rec_key = generateRandomString(10, false, true, true);
+						
+						$mailBody = $twig->render('mail.account.register.html.twig', array(
+							'recovery_key' => $new_rec_key
+						));
+						
+						if(_mail($account_logged->getEMail(), $config['lua']['serverName']." - new recovery key", $mailBody))
+						{
+							$account_logged->setCustomField("key", $new_rec_key);
+							$account_logged->setCustomField("premium_points", $account_logged->getCustomField("premium_points") - $config['generate_new_reckey_price']);
+							$account_logged->logAction('Generated new recovery key for ' . $config['generate_new_reckey_price'] . ' premium points.');
+							$message = '<br />Your recovery key were send on email address <b>'.$account_logged->getEMail().'</b> for '.$config['generate_new_reckey_price'].' premium points.';
+						}
+						else
+							$message = '<br /><p class="error">An error occorred while sending email ( <b>'.$account_logged->getEMail().'</b> ) with recovery key! Recovery key not changed. Try again. Error:<br/>' . $mailer->ErrorInfo . '</p>';
+						
+						echo $twig->render('success.html.twig', array(
+							'title' => 'Account Registered',
+							'description' => '<ul>' . $message . '</ul>'
+						));
 					}
 					else
-						$reg_errors[] = 'You need '.$config['generate_new_reckey_price'].' premium points to generate new recovery key. You have <b>'.$points.'<b> premium points.';
+						$errors[] = 'You need '.$config['generate_new_reckey_price'].' premium points to generate new recovery key. You have <b>'.$points.'<b> premium points.';
 				}
 				else
-					$reg_errors[] = 'Wrong password to account.';
+					$errors[] = 'Wrong password to account.';
 			}
-			if(!$dontshowtableagain)
+			
+			//show errors if not empty
+			if(!empty($errors)) {
+				echo $twig->render('error_box.html.twig', array('errors' => $errors));
+			}
+			
+			if($show_form)
 			{
-				//show errors if not empty
-				if(!empty($reg_errors)) {
-					echo $twig->render('error_box.html.twig', array('errors' => $reg_errors));
-				}
 				//show form
-				echo 'To generate NEW recovery key for your account please enter your password.<br/><font color="red"><b>New recovery key cost '.$config['generate_new_reckey_price'].' Premium Points.</font> You have '.$points.' premium points. You will receive e-mail with this recovery key.</b><br/><form action="?subtopic=accountmanagement&action=newreckey" method="post" ><input type="hidden" name="registeraccountsave" value="1"><div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Generate recovery key</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td class="LabelV" ><span >Password:</td><td><input type="password" name="reg_password" size="30" maxlength="29" ></td></tr>          </table>        </div>  </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>';
+				echo $twig->render('account.generate_new_recovery_key.html.twig', array(
+					'points' => $points
+				));
 			}
 		}
 	}
@@ -469,19 +555,17 @@ if(!$logged)
 						$player->setCustomField("hidden", $new_hideacc);
 						$player->setCustomField("comment", $new_comment);
 						$account_logged->logAction('Changed comment for character <b>' . $player->getName() . '</b>.');
-						echo '<div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Character Information Changed</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td>The character information has been changed.</td></tr>          </table>        </div>  </table></div></td></tr><br><center><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></center>';
+						echo $twig->render('success.html.twig', array(
+							'title' => 'Character Information Changed',
+							'description' => 'The character information has been changed.'
+						));
 					}
 					else
 					{
-						echo 'Here you can see and edit the information about your character.<br/>If you do not want to specify a certain field, just leave it blank.<br/><br/><form action="?subtopic=accountmanagement&action=changecomment" method="post" ><div class="TableContainer" >  <table class="Table5" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Edit Character Information</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >          <table style="width:100%;" ><tr><td><div class="TableShadowContainerRightTop" >  <div class="TableShadowRightTop" style="background-image:url('.$template_path.'/images/content/table-shadow-rt.gif);" ></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-rm.gif);" >  <div class="TableContentContainer" >    <table class="TableContent" width="100%" ><tr><td class="LabelV" >Name:</td><td style="width:80%;" >'.$player_name.'</td></tr><tr><td class="LabelV" >Hide Account:</td><td>
-						<input type="hidden" value="0" name="accountvisible">
-					
-						<input type="checkbox" name="accountvisible" id="accountvisible" value="1" ' . ($player->getCustomField("hidden") == 1 ? ' checked="checked"' : '') . '>
-						<label for="accountvisible"> check to hide your account information</label>';
-							if((int)$player->getCustomField('group_id') > 1)
-								echo ' (you will be also hidden on the Team page!)';
-
-						echo '</td></tr>    </table>  </div></div><div class="TableShadowContainer" >  <div class="TableBottomShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bm.gif);" >    <div class="TableBottomLeftShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bl.gif);" ></div>    <div class="TableBottomRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-br.gif);" ></div>  </div></div></td></tr><tr><td><div class="TableShadowContainerRightTop" >  <div class="TableShadowRightTop" style="background-image:url('.$template_path.'/images/content/table-shadow-rt.gif);" ></div></div><div class="TableContentAndRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-rm.gif);" >  <div class="TableContentContainer" >    <table class="TableContent" width="100%" ><tr><td class="LabelV" ><span >Comment:</span></td><td style="width:80%;" ><textarea name="comment" rows="10" cols="50" wrap="virtual" >'.$player->getCustomField("comment").'</textarea><br>[max. length: 2000 chars, 50 lines (ENTERs)]</td></tr>    </table>  </div></div><div class="TableShadowContainer" >  <div class="TableBottomShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bm.gif);" ><div class="TableBottomLeftShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-bl.gif);" ></div><div class="TableBottomRightShadow" style="background-image:url('.$template_path.'/images/content/table-shadow-br.gif);" ></div></div></div></td></tr></td></tr>          </table>        </div>  </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><input type="hidden" name="name" value="'.$player->getName().'"><input type="hidden" name="changecommentsave" value="1"><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>';
+						echo $twig->render('account.change_comment.html.twig', array(
+							'player' => $player,
+							'player_name' => $player_name
+						));
 					}
 				}
 				else
@@ -503,11 +587,10 @@ if(!$logged)
 	if($action == "changename") {
 		echo '<script type="text/javascript" src="tools/check_name.js"></script>';
 		
-		$name_changed = false;
 		$player_id = isset($_POST['player_id']) ? (int)$_POST['player_id'] : NULL;
 		$name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : NULL;
 		if((!$config['account_change_character_name']))
-			echo 'You cant change your character name';
+			echo 'Changing character name for premium points is disabled on this server.';
 		else
 		{
 			$points = $account_logged->getCustomField('premium_points');
@@ -516,12 +599,18 @@ if(!$logged)
 					$errors[] = 'You need ' . $config['account_change_character_name_points'] . ' premium points to change name. You have <b>'.$points.'<b> premium points.';
 	
 				if(empty($errors) && empty($name))
-					$errors[] = 'Please enter a name for your character!';
-
-				if(empty($errors) && strlen($name) > 25)
+					$errors[] = 'Please enter a new name for your character!';
+				else if(strlen($name) > 25)
 					$errors[] = 'Name is too long. Max. lenght <b>25</b> letters.';
-				else if(empty($errors) && strlen($name) < 3)
-					$errors[] = 'Name is too short. Min. lenght <b>25</b> letters.';
+				else if(strlen($name) < 3)
+					$errors[] = 'Name is too short. Min. lenght <b>3</b> letters.';
+				else {
+					$exist = new OTS_Player();
+					$exist->find($name);
+					if($exist->isLoaded()) {
+						$errors[] = 'Character with this name already exist.';
+					}
+				}
 				
 				if(empty($errors))
 				{
@@ -531,7 +620,7 @@ if(!$logged)
 				}
 				
 				if(empty($errors)) {
-					$player = $ots->createObject('Player');
+					$player = new OTS_Player();
 					$player->load($player_id);
 					if($player->isLoaded()) {
 						$player_account = $player->getAccount();
@@ -541,7 +630,7 @@ if(!$logged)
 							}
 							
 							if(empty($errors)) {
-								$name_changed = true;
+								$show_form = false;
 								$old_name = $player->getName();
 								$player->setName($name);
 								$player->save();
@@ -563,34 +652,15 @@ if(!$logged)
 				}
 			}
 
-			if(!$name_changed) {
+			if($show_form) {
 				if(!empty($errors)) {
 					echo $twig->render('error_box.html.twig', array('errors' => $errors));
 				}
-				echo 'To change a name of character select player and choose a new name.<br/>
-				<font color="red">Change name cost ' . $config['account_change_character_name_points'] . ' premium points. You have ' . $points . ' premium points.</font><br/><br/><form action="?subtopic=accountmanagement&action=changename" method="post" ><input type="hidden" name="changenamesave" value="1"><div class="TableContainer" >  <table class="Table1" cellpadding="0" cellspacing="0" >    <div class="CaptionContainer" >      <div class="CaptionInnerContainer" >        <span class="CaptionEdgeLeftTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightTop" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionBorderTop" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionVerticalLeft" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <div class="Text" >Change Name</div>        <span class="CaptionVerticalRight" style="background-image:url('.$template_path.'/images/content/box-frame-vertical.gif);" /></span>        <span class="CaptionBorderBottom" style="background-image:url('.$template_path.'/images/content/table-headline-border.gif);" ></span>        <span class="CaptionEdgeLeftBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>        <span class="CaptionEdgeRightBottom" style="background-image:url('.$template_path.'/images/content/box-frame-edge.gif);" /></span>      </div>    </div>    <tr>      <td>        <div class="InnerTableContainer" >
-				<table style="width:100%;" >
-					<tr>
-						<td class="LabelV" ><span >Character:</td>
-						<td style="width:90%;" >
-							<select name="player_id">';
-								$players = $account_logged->getPlayersList();
-								foreach($players as $player)
-									echo '<option value="' . $player->getId() . '">' . $player->getName() . '</option>';
-							echo '
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="LabelV" ><span >New Name:</td>
-						<td>
-							<input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" >
-							<font size="1" face="verdana,arial,helvetica">
-								<div id="name_check">Please enter your character name.</div>
-							</font>
-						</td>
-					</tr>
-				</table>        </div>  </table></div></td></tr><br/><table style="width:100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$template_path.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=accountmanagement" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$template_path.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$template_path.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="'.$template_path.'/images/buttons/_sbutton_back.gif" ></div></div></td></tr></form></table></td></tr></table>';
+				
+				echo $twig->render('account.change_name.html.twig', array(
+					'points' => $points,
+					//'account_players' => $account_logged->getPlayersList()
+				));
 			}
 		}
 	}
@@ -688,7 +758,7 @@ if(!$logged)
 								if(!$player->isOnline())
 								{
 								//dont show table "delete character" again
-								$dontshowtableagain = true;
+								$show_form = false;
 								//delete player
 								if(fieldExist('deletion', 'players'))
 									$player->setCustomField('deletion', 1);
@@ -723,7 +793,7 @@ if(!$logged)
 				$errors[] = 'Character name or/and password is empty. Please fill in form.';
 			}
 		}
-		if(!$dontshowtableagain) {
+		if($show_form) {
 			if(!empty($errors)) {
 				echo $twig->render('error_box.html.twig', array('errors' => $errors));
 			}
@@ -738,8 +808,7 @@ if(!$logged)
 		$newchar_sex = isset($_POST['sex']) ? $_POST['sex'] : NULL;
 		$newchar_vocation = isset($_POST['vocation']) ? $_POST['vocation'] : NULL;
 		$newchar_town = isset($_POST['town']) ? $_POST['town'] : NULL;
-		$errors = array();
-		
+
 		$newchar_created = false;
 		if(isset($_POST['savecharacter']) && $_POST['savecharacter'] == 1) {
 			if(empty($newchar_name))
@@ -880,16 +949,15 @@ if(!$logged)
 				$newchar_created = true;
 				$account_logged->logAction('Created character <b>' . $player->getName() . '</b>.');
 				unset($player);
+				
 				$player = new OTS_Player();
 				$player->find($newchar_name);
-				if($player->isLoaded())
-				{
+				
+				if($player->isLoaded()) {
 					if(tableExist('player_skills')) {
-						for($i=0;$i<7;$i++)
-						{
+						for($i=0; $i<7; $i++) {
 							$skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i);
-							if($skillExists->rowCount() <= 0)
-							{
+							if($skillExists->rowCount() <= 0) {
 								$db->query('INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES ('.$player->getId().', '.$i.', 10, 0)');
 							}
 						}
@@ -908,8 +976,8 @@ if(!$logged)
 				}
 				else
 				{
-					echo "Error. Can\'t create character. Probably problem with database. Try again or contact with admin.";
-					exit;
+					error("Error. Can't create character. Probably problem with database. Please try again later or contact with admin.");
+					return;
 				}
 			}
 		}
diff --git a/system/pages/commands.php b/system/pages/commands.php
index 3dacf611..80027688 100644
--- a/system/pages/commands.php
+++ b/system/pages/commands.php
@@ -76,8 +76,6 @@ if($canEdit)
 		'link' => getPageLink('commands', ($action == 'edit' ? 'edit' : 'add')),
 		'action' => $action,
 		'id' => isset($id) ? $id : null,
-		'vdarkborder' => $config['vdarkborder'],
-		'darkborder' => $config['darkborder'],
 		'words' => isset($words) ? $words : null,
 		'description' => isset($description) ? $description : null
 	));
diff --git a/system/pages/forum.php b/system/pages/forum.php
index 1d35e82c..f2b7783b 100644
--- a/system/pages/forum.php
+++ b/system/pages/forum.php
@@ -24,17 +24,6 @@ if(strtolower($config['forum']) != 'site')
 	return;
 }
 
-$sections = array();
-foreach(getForumSections() as $section)
-{
-	$sections[$section['id']] = array(
-		'id' => $section['id'],
-		'name' => $section['name'],
-		'description' => $section['description'],
-		'closed' => $section['closed'] == '1'
-	);
-}
-
 function parseSmiles($text)
 {
 	$smileys = array(
@@ -128,6 +117,93 @@ function showPost($topic, $text, $smiles)
 if(!$logged)
 	echo  'You are not logged in. <a href="?subtopic=accountmanagement&redirect=' . BASE_URL . urlencode('?subtopic=forum') . '">Log in</a> to post on the forum.<br /><br />';
 
+$canEdit = hasFlag(FLAG_CONTENT_FORUM) || superAdmin();
+if($canEdit)
+{
+	if(!empty($action))
+	{
+		if($action == 'delete_board' || $action == 'edit_board' || $action == 'hide_board' || $action == 'moveup_board' || $action == 'movedown_board')
+			$id = $_REQUEST['id'];
+		
+		if(isset($_REQUEST['name']))
+			$name = $_REQUEST['name'];
+		
+		if(isset($_REQUEST['description']))
+			$description = stripslashes($_REQUEST['description']);
+		
+		$errors = array();
+		
+		if($action == 'add_board') {
+			if(Forum::add_board($name, $description, $errors))
+				$action = $name = $description = '';
+		}
+		else if($action == 'delete_board') {
+			Forum::delete_board($id, $errors);
+			$action = '';
+		}
+		else if($action == 'edit_board')
+		{
+			if(isset($id) && !isset($name)) {
+				$board = Forum::get_board($id);
+				$name = $board['name'];
+				$description = $board['description'];
+			}
+			else {
+				Forum::update_board($id, $name, $description);
+				$action = $name = $description = '';
+			}
+		}
+		else if($action == 'hide_board') {
+			Forum::toggleHidden_board($id, $errors);
+			$action = '';
+		}
+		else if($action == 'moveup_board') {
+			Forum::move_board($id, -1, $errors);
+			$action = '';
+		}
+		else if($action == 'movedown_board') {
+			Forum::move_board($id, 1, $errors);
+			$action = '';
+		}
+		
+		if(!empty($errors)) {
+			echo $twig->render('error_box.html.twig', array('errors' => $errors));
+			$action = '';
+		}
+	}
+	
+	if(empty($action) || $action == 'edit_board') {
+		echo $twig->render('forum.add_board.html.twig', array(
+			'link' => getPageLink('forum', ($action == 'edit_board' ? 'edit_board' : 'add_board')),
+			'action' => $action,
+			'id' => isset($id) ? $id : null,
+			'name' => isset($name) ? $name : null,
+			'description' => isset($description) ? $description : null
+		));
+		
+		if($action == 'edit_board')
+			$action = '';
+	}
+}
+
+$sections = array();
+foreach(getForumBoards() as $section)
+{
+	$sections[$section['id']] = array(
+		'id' => $section['id'],
+		'name' => $section['name'],
+		'description' => $section['description'],
+		'closed' => $section['closed'] == '1'
+	);
+	
+	if($canEdit) {
+		$sections[$section['id']]['hidden'] = $section['hidden'];
+	}
+	else {
+		$sections[$section['id']]['hidden'] = 0;
+	}
+}
+
 $number_of_rows = 0;
 if(empty($action))
 {
@@ -140,9 +216,11 @@ if(empty($action))
 	{
 		$last_post = $db->query("SELECT `players`.`name`, `" . TABLE_PREFIX . "forum`.`post_date` FROM `players`, `" . TABLE_PREFIX . "forum` WHERE `" . TABLE_PREFIX . "forum`.`section` = ".(int) $id." AND `players`.`id` = `" . TABLE_PREFIX . "forum`.`author_guid` ORDER BY `post_date` DESC LIMIT 1")->fetch();
 		$boards[] = array(
+			'id' => $id,
 			'link' => getForumBoardLink($id),
 			'name' => $section['name'],
 			'description' => $section['description'],
+			'hidden' => $section['hidden'],
 			'posts' => isset($counters[$id]['posts']) ? $counters[$id]['posts'] : 0,
 			'threads' => isset($counters[$id]['threads']) ? $counters[$id]['threads'] : 0,
 			'last_post' => array(
@@ -155,7 +233,8 @@ if(empty($action))
 	
 	echo $twig->render('forum.boards.html.twig', array(
 		'boards' => $boards,
-		'config' => $config
+		'canEdit' => $canEdit,
+		'last' => count($sections)
 	));
 	
 	return;
@@ -446,7 +525,7 @@ if($action == 'new_post')
 			echo 'Thread with ID '.$thread_id.' doesn\'t exist.';
 	}
 	else
-		echo 'Your account is banned, deleted or you don\'t have any player with level '.$config['forum_level_required'].' on your account. You can\'t post.';
+		echo "Your account is banned, deleted or you don't have any player with level " . $config['forum_level_required'] . " on your account. You can't post.";
 }
 
 if($action == 'edit_post')
@@ -660,24 +739,6 @@ if($action == 'move_thread')
 					'section_link' => getForumBoardLink($post['section']),
 					'config' => $config
 				));
-				
-				/*
-				echo '<br/><table bgcolor='.$config['vdarkborder'].' border=0 cellpadding=2 cellspacing=0 width=100%>
-				<tr bgcolor='.$config['vdarkborder'].'><td class=white colspan=5><B>Move thread to another board</B></td></tr>
-				<tr><td><table border=0 cellpadding=3 cellspacing=1 width=100%>
-				<tr bgcolor='.$config['lightborder'].'><td>
-				<FORM ACTION="" METHOD="GET">
-				<input type="hidden" name="subtopic" value="forum" />
-				<input type="hidden" name="action" value="moved_thread" />
-				<input type="hidden" name="id" value="'.$post['id'].'" />
-				<strong>THREAD:</strong> '.$post['post_topic'].'
-				<br/><strong>AUTHOR:</strong> '.$name[0].'
-				<br/><strong>BOARD:</strong> '.$sections[$post['section']]['name'].'<br/>
-				<br/><strong>Select the new board:&nbsp;</strong><SELECT NAME=section>';
-				foreach($sections as $id => $section) { echo '<OPTION value="'.$id.'">'.$section['name'].'</OPTION>'; } echo '</SELECT>
-				<INPUT TYPE="submit" VALUE="Move Thread"></FORM>
-				<form action="' . getForumBoardLink($post['section']) . '" method="POST">
-				<input type="submit" value="Cancel"></form></td></tr></table></td></tr></table>';*/
 			}
 		}
 		else
@@ -732,4 +793,98 @@ class Forum
 	static public function isModerator() {
 		return hasFlag(FLAG_CONTENT_FORUM) || admin();
 	}
+	
+	static public function add_board($name, $description, &$errors)
+	{
+		global $db;
+		if(isset($name[0]) && isset($description[0]))
+		{
+			$query = $db->select(TABLE_PREFIX . 'forum_boards', array('name' => $name));
+			
+			if($query === false)
+			{
+				$query =
+					$db->query(
+						'SELECT ' . $db->fieldName('ordering') .
+						' FROM ' . $db->tableName(TABLE_PREFIX . 'forum_boards') .
+						' ORDER BY ' . $db->fieldName('ordering') . ' DESC LIMIT 1'
+					);
+				
+				$ordering = 0;
+				if($query->rowCount() > 0) {
+					$query = $query->fetch();
+					$ordering = $query['ordering'] + 1;
+				}
+				$db->insert(TABLE_PREFIX . 'forum_boards', array('name' => $name, 'description' => $description, 'ordering' => $ordering));
+			}
+			else
+				$errors[] = 'Forum board with this name already exists.';
+		}
+		else
+			$errors[] = 'Please fill all inputs.';
+		
+		return !count($errors);
+	}
+	
+	static public function get_board($id) {
+		global $db;
+		return $db->select(TABLE_PREFIX . 'forum_boards', array('id' => $id));
+	}
+	
+	static public function update_board($id, $name, $description) {
+		global $db;
+		$db->update(TABLE_PREFIX . 'forum_boards', array('name' => $name, 'description' => $description), array('id' => $id));
+	}
+	
+	static public function delete_board($id, &$errors)
+	{
+		global $db;
+		if(isset($id))
+		{
+			if(self::get_board($id) !== false)
+				$db->delete(TABLE_PREFIX . 'forum_boards', array('id' => $id));
+			else
+				$errors[] = 'Forum board with id ' . $id . ' does not exists.';
+		}
+		else
+			$errors[] = 'id not set';
+		
+		return !count($errors);
+	}
+	
+	static public function toggleHidden_board($id, &$errors)
+	{
+		global $db;
+		if(isset($id))
+		{
+			$query = self::get_board($id);
+			if($query !== false)
+				$db->update(TABLE_PREFIX . 'forum_boards', array('hidden' => ($query['hidden'] == 1 ? 0 : 1)), array('id' => $id));
+			else
+				$errors[] = 'Forum board with id ' . $id . ' does not exists.';
+		}
+		else
+			$errors[] = 'id not set';
+		
+		return !count($errors);
+	}
+	
+	static public function move_board($id, $i, &$errors)
+	{
+		global $db;
+		$query = self::get_board($id);
+		if($query !== false)
+		{
+			$ordering = $query['ordering'] + $i;
+			$old_record = $db->select(TABLE_PREFIX . 'forum_boards', array('ordering' => $ordering));
+			if($old_record !== false)
+				$db->update(TABLE_PREFIX . 'forum_boards', array('ordering' => $query['ordering']), array('ordering' => $ordering));
+			
+			$db->update(TABLE_PREFIX . 'forum_boards', array('ordering' => $ordering), array('id' => $id));
+		}
+		else
+			$errors[] = 'Forum board with id ' . $id . ' does not exists.';
+		
+		return !count($errors);
+	}
 }
diff --git a/system/pages/news.php b/system/pages/news.php
index d37c2fe6..0bb32135 100644
--- a/system/pages/news.php
+++ b/system/pages/news.php
@@ -292,7 +292,7 @@ if(!$news_cached)
 			'account_players' => $account_players,
 			'category' => isset($category) ? $category : 0,
 			'categories' => $categories,
-			'forum_sections' => getForumSections(),
+			'forum_boards' => getForumBoards(),
 			'forum_section' => isset($forum_section) ? $forum_section : null
 		));
 	}
diff --git a/system/templates/account.change_comment.html.twig b/system/templates/account.change_comment.html.twig
new file mode 100644
index 00000000..dde79b80
--- /dev/null
+++ b/system/templates/account.change_comment.html.twig
@@ -0,0 +1,113 @@
+Here you can see and edit the information about your character.<br/>
+If you do not want to specify a certain field, just leave it blank.<br/><br/>
+<form action="?subtopic=accountmanagement&action=changecomment" method="post">
+	<div class="TableContainer" >
+		<table class="Table5" cellpadding="0" cellspacing="0">
+			<div class="CaptionContainer">
+				<div class="CaptionInnerContainer" >
+					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+					<div class="Text" >Edit Character Information</div>
+					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+				</div>
+			</div>
+			<tr>
+				<td>
+					<div class="InnerTableContainer">
+						<table style="width:100%;">
+							<tr>
+								<td>
+									<div class="TableShadowContainerRightTop">
+										<div class="TableShadowRightTop" style="background-image:url({{ template_path }}/images/content/table-shadow-rt.gif);" ></div>
+									</div>
+									<div class="TableContentAndRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-rm.gif);">
+										<div class="TableContentContainer">
+											<table class="TableContent" width="100%">
+												<tr>
+													<td class="LabelV">Name:</td>
+													<td style="width:80%;" >{{ player_name }}</td>
+												</tr>
+												<tr>
+													<td class="LabelV" >Hide Account:</td>
+													<td>
+														<input type="hidden" value="0" name="accountvisible">
+														<input type="checkbox" name="accountvisible" id="accountvisible" value="1" {% if player.getCustomField('hidden') == 1 %}checked="checked"{% endif %}>
+														<label for="accountvisible"> check to hide your account information</label>
+														{% if player.getCustomField('group_id') > 1 %} (you will be also hidden on the Team page!){% endif %}
+													</td>
+												</tr>
+											</table>
+										</div>
+									</div>
+									<div class="TableShadowContainer">
+										<div class="TableBottomShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bm.gif);">
+											<div class="TableBottomLeftShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bl.gif);"></div>
+											<div class="TableBottomRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-br.gif);"></div>
+										</div>
+									</div>
+								</td>
+							</tr>
+							<tr>
+								<td>
+									<div class="TableShadowContainerRightTop">
+										<div class="TableShadowRightTop" style="background-image:url({{ template_path }}/images/content/table-shadow-rt.gif);"></div>
+									</div>
+									<div class="TableContentAndRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-rm.gif);">
+										<div class="TableContentContainer">
+											<table class="TableContent" width="100%">
+												<tr>
+													<td class="LabelV" ><span>Comment:</span></td>
+													<td style="width:80%;"><textarea name="comment" rows="10" cols="50" wrap="virtual">{{ player.getCustomField('comment')|raw }}</textarea><br>[max. length: 2000 chars, 50 lines (ENTERs)]</td>
+												</tr>
+											</table>
+										</div>
+									</div>
+									<div class="TableShadowContainer">
+										<div class="TableBottomShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bm.gif);">
+											<div class="TableBottomLeftShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-bl.gif);"></div>
+											<div class="TableBottomRightShadow" style="background-image:url({{ template_path }}/images/content/table-shadow-br.gif);" ></div>
+										</div>
+									</div>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<br/>
+	<table style="width:100%">
+		<tr align="center">
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td style="border:0px;">
+							<input type="hidden" name="name" value="{{ player.getName() }}">
+							<input type="hidden" name="changecommentsave" value="1">
+							<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div>
+							</div>
+						</td>
+					</tr>
+</form>
+				</table>
+			</td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<form action="?subtopic=accountmanagement" method="post">
+						<tr>
+							<td style="border:0px;">
+								<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div>
+								</div>
+							</td>
+						</tr>
+					</form>
+				</table>
+			</td>
+		</tr>
+	</table>
\ No newline at end of file
diff --git a/system/templates/account.change_name.html.twig b/system/templates/account.change_name.html.twig
new file mode 100644
index 00000000..f0affbce
--- /dev/null
+++ b/system/templates/account.change_name.html.twig
@@ -0,0 +1,76 @@
+To change a name of character select player and choose a new name.<br/>
+<font color="red">Change name cost {{ config.account_change_character_name_points }} premium points. You have {{ points }} premium points.</font><br/><br/>
+<form action="?subtopic=accountmanagement&action=changename" method="post">
+	<input type="hidden" name="changenamesave" value="1">
+	<div class="TableContainer">
+		<table class="Table1" cellpadding="0" cellspacing="0">
+			<div class="CaptionContainer">
+				<div class="CaptionInnerContainer" >
+					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+					<div class="Text" >Change Name</div>
+					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+				</div>
+			</div>
+			<tr>
+				<td>
+					<div class="InnerTableContainer" >
+						<table style="width:100%;" >
+							<tr>
+                                <td class="LabelV" ><span>Character:</span></td>
+								<td style="width:90%;" >
+									<select name="player_id">
+										{% for player in account_logged.getPlayersList() %}
+										<option value="{{ player.getId() }}">{{ player.getName() }}</option>
+										{% endfor %}
+									</select>
+								</td>
+							</tr>
+							<tr>
+                                <td class="LabelV" ><span>New Name:</span></td>
+								<td>
+									<input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" >
+									<font size="1" face="verdana,arial,helvetica">
+										<div id="name_check">Please enter your character name.</div>
+									</font>
+								</td>
+							</tr>
+						</table>
+					</div>
+				</td>
+			</tr>
+		</table>
+	</div>
+	<br/>
+	<table style="width:100%" >
+		<tr align="center">
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<tr>
+						<td style="border:0px;">
+							<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div>
+							</div>
+						</td>
+					</tr>
+</form>
+				</table>
+			</td>
+			<td>
+				<table border="0" cellspacing="0" cellpadding="0">
+					<form action="?subtopic=accountmanagement" method="post">
+						<tr>
+							<td style="border:0px;">
+								<div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div>
+								</div>
+							</td>
+						</tr>
+					</form>
+				</table>
+			</td>
+		</tr>
+	</table>
\ No newline at end of file
diff --git a/system/templates/account.generate_new_recovery_key.html.twig b/system/templates/account.generate_new_recovery_key.html.twig
new file mode 100644
index 00000000..b65f0eb3
--- /dev/null
+++ b/system/templates/account.generate_new_recovery_key.html.twig
@@ -0,0 +1,61 @@
+To generate new recovery key for your account please enter your password.<br/>
+<font color="red"><b>New recovery key cost {{ config.generate_new_reckey_price }} Premium Points.</font> You have {{ points }} premium points. You will receive e-mail with this recovery key.</b><br/>
+<form action="?subtopic=accountmanagement&action=newreckey" method="post">
+	<input type="hidden" name="registeraccountsave" value="1">
+	<div class="TableContainer" >
+        <table class="Table1" cellpadding="0" cellspacing="0">
+            <div class="CaptionContainer">
+                <div class="CaptionInnerContainer">
+                    <span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+                    <span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+                    <span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+                    <span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+                    <div class="Text" >Generate recovery key</div>
+                    <span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);"></span>
+                    <span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);"></span>
+                    <span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+                    <span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);"></span>
+                </div>
+            </div>
+            <tr>
+                <td>
+                    <div class="InnerTableContainer">
+                        <table style="width:100%;">
+                            <tr>
+                                <td class="LabelV" ><span>Password:</span></td>
+                                <td><input type="password" name="reg_password" size="30" maxlength="29" ></td>
+                            </tr>
+                        </table>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    <br/>
+    <table style="width:100%">
+        <tr align="center">
+            <td>
+                <table border="0" cellspacing="0" cellpadding="0">
+                    <tr>
+                        <td style="border:0px;">
+                            <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="{{ template_path }}/images/buttons/_sbutton_submit.gif" ></div>
+                            </div>
+                        </td>
+                    </tr>
+</form>
+                </table>
+            </td>
+            <td>
+                <table border="0" cellspacing="0" cellpadding="0">
+                    <form action="?subtopic=accountmanagement" method="post">
+                        <tr>
+                            <td style="border:0px;">
+                                <div class="BigButton" style="background-image:url({{ template_path }}/images/buttons/sbutton.gif)"><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url({{ template_path }}/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Back" alt="Back" src="{{ template_path }}/images/buttons/_sbutton_back.gif" ></div>
+                                </div>
+                            </td>
+                        </tr>
+                    </form>
+                </table>
+            </td>
+        </tr>
+    </table>
\ No newline at end of file
diff --git a/system/templates/account.register.html.twig b/system/templates/account.generate_recovery_key.html.twig
similarity index 100%
rename from system/templates/account.register.html.twig
rename to system/templates/account.generate_recovery_key.html.twig
diff --git a/system/templates/commands.form.html.twig b/system/templates/commands.form.html.twig
index f6ba72be..6a7ded15 100644
--- a/system/templates/commands.form.html.twig
+++ b/system/templates/commands.form.html.twig
@@ -4,10 +4,10 @@
 	{% endif %}
 	<table width="100%" border="0" cellspacing="1" cellpadding="4">
 		<tr>
-			<td bgcolor="{{ vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} command</b></td>
+			<td bgcolor="{{ config.vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} command</b></td>
 		</tr>
 		<tr>
-			<td bgcolor="{{ darkborder }}">
+			<td bgcolor="{{ config.darkborder }}">
 				<table border="0" cellpadding="1">
 					<tr>
 						<td>Words:</td>
diff --git a/system/templates/commands.html.twig b/system/templates/commands.html.twig
index 7922e891..381e0020 100644
--- a/system/templates/commands.html.twig
+++ b/system/templates/commands.html.twig
@@ -1,9 +1,9 @@
 <table width="100%" border="0" cellspacing="1" cellpadding="4">
 	<tr>
-		<td bgcolor="{{ vdarkborder }}" class="white" width="150"><b>Words</b></td>
-		<td bgcolor="{{ vdarkborder }}" class="white"><b>Description</b></td>
+		<td bgcolor="{{ config.vdarkborder }}" class="white" width="150"><b>Words</b></td>
+		<td bgcolor="{{ config.vdarkborder }}" class="white"><b>Description</b></td>
 		{% if canEdit %}
-		<td bgcolor="{{ vdarkborder }}" class="white"><b>Options</b></td>
+		<td bgcolor="{{ config.vdarkborder }}" class="white"><b>Options</b></td>
 		{% endif %}
 	</tr>
 	{% set i = 0 %}
diff --git a/system/templates/forum.add_board.html.twig b/system/templates/forum.add_board.html.twig
new file mode 100644
index 00000000..5aeb2490
--- /dev/null
+++ b/system/templates/forum.add_board.html.twig
@@ -0,0 +1,26 @@
+<form method="post" action="{{ link }}">
+	{% if action == 'edit_board' %}
+	<input type="hidden" name="id" value="{{ id }}" />
+	{% endif %}
+	<table width="100%" border="0" cellspacing="1" cellpadding="4">
+		<tr>
+			<td bgcolor="{{ config.vdarkborder }}" class="white"><b>{% if action == 'edit' %}Edit{% else %}Add{% endif %} board</b></td>
+		</tr>
+		<tr>
+			<td bgcolor="{{ config.darkborder }}">
+				<table border="0" cellpadding="1">
+					<tr>
+						<td>Name:</td>
+						<td><input name="name" value="{% if name is not null %}{{ name }}{% endif %}" size="29" maxlength="29"/></td>
+					<tr>
+						<td>Description:</td>
+						<td><textarea name="description" maxlength="300" cols="50" rows="5">{% if description is not null %}{{ description }}{% endif %}</textarea></td>
+					<tr/>
+					<tr>
+						<td colspan="2" align="center"><input type="submit" value="Submit"/>
+					</tr>
+				</table>
+			</td>
+		</tr>
+	</table>
+</form>
\ No newline at end of file
diff --git a/system/templates/forum.boards.html.twig b/system/templates/forum.boards.html.twig
index 5685493a..532918b0 100644
--- a/system/templates/forum.boards.html.twig
+++ b/system/templates/forum.boards.html.twig
@@ -13,6 +13,11 @@
 		<td align="center">
 			<font color="white" size="1"><b>Last Post</b></font>
 		</td>
+		{% if canEdit %}
+			<td>
+				<font color="white" size="1"><b>Options</b></font>
+			</td>
+		{% endif %}
 	</tr>
 	{% set i = 0 %}
 	{% for board in boards %}
@@ -30,6 +35,29 @@
 		No posts
 		{% endif %}
 		</td>
+		{% if canEdit %}
+			<td>
+				<a href="?subtopic=forum&action=edit_board&id={{ board.id }}" title="Edit">
+					<img src="images/edit.png"/>Edit
+				</a>
+				<a id="delete" href="?subtopic=forum&action=delete_board&id={{ board.id }}" onclick="return confirm('Are you sure?');" title="Delete">
+					<img src="images/del.png"/>Delete
+				</a>
+				<a href="?subtopic=forum&action=hide_board&id={{ board.id }}" title="{% if board.hidden != 1 %}Hide{% else %}Show{% endif %}">
+					<img src="images/{% if board.hidden != 1 %}success{% else %}error{% endif %}.png"/>{% if board.hidden != 1 %}Hide{% else %}Show{% endif %}
+				</a>
+				{% if i != 1 %}
+					<a href="?subtopic=forum&action=moveup_board&id={{ board.id }}" title="Move up">
+						<img src="images/icons/arrow_up.gif"/>Move up
+					</a>
+				{% endif %}
+				{% if i != last %}
+					<a href="?subtopic=forum&action=movedown_board&id={{ board.id }}" title="Move down">
+						<img src="images/icons/arrow_down.gif"/>Move down
+					</a>
+				{% endif %}
+			</td>
+		{% endif %}
 	</tr>
 	{% endfor %}
 </table>
\ No newline at end of file
diff --git a/system/templates/mail.account.register.html.twig b/system/templates/mail.account.register.html.twig
new file mode 100644
index 00000000..0b684b54
--- /dev/null
+++ b/system/templates/mail.account.register.html.twig
@@ -0,0 +1,3 @@
+<h3>New recovery key!</h3>
+<p>You or someone else generated recovery key to your account on server <a href="{{ constant('BASE_URL') }}"><b>{{ config.lua.serverName }}</b></a>.</p>
+<p>Recovery key: <b>{{ recovery_key }}</b></p>
\ No newline at end of file
diff --git a/system/templates/news.add.html.twig b/system/templates/news.add.html.twig
index 54a48138..ac6f532d 100644
--- a/system/templates/news.add.html.twig
+++ b/system/templates/news.add.html.twig
@@ -96,7 +96,7 @@
 			<td>
 				<select name="forum_section">
 					<option value="-1">None</option>
-						{% for section in forum_sections %}
+						{% for section in forum_boards %}
 					<option value="{{ section.id }}" {% if forum_section is defined and forum_section == section.id %}checked="yes"{% endif %}/>{{ section.name }}</option>
 						{% endfor %}
 				</select>
diff --git a/system/templates/success.html.twig b/system/templates/success.html.twig
index c5b94bb0..7dcfca7f 100644
--- a/system/templates/success.html.twig
+++ b/system/templates/success.html.twig
@@ -27,6 +27,9 @@
 	</table>
 </div>
 <br/>
+{% if custom_buttons is defined %}
+{{ custom_buttons|raw }}
+{% else %}
 <center>
 	<table border="0" cellspacing="0" cellpadding="0">
 		<form action="?subtopic=accountmanagement" method="post">
@@ -39,3 +42,4 @@
 		</form>
 	</table>
 </center>
+{% endif %}
diff --git a/templates/kathrine/account.change_name.html.twig b/templates/kathrine/account.change_name.html.twig
new file mode 100644
index 00000000..704a0f0e
--- /dev/null
+++ b/templates/kathrine/account.change_name.html.twig
@@ -0,0 +1,44 @@
+To change a name of character select player and choose a new name.<br/>
+<font color="red">Change name cost {{ config.account_change_character_name_points }} premium points. You have {{ points }} premium points.</font><br/><br/>
+<form action="?subtopic=accountmanagement&action=changename" method="post">
+	<input type="hidden" name="changenamesave" value="1">
+	<h3>Change Name</h3>
+	<table style="width:100%;">
+		<tr>
+			<td><span >Character:</td>
+			<td style="width:90%;" >
+				<select name="player_id">
+					{% for player in account_logged.getPlayersList() %}
+						<option value="{{ player.getId() }}">{{ player.getName() }}</option>
+					{% endfor %}
+				</select>
+			</td>
+		</tr>
+		<tr>
+			<td ><span>New Name:</td>
+			<td>
+				<input type="text" name="name" id="name" onkeyup="checkName();" size="25" maxlength="25" >
+				<font size="1" face="verdana,arial,helvetica">
+					<div id="name_check">Please enter your character name.</div>
+				</font>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="2">
+				<input type="submit" name="Submit" value="Submit"/>
+			</td>
+		</tr>
+	</table>
+</form>
+<br/>
+<div style="text-align: center; margin: 0 auto;">
+	<table border="0" cellspacing="0" cellpadding="0">
+		<form action="?subtopic=accountmanagement" method="post">
+			<tr>
+				<td style="border:0px; text-align: center;">
+					<input type="submit" name="Back" value="Back"/>
+				</td>
+			</tr>
+		</form>
+	</table>
+</div>
\ No newline at end of file