diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php
index bc005b705a6d82a48da3e52424da8813ec998884..ceaf6b33226fb8085a9ae0c687329ad7f9ede40a 100644
--- a/Classes/Controller/MailController.php
+++ b/Classes/Controller/MailController.php
@@ -24,6 +24,7 @@ namespace SGalinski\SgMail\Controller;
  *
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
+
 use SGalinski\SgMail\Domain\Model\Template;
 use SGalinski\SgMail\Service\BackendService;
 use SGalinski\SgMail\Service\MailTemplateService;
@@ -40,6 +41,22 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
  * Controller for the mail templating service module
  */
 class MailController extends ActionController {
+	// Fluid variables
+	const FLUID_VAR_CONTENT_LEFT = 'contentLeft';
+	const FLUID_VAR_FROM_NAME_LEFT = 'fromNameLeft';
+	const FLUID_VAR_FROM_MAIL_LEFT = 'fromMailLeft';
+	const FLUID_VAR_CC_LEFT = 'ccLeft';
+	const FLUID_VAR_BCC_LEFT = 'bccLeft';
+	const FLUID_VAR_REPLY_TO_LEFT = 'replyToLeft';
+	const FLUID_SUBJECT_LEFT = 'subjectLeft';
+	const FLUID_VAR_CONTENT_RIGHT = 'contentRight';
+	const FLUID_VAR_FROM_NAME_RIGHT = 'fromNameRight';
+	const FLUID_VAR_FROM_MAIL_RIGHT = 'fromMailRight';
+	const FLUID_VAR_CC_RIGHT = 'ccRight';
+	const FLUID_VAR_BCC_RIGHT = 'bccRight';
+	const FLUID_VAR_REPLY_TO_RIGHT = 'replyToRight';
+	const FLUID_SUBJECT_RIGHT = 'subjectRight';
+
 	/**
 	 * DocHeaderComponent
 	 *
@@ -71,17 +88,19 @@ class MailController extends ActionController {
 	 * @param string $selectedExtension
 	 * @param string $selectedLanguageLeft
 	 * @param string $selectedLanguageRight
-	 * @param string $selectedExtensionKey
-	 * @param string $selectedTemplateKey
 	 * @throws \InvalidArgumentException
 	 * @throws \UnexpectedValueException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
 	 */
 	public function indexAction(
 		$selectedTemplate = NULL, $selectedExtension = NULL, $selectedLanguageLeft = NULL,
-		$selectedLanguageRight = NULL, $selectedExtensionKey = NULL, $selectedTemplateKey = NULL
+		$selectedLanguageRight = NULL
 	) {
+		$siteRootId = BackendService::getSiteRoot((int) GeneralUtility::_GP('id'));
+
 		if (!($this->session instanceof PhpSession)) {
-			$this->session = $this->objectManager->get('SGalinski\SgMail\Session\PhpSession');
+			$this->session = $this->objectManager->get(PhpSession::class);
 			$this->session->setSessionKey('sg_mail_controller_session');
 		}
 
@@ -92,76 +111,52 @@ class MailController extends ActionController {
 			$this->redirect('empty');
 		}
 
-		$activatedLanguages = $this->languageRepository->findSelected();
-		$languages = ['en'];
-		foreach ($activatedLanguages as $language) {
-			$languages[] = $language->getLocale();
-		}
+		$languages = BackendService::getLanguages();
 
 		$this->view->assign('languages', $languages);
 		$this->view->assign('templates', MailTemplateService::getRegisterArray());
 
-		// get last selected languages
-		if ($selectedLanguageLeft === NULL) {
-			$selectedLanguageLeft = $this->session->getDataByKey('selectedLanguageLeft');
-			if ($selectedLanguageLeft === NULL) {
-				$selectedLanguageLeft = $languages[0];
-			}
-		}
-
-		if ($selectedLanguageRight === NULL) {
-			$selectedLanguageRight = $this->session->getDataByKey('selectedLanguageRight');
-			if ($selectedLanguageRight === NULL) {
-				if (isset($languages[1])) {
-					$selectedLanguageRight = $languages[1];
-				} else {
-					$selectedLanguageRight = $languages[0];
-				}
-			}
-		}
+		// get language selection or read from cache or get default
+		$selectedLanguages = BackendService::getSelectedLanguages(
+			$selectedLanguageLeft, $selectedLanguageRight, $this->session, $languages
+		);
 
 		if ($selectedTemplate === NULL || $selectedTemplate === '') {
 			$selectedExtension = key($registerArray);
 			$selectedTemplate = key($registerArray[$selectedExtension]);
 		}
 
-		$selectedTemplateArray = $registerArray[$selectedExtension][$selectedTemplate];
-		$this->session->setDataByKey('selectedLanguageLeft', $selectedLanguageLeft);
-		$this->session->setDataByKey('selectedLanguageRight', $selectedLanguageRight);
-		$templateLeft = $this->templateRepository->findOneByTemplate(
-			$selectedExtension, $selectedTemplate, $selectedLanguageLeft
-		);
-		$templateRight = $this->templateRepository->findOneByTemplate(
-			$selectedExtension, $selectedTemplate, $selectedLanguageRight
+		$selectedTemplates = BackendService::getSelectedTemplates(
+			$selectedExtension, $selectedTemplate, $selectedLanguages, $this->session, $siteRootId
 		);
 
-		if ($templateLeft !== NULL) {
-			$this->view->assign('contentLeft', $templateLeft->getContent());
-			$this->view->assign('fromNameLeft', $templateLeft->getFromName());
-			$this->view->assign('fromMailLeft', $templateLeft->getFromMail());
-			$this->view->assign('ccLeft', $templateLeft->getCc());
-			$this->view->assign('bccLeft', $templateLeft->getBcc());
-			$this->view->assign('replyToLeft', $templateLeft->getReplyTo());
+		if ($selectedTemplates['left'] instanceof Template) {
+			$this->view->assign(self::FLUID_VAR_CONTENT_LEFT, $selectedTemplates['left']->getContent());
+			$this->view->assign(self::FLUID_VAR_FROM_NAME_LEFT, $selectedTemplates['left']->getFromName());
+			$this->view->assign(self::FLUID_VAR_FROM_MAIL_LEFT, $selectedTemplates['left']->getFromMail());
+			$this->view->assign(self::FLUID_VAR_CC_LEFT, $selectedTemplates['left']->getCc());
+			$this->view->assign(self::FLUID_VAR_BCC_LEFT, $selectedTemplates['left']->getBcc());
+			$this->view->assign(self::FLUID_VAR_REPLY_TO_LEFT, $selectedTemplates['left']->getReplyTo());
 		} else {
 			$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
-			$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageLeft . '.' . 'template.html';
+			$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['left'] . '.' . 'template.html';
 			if (file_exists($defaultTemplateFile)) {
-				$this->view->assign('contentLeft', file_get_contents($defaultTemplateFile));
+				$this->view->assign(self::FLUID_VAR_CONTENT_LEFT, file_get_contents($defaultTemplateFile));
 			}
 		}
 
-		if ($templateRight !== NULL) {
-			$this->view->assign('contentRight', $templateRight->getContent());
-			$this->view->assign('fromNameRight', $templateRight->getFromName());
-			$this->view->assign('fromMailRight', $templateRight->getFromMail());
-			$this->view->assign('ccRight', $templateRight->getCc());
-			$this->view->assign('bccRight', $templateRight->getBcc());
-			$this->view->assign('replyToRight', $templateRight->getReplyTo());
+		if ($selectedTemplates['right'] instanceof Template) {
+			$this->view->assign(self::FLUID_VAR_CONTENT_RIGHT, $selectedTemplates['right']->getContent());
+			$this->view->assign(self::FLUID_VAR_FROM_NAME_RIGHT, $selectedTemplates['right']->getFromName());
+			$this->view->assign(self::FLUID_VAR_FROM_MAIL_RIGHT, $selectedTemplates['right']->getFromMail());
+			$this->view->assign(self::FLUID_VAR_CC_RIGHT, $selectedTemplates['right']->getCc());
+			$this->view->assign(self::FLUID_VAR_BCC_RIGHT, $selectedTemplates['right']->getBcc());
+			$this->view->assign(self::FLUID_VAR_REPLY_TO_RIGHT, $selectedTemplates['right']->getReplyTo());
 		} else {
 			$defaultTemplatePath = $registerArray[$selectedExtension][$selectedTemplate]['templatePath'];
-			$defaultTemplateFile = $defaultTemplatePath . $selectedLanguageRight . '.' . 'template.html';
+			$defaultTemplateFile = $defaultTemplatePath . $selectedLanguages['right'] . '.' . 'template.html';
 			if (file_exists($defaultTemplateFile)) {
-				$this->view->assign('contentRight', file_get_contents($defaultTemplateFile));
+				$this->view->assign(self::FLUID_VAR_CONTENT_RIGHT, file_get_contents($defaultTemplateFile));
 			}
 		}
 
@@ -169,51 +164,33 @@ class MailController extends ActionController {
 
 		if (is_array($subject)) {
 			$this->view->assign(
-				'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() :
-				$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageLeft]
+				self::FLUID_SUBJECT_LEFT, $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
+				$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['left']]
 			);
 
 			$this->view->assign(
-				'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() :
-				$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguageRight]
+				self::FLUID_SUBJECT_RIGHT, $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
+				$registerArray[$selectedExtension][$selectedTemplate]['subject'][$selectedLanguages['right']]
 			);
 		} else {
-			$langFile = GeneralUtility::readLLfile(
-				'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguageLeft
+			$translatedSubjects = BackendService::getTranslatedTemplateSubject(
+				$subject, $selectedExtension, $selectedLanguages
 			);
-			$translatedSubject = '';
-
-			if ($langFile[$selectedLanguageLeft][$subject][0]) {
-				$translatedSubject = $langFile[$selectedLanguageLeft][$subject][0]['target'];
-			} else {
-				$translatedSubject = $langFile['default'][$subject][0]['target'];
-			}
 
 			$this->view->assign(
-				'subjectLeft', $templateLeft !== NULL ? $templateLeft->getSubject() :
-				$translatedSubject
-			);
-
-			$langFile = GeneralUtility::readLLfile(
-				'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguageRight
+				self::FLUID_SUBJECT_LEFT, $selectedTemplates['left'] !== NULL ? $selectedTemplates['left']->getSubject() :
+				$translatedSubjects['left']
 			);
-			$translatedSubject = '';
-
-			if ($langFile[$selectedLanguageLeft][$subject][0][$subject]) {
-				$translatedSubject = $langFile[$selectedLanguageRight][$subject][0]['target'];
-			} else {
-				$translatedSubject = $langFile['default'][$subject][0]['target'];
-			}
 
 			$this->view->assign(
-				'subjectRight', $templateRight !== NULL ? $templateRight->getSubject() :
-				$translatedSubject
+				self::FLUID_SUBJECT_RIGHT, $selectedTemplates['right'] !== NULL ? $selectedTemplates['right']->getSubject() :
+				$translatedSubjects['right']
 			);
 		}
 
 		$templateDescription = $registerArray[$selectedExtension][$selectedTemplate]['description'];
 		if (is_array($templateDescription)) {
-			$templateDescription = $templateDescription[$selectedLanguageLeft];
+			$templateDescription = $templateDescription[$selectedLanguages['left']];
 		} else {
 			$templateDescription = LocalizationUtility::translate(
 				$templateDescription, $selectedExtension
@@ -231,20 +208,13 @@ class MailController extends ActionController {
 
 			$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
 			$this->view->assign('templateDescription', $templateDescription);
-			$this->view->assign('selectedTemplate', $selectedTemplateArray);
+			$this->view->assign('selectedTemplate', $registerArray[$selectedExtension][$selectedTemplate]);
 			$this->view->assign('selectedTemplateKey', $selectedTemplate);
 			$this->view->assign('selectedExtensionKey', $selectedExtension);
-			$this->view->assign('selectedLanguageLeft', $selectedLanguageLeft);
-			$this->view->assign('selectedLanguageRight', $selectedLanguageRight);
+			$this->view->assign('selectedLanguageLeft', $selectedLanguages['left']);
+			$this->view->assign('selectedLanguageRight', $selectedLanguages['right']);
 			$this->view->assign('mode', 'editor');
-		} else {
-			$this->view->assign('noPage', '1');
-			$this->addFlashMessage(
-				LocalizationUtility::translate('backend.notice.OtherPages', 'SgMail'), '', FlashMessage::INFO
-			);
-			$this->view->assign('pages', BackendService::getPages());
 		}
-
 	}
 
 	/**
@@ -269,6 +239,11 @@ class MailController extends ActionController {
 	 * @param string $ccRight
 	 * @param string $bccRight
 	 * @param string $replyToRight
+	 * @throws \InvalidArgumentException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
 	 */
 	public function saveAction(
 		$contentLeft = NULL, $contentRight = NULL, $selectedExtension = NULL, $selectedTemplate = NULL,
@@ -307,14 +282,19 @@ class MailController extends ActionController {
 	 * @param string $selectedBcc
 	 * @param string $selectedReplyTo
 	 * @return Template $template
+	 * @throws \InvalidArgumentException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException
 	 */
 	private function saveTemplate(
 		$selectedExtension, $selectedTemplate, $selectedLanguage, $selectedContent, $selectedSubject,
 		$selectedFromName, $selectedFromMail, $selectedCc, $selectedBcc, $selectedReplyTo
 	) {
+		$siteRootId = BackendService::getSiteRoot((int) GeneralUtility::_GP('id'));
+
 		/** @var Template $template */
 		$template = $this->templateRepository->findOneByTemplate(
-			$selectedExtension, $selectedTemplate, $selectedLanguage
+			$selectedExtension, $selectedTemplate, $selectedLanguage, $siteRootId
 		);
 
 		$templateAlreadyExists = TRUE;
@@ -334,6 +314,7 @@ class MailController extends ActionController {
 		$template->setCc($selectedCc);
 		$template->setBcc($selectedBcc);
 		$template->setReplyTo($selectedReplyTo);
+		$template->setSiteRootId($siteRootId);
 
 		if ($templateAlreadyExists) {
 			$this->templateRepository->update($template);
@@ -353,6 +334,10 @@ class MailController extends ActionController {
 	 * @param string $selectedExtensionKey
 	 * @param string $selectedLanguageLeft
 	 * @param string $selectedLanguageRight
+	 * @throws \InvalidArgumentException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
 	 */
 	public function sendTestMailAction(
 		$emailAddress, $selectedExtensionKey, $selectedTemplateKey, $selectedLanguageLeft, $selectedLanguageRight
@@ -403,6 +388,9 @@ class MailController extends ActionController {
 	 * @param string $template
 	 * @param string $extensionKey
 	 * @param string $language
+	 * @throws \InvalidArgumentException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
 	 */
 	public function resetAction($template, $extensionKey, $language = '') {
 		$this->templateRepository->deleteTemplate($extensionKey, $template, $language);
diff --git a/Classes/Controller/QueueController.php b/Classes/Controller/QueueController.php
index a6ddd72fe21400ab83383203dfe1aa6d997da190..c67adeb953610e503ee3855b9f546338bfa9f925 100644
--- a/Classes/Controller/QueueController.php
+++ b/Classes/Controller/QueueController.php
@@ -24,12 +24,11 @@ namespace SGalinski\SgMail\Controller;
  *
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
+
+use SGalinski\SgMail\Service\BackendService;
 use SGalinski\SgMail\Service\MailTemplateService;
-use TYPO3\CMS\Backend\Template\Components\ButtonBar;
 use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
-use TYPO3\CMS\Core\Imaging\Icon;
-use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
@@ -60,6 +59,8 @@ class QueueController extends ActionController {
 	/**
 	 * @param string $selectedTemplate
 	 * @param string $selectedExtension
+	 * @throws \InvalidArgumentException
+	 * @throws \UnexpectedValueException
 	 */
 	public function indexAction($selectedTemplate = NULL, $selectedExtension = NULL) {
 		$registerArray = MailTemplateService::getRegisterArray();
@@ -68,32 +69,40 @@ class QueueController extends ActionController {
 			$selectedExtension = key($registerArray);
 			$selectedTemplate = key($registerArray[$selectedExtension]);
 		}
-		$queue = $this->mailRepository->findAllEntries($selectedExtension, $selectedTemplate);
+
+		$siteRootId = BackendService::getSiteRoot((int) GeneralUtility::_GP('id'));
+		$queue = $this->mailRepository->findAllEntries($selectedExtension, $selectedTemplate, $siteRootId);
 
 		// create doc header component
 		$pageUid = (int) GeneralUtility::_GP('id');
 		$pageInfo = BackendUtility::readPageAccess($pageUid, $GLOBALS['BE_USER']->getPagePermsClause(1));
-		$this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class);
 
-		$this->docHeaderComponent->setMetaInformation($pageInfo);
-		$this->makeButtons();
-		$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
+		if ($pageInfo) {
+			$this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class);
 
-		$this->view->assign('selectedTemplateKey', $selectedTemplate);
-		$this->view->assign('selectedExtensionKey', $selectedExtension);
-		$this->view->assign('templates', $registerArray);
-		$this->view->assign('queue', $queue);
-		$this->view->assign('mode', 'queue');
+			$this->docHeaderComponent->setMetaInformation($pageInfo);
+			$this->view->assign('docHeader', $this->docHeaderComponent->docHeaderContent());
+			BackendService::makeButtons($this->docHeaderComponent, $this->request);
+
+			$this->view->assign('selectedTemplateKey', $selectedTemplate);
+			$this->view->assign('selectedExtensionKey', $selectedExtension);
+			$this->view->assign('templates', $registerArray);
+			$this->view->assign('queue', $queue);
+			$this->view->assign('mode', 'queue');
+		}
 	}
 
 	/**
 	 * send or resend a mail in the queue
 	 *
 	 * @param int $uid
-	 * @param string $selectedExtension
-	 * @param string $selectedTemplate
+	 * @throws \InvalidArgumentException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\StopActionException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\UnknownObjectException
+	 * @throws \TYPO3\CMS\Extbase\Mvc\Exception\UnsupportedRequestTypeException
 	 */
-	public function sendMailAction($uid, $selectedExtension, $selectedTemplate) {
+	public function sendMailAction($uid) {
 		$mailService = new MailTemplateService();
 		$mailService->sendMailFromQueue($uid);
 
@@ -102,36 +111,4 @@ class QueueController extends ActionController {
 		$arguments = $this->request->getArguments();
 		$this->redirect('index', NULL, NULL, $arguments);
 	}
-
-	/**
-	 * create buttons for the backend module header
-	 */
-	private function makeButtons() {
-		/** @var ButtonBar $buttonBar */
-		$buttonBar = $this->docHeaderComponent->getButtonBar();
-
-		/** @var IconFactory $iconFactory */
-		$iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-
-		// Refresh
-		$refreshButton = $buttonBar->makeLinkButton()
-			->setHref(GeneralUtility::getIndpEnv('REQUEST_URI'))
-			->setTitle(LocalizationUtility::translate('LLL:EXT:lang/locallang_core.xlf:labels.reload', ''))
-			->setIcon($iconFactory->getIcon('actions-refresh', Icon::SIZE_SMALL));
-		$buttonBar->addButton($refreshButton, ButtonBar::BUTTON_POSITION_RIGHT);
-
-		// shortcut button
-		$shortcutButton = $buttonBar->makeShortcutButton()
-			->setModuleName($this->request->getPluginName())
-			->setGetVariables(
-				[
-					'id',
-					'M'
-				]
-			)
-			->setSetVariables([]);
-
-		$buttonBar->addButton($shortcutButton, ButtonBar::BUTTON_POSITION_RIGHT);
-		$this->docHeaderComponent->getButtonBar();
-	}
 }
diff --git a/Classes/Domain/Model/Mail.php b/Classes/Domain/Model/Mail.php
index 0d0f46def35f76932e057134841b15226e62cb69..9db628c5d703ccd7863da3cacb7f2dad318b4b27 100644
--- a/Classes/Domain/Model/Mail.php
+++ b/Classes/Domain/Model/Mail.php
@@ -39,6 +39,11 @@ class Mail extends AbstractEntity {
 	const PRIORITY_HIGH = 150;
 	const PRIORITY_HIGHEST = 200;
 
+	/**
+	 * @var int
+	 */
+	protected $siteRootId = 0;
+
 	/**
 	 * @var string
 	 */
@@ -291,4 +296,18 @@ class Mail extends AbstractEntity {
 	public function setSendingTime($sendingTime) {
 		$this->sendingTime = $sendingTime;
 	}
+
+	/**
+	 * @return int
+	 */
+	public function getSiteRootId() {
+		return $this->siteRootId;
+	}
+
+	/**
+	 * @param int $siteRootId
+	 */
+	public function setSiteRootId($siteRootId) {
+		$this->siteRootId = (int) $siteRootId;
+	}
 }
diff --git a/Classes/Domain/Model/Template.php b/Classes/Domain/Model/Template.php
index 6df62cfb0f0aa116a4559176f9e35c47d065e543..150033895a51a004ed060b85d4ce178d8fa0d2d2 100644
--- a/Classes/Domain/Model/Template.php
+++ b/Classes/Domain/Model/Template.php
@@ -32,6 +32,11 @@ use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
  * Template domain model
  */
 class Template extends AbstractEntity {
+	/**
+	 * @var int
+	 */
+	protected $siteRootId = 0;
+
 	/**
 	 * @var string
 	 */
@@ -221,4 +226,18 @@ class Template extends AbstractEntity {
 	public function setReplyTo($replyTo) {
 		$this->replyTo = trim($replyTo);
 	}
+
+	/**
+	 * @return int
+	 */
+	public function getSiteRootId() {
+		return $this->siteRootId;
+	}
+
+	/**
+	 * @param int $siteRootId
+	 */
+	public function setSiteRootId($siteRootId) {
+		$this->siteRootId = (int) $siteRootId;
+	}
 }
diff --git a/Classes/Domain/Repository/MailRepository.php b/Classes/Domain/Repository/MailRepository.php
index fefae2383ac4dfed84de47ac87106c4eac53383d..a611a204da83ee3c7ad405fb5514b7afc07ab2aa 100644
--- a/Classes/Domain/Repository/MailRepository.php
+++ b/Classes/Domain/Repository/MailRepository.php
@@ -55,10 +55,11 @@ class MailRepository extends AbstractRepository {
 	 *
 	 * @param string $extensionKey
 	 * @param string $templateName
+	 * @param int $siteroot
 	 * @param int $limit
 	 * @return array|QueryResultInterface
 	 */
-	public function findAllEntries($extensionKey, $templateName, $limit = NULL) {
+	public function findAllEntries($extensionKey, $templateName, $siteroot = 0, $limit = NULL) {
 		$query = $this->createQuery();
 		if ($limit) {
 			$query->setLimit($limit);
@@ -66,6 +67,7 @@ class MailRepository extends AbstractRepository {
 
 		$constraintsAnd[] = $query->equals('extension_key', $extensionKey);
 		$constraintsAnd[] = $query->equals('template_name', $templateName);
+		$constraintsAnd[] = $query->equals('site_root_id', (int) $siteroot);
 
 		$query->setOrderings(['tstamp' => Query::ORDER_DESCENDING]);
 		return $query->matching($query->logicalAnd($constraintsAnd))->execute(TRUE);
diff --git a/Classes/Domain/Repository/TemplateRepository.php b/Classes/Domain/Repository/TemplateRepository.php
index 978b320f04302a393d5f0946cf4f2411dc39c7e3..d8663f06a7b8d735b43b9ea200b03562d46669b9 100644
--- a/Classes/Domain/Repository/TemplateRepository.php
+++ b/Classes/Domain/Repository/TemplateRepository.php
@@ -38,10 +38,11 @@ class TemplateRepository extends AbstractRepository {
 	 * @param string $extensionKey
 	 * @param string $templateName
 	 * @param string $language
+	 * @param int $siteRoot
 	 *
 	 * @return Template
 	 */
-	public function findOneByTemplate($extensionKey, $templateName, $language) {
+	public function findOneByTemplate($extensionKey, $templateName, $language, $siteRoot = 0) {
 		$query = $this->createQuery();
 
 		$querySettings = $this->objectManager->get(Typo3QuerySettings::class);
@@ -50,13 +51,14 @@ class TemplateRepository extends AbstractRepository {
 		$constraintsAnd[] = $query->equals('extension_key', $extensionKey);
 		$constraintsAnd[] = $query->equals('template_name', $templateName);
 		$constraintsAnd[] = $query->equals('language', $language);
+		$constraintsAnd[] = $query->equals('site_root_id', (int) $siteRoot);
 
 		$query->matching(
 			$query->logicalAnd($constraintsAnd)
 		);
 
 		/** @var Template $template */
-		$template = $query->execute()->getFirst();
+		$template = $query->setLimit(1)->execute()->getFirst();
 		return $template;
 	}
 
diff --git a/Classes/Service/BackendService.php b/Classes/Service/BackendService.php
index 678d6551b70c39057b46d0a92c9515292eae3495..e57b32502bfa0bef85a3312776c4a5c4cc6af7d7 100644
--- a/Classes/Service/BackendService.php
+++ b/Classes/Service/BackendService.php
@@ -26,6 +26,7 @@ namespace SGalinski\SgMail\Service;
  *  This copyright notice MUST APPEAR in all copies of the script!
  ***************************************************************/
 
+use SGalinski\SgMail\Domain\Repository\TemplateRepository;
 use TYPO3\CMS\Backend\Template\Components\ButtonBar;
 use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
@@ -34,12 +35,15 @@ use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Mvc\Request;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
+use TYPO3\CMS\Lang\Domain\Repository\LanguageRepository;
 
 /**
  * Backend Service class
  */
 class BackendService {
+
 	/**
 	 * Get all pages the be user has access to
 	 *
@@ -94,4 +98,151 @@ class BackendService {
 		$buttonBar->addButton($shortcutButton, ButtonBar::BUTTON_POSITION_RIGHT);
 		$docHeaderComponent->getButtonBar();
 	}
+
+	/**
+	 * Retrieves the next site root in the page hierarchy from the current page
+	 *
+	 * @param int $currentPid
+	 * @return int
+	 */
+	public static function getSiteRoot($currentPid) {
+		$rootLine = BackendUtility::BEgetRootLine((int) $currentPid);
+		$siteRoot = ['uid' => 0];
+
+		foreach ($rootLine as $page) {
+			if ($page['is_siteroot'] === '1') {
+				$siteRoot = $page;
+				break;
+			}
+		}
+
+		return $siteRoot['uid'];
+	}
+
+	/**
+	 * get an array of all the locales for the activated languages
+	 *
+	 * @return array
+	 * @throws \InvalidArgumentException
+	 */
+	public static function getLanguages() {
+		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+		/** @var LanguageRepository $languageRepository */
+		$languageRepository = $objectManager->get(LanguageRepository::class);
+		$activatedLanguages = $languageRepository->findSelected();
+
+		$languages = ['en'];
+		foreach ($activatedLanguages as $language) {
+			$languages[] = $language->getLocale();
+		}
+
+		return $languages;
+	}
+
+	/**
+	 * Get the previous selected languages, the actual selection or the default
+	 * format ['left' => languagecode, 'right' => ...]
+	 *
+	 * @param string $selectedLanguageLeft
+	 * @param string $selectedLanguageRight
+	 * @param \SGalinski\SgMail\Session\PhpSession $session
+	 * @param array $languages
+	 * @return array
+	 */
+	public static function getSelectedLanguages(
+		$selectedLanguageLeft, $selectedLanguageRight, $session, array $languages
+	) {
+		$selectedLanguages = [
+			'left' => $selectedLanguageLeft,
+			'right' => $selectedLanguageRight
+		];
+
+		if ($selectedLanguageLeft === NULL) {
+			$selectedLanguageLeftFromSession = $session->getDataByKey('selectedLanguageLeft');
+			if ($selectedLanguageLeftFromSession !== NULL) {
+				$selectedLanguages['left'] = $selectedLanguageLeftFromSession;
+			} else {
+				$selectedLanguages['left'] = $languages[0];
+			}
+		}
+
+		if ($selectedLanguageRight === NULL) {
+			$selectedLanguageRightFromSession = $session->getDataByKey('selectedLanguageRight');
+			if ($selectedLanguageRightFromSession === NULL) {
+				if (isset($languages[1])) {
+					$selectedLanguages['right'] = $languages[1];
+				} else {
+					$selectedLanguages['right'] = $languages[0];
+				}
+			} else {
+				$selectedLanguages['right'] = $selectedLanguageRightFromSession;
+			}
+		}
+		return $selectedLanguages;
+	}
+
+	/**
+	 * Get the selected templates for the selected language
+	 *
+	 * @param string $selectedExtension
+	 * @param string $selectedTemplate
+	 * @param array $selectedLanguages
+	 * @param \SGalinski\SgMail\Session\PhpSession $session
+	 * @param int $siteRootId
+	 * @return array
+	 * @throws \InvalidArgumentException
+	 */
+	public static function getSelectedTemplates(
+		$selectedExtension, $selectedTemplate, array $selectedLanguages, &$session, $siteRootId
+	) {
+		$selectedTemplates = [];
+
+		$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+		/** @var TemplateRepository $templateRepository */
+		$templateRepository = $objectManager->get(TemplateRepository::class);
+
+		$session->setDataByKey('selectedLanguageLeft', $selectedLanguages['left']);
+		$session->setDataByKey('selectedLanguageRight', $selectedLanguages['right']);
+
+		$selectedTemplates['left'] = $templateRepository->findOneByTemplate(
+			$selectedExtension, $selectedTemplate, $selectedLanguages['left'], $siteRootId
+		);
+		$selectedTemplates['right'] = $templateRepository->findOneByTemplate(
+			$selectedExtension, $selectedTemplate, $selectedLanguages['right'], $siteRootId
+		);
+
+		return $selectedTemplates;
+	}
+
+	/**
+	 * Get the translated subjects for the selected mail templates
+	 *
+	 * @param $subject
+	 * @param $selectedExtension
+	 * @param $selectedLanguages
+	 * @return array
+	 */
+	public static function getTranslatedTemplateSubject($subject, $selectedExtension, $selectedLanguages) {
+		$translatedSubjects = [];
+
+		$langFile = GeneralUtility::readLLfile(
+			'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguages['left']
+		);
+		$translatedSubjectLeft = $langFile['default'][$subject][0]['target'];
+		if ($langFile[$selectedLanguages['left']][$subject][0]) {
+			$translatedSubjectLeft = $langFile[$selectedLanguages['left']][$subject][0]['target'];
+		}
+		$translatedSubjects['left'] = $translatedSubjectLeft;
+
+		$langFile = GeneralUtility::readLLfile(
+			'EXT:' . $selectedExtension . '/Resources/Private/Language/locallang.xlf', $selectedLanguages['right']
+		);
+		$translatedSubjectRight = $langFile['default'][$subject][0]['target'];
+		if ($langFile[$selectedLanguages['right']][$subject][0]) {
+			$translatedSubjectRight = $langFile[$selectedLanguages['right']][$subject][0]['target'];
+		}
+		$translatedSubjects['right'] = $translatedSubjectRight;
+
+		return $translatedSubjects;
+	}
 }
diff --git a/Classes/Service/FormhandlerFinisherService.php b/Classes/Service/FormhandlerFinisherService.php
index 22b7e65309978f31ed286979f876ea86f790435e..319fc75b8fd66309789214880483a024e822a506 100644
--- a/Classes/Service/FormhandlerFinisherService.php
+++ b/Classes/Service/FormhandlerFinisherService.php
@@ -69,6 +69,8 @@ class FormhandlerFinisherService extends AbstractFinisher {
 	 *  Needed to hook into Formhandler
 	 *
 	 * @return array $gp
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
+	 * @throws \InvalidArgumentException
 	 */
 	public function process() {
 		if (!isset($this->settings['to_address'])) {
@@ -92,12 +94,4 @@ class FormhandlerFinisherService extends AbstractFinisher {
 
 		return $this->gp;
 	}
-
-	/**
-	 * Needed to hook into Formhandler
-	 * simply returns true
-	 */
-	public function validateConfig() {
-		parent::validateConfig();
-	}
 }
diff --git a/Classes/Service/MailTemplateService.php b/Classes/Service/MailTemplateService.php
index 0c716e4fb77000b16472c43ce9c977f9a3dd928a..1d62bc647448228613a3e16911f6539d45387df3 100644
--- a/Classes/Service/MailTemplateService.php
+++ b/Classes/Service/MailTemplateService.php
@@ -140,11 +140,6 @@ class MailTemplateService {
 	 */
 	protected $objectManager;
 
-	/**
-	 * @var array
-	 */
-	private $attachments = [];
-
 	/**
 	 * MailTemplateService constructor.
 	 *
@@ -282,42 +277,20 @@ class MailTemplateService {
 		return self::$registerArray;
 	}
 
-	/**
-	 * Sets the predefined values for this template, supplied by the Editor, if possible
-	 * values for cc, bcc, replyTo, fromMail and fromName
-	 *
-	 * @param string $extensionKey
-	 * @param string $templateName
-	 * @param string $language
-	 * @return bool
-	 */
-	public function loadPredefinedValuesForTemplate($extensionKey, $templateName, $language) {
-		/** @var Template $template */
-		$template = $this->templateRepository->findOneByTemplate(
-			$this->extensionKey, $this->templateName, $this->language
-		);
-
-		if ($template !== NULL) {
-			$this->setCcAddresses(GeneralUtility::trimExplode(',', $template->getCc()));
-			$this->setBccAddresses(GeneralUtility::trimExplode(',', $template->getBcc()));
-			$this->setReplyToAddress($template->getReplyTo());
-			$this->setFromAddress($template->getFromMail(), $template->getFromName());
-			return TRUE;
-		}
-
-		return FALSE;
-	}
-
 	/**
 	 * Send the Email
 	 *
 	 * @param boolean $isPreview
 	 * @return boolean email was sent or added to mail queue successfully?
+	 * @throws \TYPO3\CMS\Extbase\Persistence\Exception\IllegalObjectTypeException
 	 */
 	public function sendEmail($isPreview = FALSE) {
+		$pageUid = (int) GeneralUtility::_GP('id');
+		$siteRootId = BackendService::getSiteRoot($pageUid);
+
 		/** @var Template $template */
 		$template = $this->templateRepository->findOneByTemplate(
-			$this->extensionKey, $this->templateName, $this->language
+			$this->extensionKey, $this->templateName, $this->language, $siteRootId
 		);
 
 		// if there is a template, prefer those values
@@ -364,7 +337,7 @@ class MailTemplateService {
 		/** @var StandaloneView $emailView */
 		$emailView = $this->objectManager->get(StandaloneView::class);
 
-		if (null === $defaultTemplateContent) {
+		if (NULL === $defaultTemplateContent) {
 			$emailView->setTemplateSource($template->getContent());
 			$subject = $template->getSubject();
 		} else {
@@ -435,6 +408,10 @@ class MailTemplateService {
 		$mail->setSendingTime($sendingTime);
 		$mail->setReplyTo($this->replyToAddress);
 
+		$pageUid = (int) GeneralUtility::_GP('id');
+		$siteRootId = BackendService::getSiteRoot($pageUid);
+		$mail->setSiteRootId($siteRootId);
+
 		$mailRepository = $this->objectManager->get(MailRepository::class);
 		$mailRepository->add($mail);
 		$this->persistenceManager->persistAll();
diff --git a/Classes/Updates/MigrateData.php b/Classes/Updates/MigrateData.php
new file mode 100644
index 0000000000000000000000000000000000000000..3dec9e5b28520f41dcbad43a4346edae272827f8
--- /dev/null
+++ b/Classes/Updates/MigrateData.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace SGalinski\SgMail\Updates;
+
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) sgalinski Internet Services (https://www.sgalinski.de)
+ *
+ *  All rights reserved
+ *
+ *  This script is part of the TYPO3 project. The TYPO3 project is
+ *  free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  The GNU General Public License can be found at
+ *  http://www.gnu.org/copyleft/gpl.html.
+ *
+ *  This script is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+use SGalinski\SgMail\Service\BackendService;
+use TYPO3\CMS\Install\Updates\AbstractUpdate;
+
+/**
+ * Migrate template db entries to the correct root pages
+ */
+class MigrateData extends AbstractUpdate {
+	/**
+	 * @var string
+	 */
+	protected $title = 'Find all templates & queue entries without site root and assign the correct site root id';
+
+	/**
+	 * @var \TYPO3\CMS\Extbase\Object\ObjectManager
+	 */
+	protected $objectManager = NULL;
+
+	/**
+	 * @var array
+	 */
+	protected $tables = [
+		'tx_sgmail_domain_model_mail', 'tx_sgmail_domain_model_template'
+	];
+
+	/**
+	 * Checks whether updates are required.
+	 *
+	 * @param string &$description The description for the update
+	 * @return bool Whether an update is required (TRUE) or not (FALSE)
+	 */
+	public function checkForUpdate(&$description) {
+		$description = 'Set the site_root_id for all the queue entries and templates if not set or pid = 0';
+
+		$databaseConnection = $this->getDatabaseConnection();
+		$where = 'site_root_id = 0';
+
+		foreach ($this->tables as $table) {
+			$result = $databaseConnection->exec_SELECTquery('*', $table, $where);
+			if ($result->num_rows > 0) {
+				return TRUE;
+			}
+		}
+
+		return FALSE;
+	}
+
+	/**
+	 * Performs the accordant updates.
+	 *
+	 * @param array &$dbQueries Queries done in this update
+	 * @param mixed &$customMessages Custom messages
+	 * @return bool Whether everything went smoothly or not
+	 */
+	public function performUpdate(array &$dbQueries, &$customMessages) {
+		$databaseConnection = $this->getDatabaseConnection();
+
+		foreach ($this->tables as $table) {
+			$where = 'site_root_id = 0';
+			$result = $databaseConnection->exec_SELECTquery('uid, pid', $table, $where)->fetch_all();
+			$dbQueries[] = $databaseConnection->debug_lastBuiltQuery;
+
+			/** @var array $result */
+			foreach ($result as $row) {
+				$siteRootId = BackendService::getSiteRoot($row[1]);
+
+				if ($siteRootId === NULL) {
+					$this->retrieveFirstSiteRoot();
+				}
+
+				$where = 'uid = ' . $row[0];
+				$databaseConnection->exec_UPDATEquery($table, $where, ['site_root_id' => $siteRootId]);
+				$dbQueries[] = $databaseConnection->debug_lastBuiltQuery;
+			}
+		}
+
+		return TRUE;
+	}
+
+	/**
+	 * get the first site root that is not pid = 0
+	 *
+	 * @return int
+	 */
+	private function retrieveFirstSiteRoot() {
+		$databaseConnection = $this->getDatabaseConnection();
+		$where = "is_siteroot = 1 AND uid <> '0'";
+		$pagesResult = $databaseConnection->exec_SELECTgetSingleRow('uid', 'pages', $where, '', '', '1');
+		$dbQueries[] = $databaseConnection->debug_lastBuiltQuery;
+
+		if (empty($pagesResult)) {
+			return 0;
+		} else {
+			return $pagesResult[0][0];
+		}
+	}
+}
diff --git a/Configuration/TCA/tx_sgmail_domain_model_mail.php b/Configuration/TCA/tx_sgmail_domain_model_mail.php
index 4289d3eb8bd65f80c654ff8a5decf698988225f6..5ec2f25f362218ca2fc4a7f9972f278975a54b00 100644
--- a/Configuration/TCA/tx_sgmail_domain_model_mail.php
+++ b/Configuration/TCA/tx_sgmail_domain_model_mail.php
@@ -32,7 +32,7 @@ return [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'searchFields' => 'mail_subject, mail_body, to_address, from_address, from_name, bcc_addresses, cc_addresses, extension_key, template_name',
+		'searchFields' => 'mail_subject, mail_body, to_address, from_address, from_name, bcc_addresses, cc_addresses, extension_key, template_name, site_root_id',
 		'dividers2tabs' => TRUE,
 		'delete' => 'deleted',
 		'enablecolumns' => [
@@ -42,11 +42,11 @@ return [
 		'iconfile' => 'EXT:sg_mail/Resources/Public/Icons/ModuleIconTCA.svg'
 	],
 	'interface' => [
-		'showRecordFieldList' => 'hidden, mail_subject, mail_body, to_address, from_address, sent, priority, from_name, bcc_addresses, cc_addresses, extension_key, template_name',
+		'showRecordFieldList' => 'hidden, mail_subject, mail_body, to_address, from_address, sent, priority, from_name, bcc_addresses, cc_addresses, extension_key, template_name, site_root_id',
 	],
 	'types' => [
 		'1' => [
-			'showitem' => 'hidden;;1, sent, priority, to_address, from_address, mail_subject, mail_body, from_name, bcc_addresses, cc_addresses, extension_key, template_name'
+			'showitem' => 'hidden;;1, sent, priority, to_address, from_address, mail_subject, mail_body, from_name, bcc_addresses, cc_addresses, extension_key, template_name, site_root_id'
 		],
 	],
 	'columns' => [
@@ -157,6 +157,14 @@ return [
 			'config' => [
 				'type' => 'input'
 			],
+		],
+		'site_root_id' => [
+			'exclude' => TRUE,
+			'label' => 'LLL:EXT:sg_mail/Resources/Private/Language/locallang_db.xlf:tx_sgmail_domain_model_mail.site_root_id',
+			'config' => [
+				'type' => 'input',
+				'eval' => 'int'
+			],
 		]
 	]
 ];
diff --git a/Configuration/TCA/tx_sgmail_domain_model_template.php b/Configuration/TCA/tx_sgmail_domain_model_template.php
index 0980b396627013466fd67f035c4428c2cc2d68da..49a0bb917216fdf5e7bd571c34bb2db47352ed60 100644
--- a/Configuration/TCA/tx_sgmail_domain_model_template.php
+++ b/Configuration/TCA/tx_sgmail_domain_model_template.php
@@ -33,7 +33,7 @@ return [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'searchFields' => 'extension_key, template_name, language, subject, fromName, fromMail, replyTo',
+		'searchFields' => 'extension_key, template_name, language, subject, fromName, fromMail, replyTo, site_root_id',
 		'dividers2tabs' => TRUE,
 		'delete' => 'deleted',
 		'enablecolumns' => [
@@ -43,11 +43,11 @@ return [
 		'iconfile' => 'EXT:sg_mail/Resources/Public/Icons/ModuleIconTCA.svg'
 	],
 	'interface' => [
-		'showRecordFieldList' => 'extension_key, template_name, language, content, subject, fromName, fromMail, cc, bcc, replyTo'
+		'showRecordFieldList' => 'extension_key, template_name, language, content, subject, fromName, fromMail, cc, bcc, replyTo, site_root_id'
 	],
 	'types' => [
 		'1' => [
-			'showitem' => 'hidden;;1, extension_key, template_name, language, content, subject, fromName, fromMail, cc, bcc, replyTo'
+			'showitem' => 'hidden;;1, extension_key, template_name, language, content, subject, fromName, fromMail, cc, bcc, replyTo, site_root_id'
 		],
 	],
 	'columns' => [
@@ -133,6 +133,14 @@ return [
 			'config' => [
 				'type' => 'input'
 			],
+		],
+		'site_root_id' => [
+			'exclude' => TRUE,
+			'label' => 'LLL:EXT:sg_mail/Resources/Private/Language/locallang_db.xlf:tx_sgmail_domain_model_template.site_root_id',
+			'config' => [
+				'type' => 'input',
+				'eval' => 'int'
+			],
 		]
 	]
 ];
diff --git a/Configuration/TypoScript/setup.ts b/Configuration/TypoScript/setup.ts
index 6847a026b6b51e4c0db9aeb16d035fc910b747ca..b992c26575d438b8993c448de649b716506609f0 100644
--- a/Configuration/TypoScript/setup.ts
+++ b/Configuration/TypoScript/setup.ts
@@ -10,10 +10,10 @@ module.tx_sgmail {
 			# default from address
 			default.from = noreply@example.org
 
-			# comma-separated list of additional bcc adresses
+			# comma-separated list of additional bcc addresses
 			default.bcc =
 
-			# comma-separated list of additional cc adresses
+			# comma-separated list of additional cc addresses
 			default.cc =
 		}
 
diff --git a/Resources/Private/Language/de.locallang_db.xlf b/Resources/Private/Language/de.locallang_db.xlf
index 1626e77940f2823312bc4631d8f465bbfbfd5292..665c0138b72c681cc6f2f788fcc1be5462e8c494 100644
--- a/Resources/Private/Language/de.locallang_db.xlf
+++ b/Resources/Private/Language/de.locallang_db.xlf
@@ -57,6 +57,10 @@
 			<source>Sent</source>
 			<target>Gesendet</target>
 		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.site_root_id" approved="yes">
+			<source>Site root id</source>
+			<target>Site root id</target>
+		</trans-unit>
 		<trans-unit id="tx_sgmail_domain_model_mail.template_name" approved="yes">
 			<source>Template Name</source>
 			<target>Template Name</target>
diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf
index 08e95fb6c9f6b7c41f697524b55c23234dd0eece..59049aae939e3ea1cfb1beac711043b186a07478 100644
--- a/Resources/Private/Language/locallang_db.xlf
+++ b/Resources/Private/Language/locallang_db.xlf
@@ -9,90 +9,93 @@
 			<authorEmail>torsten@sgalinski.de</authorEmail>
 		</header>
 		<body>
-			<trans-unit id="tx_sgmail_domain_model_mail">
-				<source>Mail Queue Entry</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.bcc_addresses">
-				<source>BCC Addresses</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.cc_addresses">
-				<source>CC Addresses</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.extension_key">
-				<source>Extension Key</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.from_address">
-				<source>Sender email address</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.from_name">
-				<source>Sender Name</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.mail_body">
-				<source>Mail text</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.mail_subject">
-				<source>Mail subject</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.priority">
-				<source>Priority (Lowest = 0 | Low = 50 | Medium = 100 | High = 150 | Highest = 200)</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.reply_to">
-				<source>Reply To</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.sending_time">
-				<source>Sent at</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.sent">
-				<source>Sent</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.template_name">
-				<source>Template Name</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_mail.to_address">
-				<source>Receiver email address</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template">
-				<source>Template</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.bcc">
-				<source>BCC (Blind Carbon Copy Receiver)</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.bcc_addresses">
-				<source>BCC-Adressen</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.cc">
-				<source>CC (Carbon Copy Receiver)</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.cc_addresses">
-				<source>CC-Adressen</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.content">
-				<source>Content</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.extension_key">
-				<source>Extension Key</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.fromMail">
-				<source>Sender-E-Mail-Address</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.fromName">
-				<source>Sender Name</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.from_name">
-				<source>Sender Name</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.language">
-				<source>Language</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.replyTo">
-				<source>Reply To</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.subject">
-				<source>Subject</source>
-			</trans-unit>
-			<trans-unit id="tx_sgmail_domain_model_template.template_name">
-				<source>Template Name</source>
-			</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail">
+			<source>Mail Queue Entry</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.bcc_addresses">
+			<source>BCC Addresses</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.cc_addresses">
+			<source>CC Addresses</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.extension_key">
+			<source>Extension Key</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.from_address">
+			<source>Sender email address</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.from_name">
+			<source>Sender Name</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.mail_body">
+			<source>Mail text</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.mail_subject">
+			<source>Mail subject</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.priority">
+			<source>Priority (Lowest = 0 | Low = 50 | Medium = 100 | High = 150 | Highest = 200)</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.reply_to">
+			<source>Reply To</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.sending_time">
+			<source>Sent at</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.sent">
+			<source>Sent</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.site_root_id">
+			<source>Site root id</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.template_name">
+			<source>Template Name</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_mail.to_address">
+			<source>Receiver email address</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template">
+			<source>Template</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.bcc">
+			<source>BCC (Blind Carbon Copy Receiver)</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.bcc_addresses">
+			<source>BCC-Adressen</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.cc">
+			<source>CC (Carbon Copy Receiver)</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.cc_addresses">
+			<source>CC-Adressen</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.content">
+			<source>Content</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.extension_key">
+			<source>Extension Key</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.fromMail">
+			<source>Sender-E-Mail-Address</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.fromName">
+			<source>Sender Name</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.from_name">
+			<source>Sender Name</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.language">
+			<source>Language</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.replyTo">
+			<source>Reply To</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.subject">
+			<source>Subject</source>
+		</trans-unit>
+		<trans-unit id="tx_sgmail_domain_model_template.template_name">
+			<source>Template Name</source>
+		</trans-unit>
 		</body>
 	</file>
 </xliff>
\ No newline at end of file
diff --git a/Resources/Private/Layouts/Default.html b/Resources/Private/Layouts/Default.html
index 95736c2d1922036cb02ca666e0885f91e1b695e2..fa0a2b97789aabf116a17b67c0d4337477bcf949 100644
--- a/Resources/Private/Layouts/Default.html
+++ b/Resources/Private/Layouts/Default.html
@@ -6,119 +6,104 @@
 	<div class="module" data-module-id="" data-module-name="">
 		<div class="module-docheader t3js-module-docheader">
 			<div class="module-docheader-bar module-docheader-bar-navigation t3js-module-docheader-bar t3js-module-docheader-bar-navigation">
-				<f:if condition="{noPage}">
-					<f:then></f:then>
-					<f:else>
-						<div class="module-docheader-bar-column-left">
+				<div class="module-docheader-bar-column-left">
+					<f:be.menus.actionMenu>
+						<f:if condition="{mode} == 'queue'">
+							<f:then>
+								<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
+									controller="Queue"
+									action="index"
+									arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}"
+									additionalAttributes="{selected: 'selected'}" />
+							</f:then>
+							<f:else>
+								<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
+									controller="Queue"
+									action="index"
+									arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" />
+							</f:else>
+						</f:if>
+						<f:if condition="{mode} == 'editor'">
+							<f:then>
+								<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}"
+									controller="Mail"
+									action="index"
+									arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}"
+									additionalAttributes="{selected: 'selected'}" />
+							</f:then>
+							<f:else>
+								<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}"
+									controller="Mail"
+									action="index"
+									arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" />
+							</f:else>
+						</f:if>
+					</f:be.menus.actionMenu>
+				</div>
+				<div class="module-docheader-bar-column-right">
+					<span class="typo3-docheader-pagePath"><f:translate key="LLL:EXT:lang/locallang_core.xlf:labels.path" />: <f:format.raw>{docHeader.metaInformation.path}</f:format.raw></span>
+					<f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw>
+				</div>
+			</div>
+			<div class="module-docheader-bar module-docheader-bar-buttons t3js-module-docheader-bar t3js-module-docheader-bar-buttons">
+				<div class="module-docheader-bar-column-left">
+					<div class="btn-toolbar" role="toolbar" aria-label="">
+						<f:if condition="{templates}">
 							<f:be.menus.actionMenu>
-								<f:if condition="{mode} == 'queue'">
-									<f:then>
-										<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
-											controller="Queue"
-											action="index"
-											arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}"
-											additionalAttributes="{selected: 'selected'}" />
-									</f:then>
+								<f:for each="{templates}" as="template" key="extensionKey">
+									<f:if condition="{mode} == 'queue'">
+										<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
+											<f:for each="{template}" as="currentTemplate" key="templateKey">
+												<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}"
+													and="{selectedExtensionKey} == {extensionKey}">
+													<f:then>
+														<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
+															controller="Queue"
+															action="index"
+															arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}"
+															additionalAttributes="{selected: 'selected'}" />
+													</f:then>
+													<f:else>
+														<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
+															controller="Queue"
+															action="index"
+															arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" />
+													</f:else>
+												</sgm:extendedIf>
+											</f:for>
+										</sgm:be.menus.actionMenuOptionGroup>
+									</f:if>
 									<f:else>
-										<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.mail_queue')}"
-											controller="Queue"
-											action="index"
-											arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" />
+										<f:if condition="{mode} == 'editor'">
+											<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
+												<f:for each="{template}" as="currentTemplate" key="templateKey">
+													<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}"
+														and="{selectedExtensionKey} == {extensionKey}">
+														<f:then>
+															<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
+																controller="Mail"
+																action="index"
+																arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}"
+																additionalAttributes="{selected: 'selected'}" />
+														</f:then>
+														<f:else>
+															<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
+																controller="Mail"
+																action="index"
+																arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" />
+														</f:else>
+													</sgm:extendedIf>
+												</f:for>
+											</sgm:be.menus.actionMenuOptionGroup>
+										</f:if>
 									</f:else>
-								</f:if>
-								<f:if condition="{mode} == 'editor'">
-									<f:then>
-										<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}"
-											controller="Mail"
-											action="index"
-											arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}"
-											additionalAttributes="{selected: 'selected'}" />
-									</f:then>
-									<f:else>
-										<sgm:be.menus.actionMenuItem label="{f:translate(key:'backend.template_editor')}"
-											controller="Mail"
-											action="index"
-											arguments="{selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}" />
-									</f:else>
-								</f:if>
+								</f:for>
 							</f:be.menus.actionMenu>
-						</div>
-						<div class="module-docheader-bar-column-right">
-							<span class="typo3-docheader-pagePath"><f:translate key="LLL:EXT:lang/locallang_core.xlf:labels.path" />: <f:format.raw>{docHeader.metaInformation.path}</f:format.raw></span>
-							<f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw>
-						</div>
-					</f:else>
-				</f:if>
-			</div>
-			<div class="module-docheader-bar module-docheader-bar-buttons t3js-module-docheader-bar t3js-module-docheader-bar-buttons">
-				<f:if condition="{noPage}">
-					<f:then></f:then>
-					<f:else>
-						<div class="module-docheader-bar-column-left">
-							<div class="btn-toolbar" role="toolbar" aria-label="">
-								<f:if condition="{templates}">
-									<f:be.menus.actionMenu>
-										<f:for each="{templates}" as="template" key="extensionKey">
-											<f:if condition="{mode} == 'queue'">
-												<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
-													<f:for each="{template}" as="currentTemplate" key="templateKey">
-														<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}"
-															and="{selectedExtensionKey} == {extensionKey}">
-															<f:then>
-																<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
-																	controller="Queue"
-																	action="index"
-																	arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}"
-																	additionalAttributes="{selected: 'selected'}" />
-															</f:then>
-															<f:else>
-																<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
-																	controller="Queue"
-																	action="index"
-																	arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" />
-															</f:else>
-														</sgm:extendedIf>
-													</f:for>
-												</sgm:be.menus.actionMenuOptionGroup>
-											</f:if>
-											<f:else>
-												<f:if condition="{mode} == 'editor'">
-													<sgm:be.menus.actionMenuOptionGroup label="{extensionKey}">
-														<f:for each="{template}" as="currentTemplate" key="templateKey">
-															<sgm:extendedIf condition="{selectedTemplateKey} == {templateKey}"
-																and="{selectedExtensionKey} == {extensionKey}">
-																<f:then>
-																	<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
-																		controller="Mail"
-																		action="index"
-																		arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}"
-																		additionalAttributes="{selected: 'selected'}" />
-																</f:then>
-																<f:else>
-																	<sgm:be.menus.actionMenuItem label="{currentTemplate.templateName}"
-																		controller="Mail"
-																		action="index"
-																		arguments="{selectedTemplate: templateKey, selectedExtension: extensionKey}" />
-																</f:else>
-															</sgm:extendedIf>
-														</f:for>
-													</sgm:be.menus.actionMenuOptionGroup>
-												</f:if>
-											</f:else>
-										</f:for>
-									</f:be.menus.actionMenu>
-								</f:if>
-							</div>
-						</div>
-					</f:else>
-				</f:if>
+						</f:if>
+					</div>
+				</div>
 				<div class="module-docheader-bar-column-right">
-					<f:if condition="{noPage}">
-						<f:then></f:then>
-						<f:else>
-							<f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" />
-						</f:else>
-					</f:if>
+					<f:render partial="ButtonBar" arguments="{buttons:docHeader.buttons.right}" />
 				</div>
 			</div>
 		</div>
diff --git a/Resources/Private/Templates/Mail/Index.html b/Resources/Private/Templates/Mail/Index.html
index b5b5f3f32741bda6034c4464f9f215df73f4a4fc..00a638f7fbd4fa596bb1fc3a1946197741f56f19 100644
--- a/Resources/Private/Templates/Mail/Index.html
+++ b/Resources/Private/Templates/Mail/Index.html
@@ -5,233 +5,205 @@
 <f:section name="iconButtons">
 </f:section>
 <f:section name="content">
-	<f:flashMessages/>
-	<f:if condition="{noPage}">
+	<f:flashMessages />
+	<f:if condition="{selectedTemplate}">
 		<f:then>
-			<f:if condition="{pages}">
-				<div class="panel panel-default recordlist">
-					<div class="table-fit">
-						<table data-table="pages" class="table table-striped table-hover">
-							<tbody>
-								<f:for each="{pages}" as="page">
-									<tr data-uid="{page.uid}">
-										<td nowrap="nowrap" class="col-title">
-											<a href="#" onclick="sgMailGoToPage({page.uid}); return false;">
-												<sgm:backend.icon table="pages" row="{page}" clickMenu="0" />
-												{page.title}
-											</a>
-										</td>
-									</tr>
-								</f:for>
-							</tbody>
-						</table>
+			<div class="form-group col-md-6">
+				<p>{templateDescription}</p>
+			</div>
+			<div class="form-group col-md-2 col-md-offset-3">
+				<f:link.action class="reset-btn reset-all-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset_all')}</f:link.action>
+			</div>
+			<div class="col-md-12">
+				<table class="table table-hover">
+					<thead>
+						<tr>
+							<th><f:translate key="backend.marker" /></th>
+							<th><f:translate key="backend.type" /></th>
+							<th><f:translate key="backend.value" /></th>
+							<th><f:translate key="backend.usage" /></th>
+							<th><f:translate key="backend.description" /></th>
+						</tr>
+					</thead>
+					<f:for each="{selectedTemplate.marker}" as="marker">
+						<tr>
+							<td>{marker.marker}</td>
+							<td>
+								<f:if condition="{marker.type}">
+									<f:then>
+										<f:translate key="{marker.type}">{marker.type}</f:translate>
+									</f:then>
+									<f:else>
+										<f:translate key="backend.marker.type.string" />
+									</f:else>
+								</f:if>
+							</td>
+							<td>
+								<f:if condition="{sgm:isArray(value: '{marker.value}')}">
+									<f:then>
+										<f:for each="{marker.value}" as="value" key="key">
+											{key}: {value}
+											<br />
+										</f:for>
+									</f:then>
+									<f:else>
+										<f:translate key="{marker.value}">{marker.value}</f:translate>
+									</f:else>
+								</f:if>
+							</td>
+							<td>
+								<f:if condition="{marker.usage}">
+									<f:then>
+										{marker.usage}
+									</f:then>
+									<f:else>
+										<![CDATA[{]]>{marker.marker}<![CDATA[}]]>
+									</f:else>
+								</f:if>
+							</td>
+							<td>
+								<f:translate key="{marker.description}">{marker.description}</f:translate>
+							</td>
+						</tr>
+					</f:for>
+				</table>
+			</div>
+			<f:form class="col-md-12" method="post" controller="Mail" action="sendTestMail">
+				<f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" />
+				<f:form.textfield name="emailAddress" type="email" required="TRUE" class="email-input form-group" placeholder="{f:translate(key:'backend.email')}" />
+				<f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}" />
+				<f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}" />
+				<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}" />
+				<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}" />
+				<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}" />
+				<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}" />
+			</f:form>
+			<f:form method="post" controller="Mail" action="save">
+				<div class="col-md-12 form-group">
+					<f:form.submit class="btn-save-backend btn-success btn col-md-2 form-group" value="{f:translate(key:'backend.save')}" />
+				</div>
+				<div class="col-md-6">
+					<div class="form-group">
+						<label class="">{f:translate(key:'backend.select_language')}</label>
+						<f:be.menus.actionMenu>
+							<f:for each="{languages}" as="language">
+								<sgm:extendedIf condition="{language} == {selectedLanguageLeft}">
+									<f:then>
+										<sgm:be.menus.actionMenuItem label="{language}"
+											controller="Mail"
+											action="index"
+											arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
+											additionalAttributes="{selected: 'selected'}" />
+									</f:then>
+									<f:else>
+										<sgm:be.menus.actionMenuItem label="{language}"
+											controller="Mail"
+											action="index"
+											arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
+									</f:else>
+								</sgm:extendedIf>
+							</f:for>
+						</f:be.menus.actionMenu>
+					</div>
+					<div class="form-group">
+						<f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageLeft, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action>
+					</div>
+					<div class="form-group">
+						<label for="fromNameLeft" class="">{f:translate(key:'backend.fromName')}</label>
+						<f:form.textfield type="text" class="form-control" value="{fromNameLeft}" name="fromNameLeft" />
+					</div>
+					<div class="form-group">
+						<label for="fromMailLeft" class="">{f:translate(key:'backend.fromMail')}</label>
+						<f:form.textfield type="email" class="form-control" value="{fromMailLeft}" name="fromMailLeft" />
+					</div>
+					<div class="form-group">
+						<label for="ccLeft" class="">{f:translate(key:'backend.cc')}</label>
+						<f:form.textfield type="text" class="form-control" value="{ccLeft}" name="ccLeft" />
+					</div>
+					<div class="form-group">
+						<label for="bccLeft" class="">{f:translate(key:'backend.bcc')}</label>
+						<f:form.textfield type="text" class="form-control" value="{bccLeft}" name="bccLeft" />
 					</div>
+					<div class="form-group">
+						<label for="replyToLeft" class="">{f:translate(key:'backend.replyTo')}</label>
+						<f:form.textfield type="text" class="form-control" value="{replyToLeft}" name="replyToLeft" />
+					</div>
+					<div class="form-group">
+						<label for="subjectLeft" class="">{f:translate(key:'backend.subject')}</label>
+						<f:form.textfield type="text" class="form-control" value="{subjectLeft}" name="subjectLeft" />
+					</div>
+					<label for="contentLeft" class="">{f:translate(key:'backend.content')}</label>
+					<f:form.textarea class="form-control" rows="25" name="contentLeft" value="{contentLeft}" />
+					<f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}" />
+					<f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}" />
+					<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}" />
+					<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}" />
+					<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}" />
+					<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}" />
 				</div>
-			</f:if>
-		</f:then>
 
-		<f:else>
-			<f:if condition="{selectedTemplate}">
-				<f:then>
-					<div class="form-group col-md-6">
-						<p>{templateDescription}</p>
-					</div>
-					<div class="form-group col-md-2 col-md-offset-3">
-						<f:link.action class="reset-btn reset-all-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset_all')}</f:link.action>
-					</div>
-					<div class="col-md-12">
-						<table class="table table-hover">
-							<thead>
-								<tr>
-									<th><f:translate key="backend.marker" /></th>
-									<th><f:translate key="backend.type" /></th>
-									<th><f:translate key="backend.value" /></th>
-									<th><f:translate key="backend.usage" /></th>
-									<th><f:translate key="backend.description" /></th>
-								</tr>
-							</thead>
-							<f:for each="{selectedTemplate.marker}" as="marker">
-								<tr>
-									<td>{marker.marker}</td>
-									<td>
-										<f:if condition="{marker.type}">
-											<f:then>
-												<f:translate key="{marker.type}">{marker.type}</f:translate>
-											</f:then>
-											<f:else>
-												<f:translate key="backend.marker.type.string" />
-											</f:else>
-										</f:if>
-									</td>
-									<td>
-										<f:if condition="{sgm:isArray(value: '{marker.value}')}">
-											<f:then>
-												<f:for each="{marker.value}" as="value" key="key">
-													{key}: {value}
-													<br />
-												</f:for>
-											</f:then>
-											<f:else>
-												<f:translate key="{marker.value}">{marker.value}</f:translate>
-											</f:else>
-										</f:if>
-									</td>
-									<td>
-										<f:if condition="{marker.usage}">
-											<f:then>
-												{marker.usage}
-											</f:then>
-											<f:else>
-												<![CDATA[{]]>{marker.marker}<![CDATA[}]]>
-											</f:else>
-										</f:if>
-									</td>
-									<td>
-										<f:translate key="{marker.description}">{marker.description}</f:translate>
-									</td>
-								</tr>
+				<div class="col-md-6">
+					<div class="form-group">
+						<label class="">{f:translate(key:'backend.select_language')}</label>
+						<f:be.menus.actionMenu>
+							<f:for each="{languages}" as="language">
+								<sgm:extendedIf condition="{language} == {selectedLanguageRight}">
+									<f:then>
+										<sgm:be.menus.actionMenuItem label="{language}"
+											controller="Mail"
+											action="index"
+											arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
+											additionalAttributes="{selected: 'selected'}" />
+									</f:then>
+									<f:else>
+										<sgm:be.menus.actionMenuItem label="{language}"
+											controller="Mail"
+											action="index"
+											arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
+									</f:else>
+								</sgm:extendedIf>
 							</f:for>
-						</table>
-					</div>
-					<f:form class="col-md-12" method="post" controller="Mail" action="sendTestMail">
-						<f:form.submit class="btn-primary btn form-group" value="{f:translate(key:'backend.send_test')}" />
-						<f:form.textfield name="emailAddress" type="email" required="TRUE" class="email-input form-group" placeholder="{f:translate(key:'backend.email')}" />
-						<f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden>
-						<f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden>
-						<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden>
-						<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden>
-						<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden>
-						<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden>
-					</f:form>
-					<f:form method="post" controller="Mail" action="save">
-						<div class="col-md-12 form-group">
-							<f:form.submit class="btn-save-backend btn-success btn col-md-2 form-group" value="{f:translate(key:'backend.save')}" />
-						</div>
-						<div class="col-md-6">
-							<div class="form-group">
-								<label class="">{f:translate(key:'backend.select_language')}</label>
-								<f:be.menus.actionMenu>
-									<f:for each="{languages}" as="language">
-										<sgm:extendedIf condition="{language} == {selectedLanguageLeft}">
-											<f:then>
-												<sgm:be.menus.actionMenuItem label="{language}"
-													controller="Mail"
-													action="index"
-													arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
-													additionalAttributes="{selected: 'selected'}" />
-											</f:then>
-											<f:else>
-												<sgm:be.menus.actionMenuItem label="{language}"
-													controller="Mail"
-													action="index"
-													arguments="{selectedLanguageLeft: language, selectedLanguageRight: selectedLanguageRight, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
-											</f:else>
-										</sgm:extendedIf>
-									</f:for>
-								</f:be.menus.actionMenu>
-							</div>
-							<div class="form-group">
-								<f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageLeft, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action>
-							</div>
-							<div class="form-group">
-								<label for="fromNameLeft" class="">{f:translate(key:'backend.fromName')}</label>
-								<f:form.textfield type="text" class="form-control" value="{fromNameLeft}" name="fromNameLeft"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="fromMailLeft" class="">{f:translate(key:'backend.fromMail')}</label>
-								<f:form.textfield type="email" class="form-control" value="{fromMailLeft}" name="fromMailLeft"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="ccLeft" class="">{f:translate(key:'backend.cc')}</label>
-								<f:form.textfield type="text" class="form-control" value="{ccLeft}" name="ccLeft"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="bccLeft" class="">{f:translate(key:'backend.bcc')}</label>
-								<f:form.textfield type="text" class="form-control" value="{bccLeft}" name="bccLeft"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="replyToLeft" class="">{f:translate(key:'backend.replyTo')}</label>
-								<f:form.textfield type="text" class="form-control" value="{replyToLeft}" name="replyToLeft"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="subjectLeft" class="">{f:translate(key:'backend.subject')}</label>
-								<f:form.textfield type="text" class="form-control" value="{subjectLeft}" name="subjectLeft"></f:form.textfield>
-							</div>
-							<label for="contentLeft" class="">{f:translate(key:'backend.content')}</label>
-							<f:form.textarea class="form-control" rows="25" name="contentLeft" value="{contentLeft}"></f:form.textarea>
-							<f:form.hidden name="selectedLanguageLeft" value="{selectedLanguageLeft}"></f:form.hidden>
-							<f:form.hidden name="selectedLanguageRight" value="{selectedLanguageRight}"></f:form.hidden>
-							<f:form.hidden name="selectedTemplate" value="{selectedTemplateKey}"></f:form.hidden>
-							<f:form.hidden name="selectedExtensionKey" value="{selectedTemplate.extension}"></f:form.hidden>
-							<f:form.hidden name="selectedExtension" value="{selectedTemplate.extension}"></f:form.hidden>
-							<f:form.hidden name="selectedTemplateKey" value="{selectedTemplateKey}"></f:form.hidden>
-						</div>
-
-						<div class="col-md-6">
-							<div class="form-group">
-								<label class="">{f:translate(key:'backend.select_language')}</label>
-								<f:be.menus.actionMenu>
-									<f:for each="{languages}" as="language">
-										<sgm:extendedIf condition="{language} == {selectedLanguageRight}">
-											<f:then>
-												<sgm:be.menus.actionMenuItem label="{language}"
-													controller="Mail"
-													action="index"
-													arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}"
-													additionalAttributes="{selected: 'selected'}" />
-											</f:then>
-											<f:else>
-												<sgm:be.menus.actionMenuItem label="{language}"
-													controller="Mail"
-													action="index"
-													arguments="{selectedLanguageLeft: selectedLanguageLeft, selectedLanguageRight: language, selectedTemplate: selectedTemplateKey, selectedExtensionKey: selectedTemplate.extension, selectedExtension: selectedTemplate.extension, selectedTemplateKey: selectedTemplateKey}" />
-											</f:else>
-										</sgm:extendedIf>
-									</f:for>
-								</f:be.menus.actionMenu>
-							</div>
-							<div class="form-group">
-								<f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageRight, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action>
-							</div>
-							<div class="form-group">
-								<label for="fromNameRight" class="">{f:translate(key:'backend.fromName')}</label>
-								<f:form.textfield type="text" class="form-control" value="{fromNameRight}" name="fromNameRight"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="fromMailRight" class="">{f:translate(key:'backend.fromMail')}</label>
-								<f:form.textfield type="email" class="form-control" value="{fromMailRight}" name="fromMailRight"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="ccRight" class="">{f:translate(key:'backend.cc')}</label>
-								<f:form.textfield type="text" class="form-control" value="{ccRight}" name="ccRight"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="bccRight" class="">{f:translate(key:'backend.bcc')}</label>
-								<f:form.textfield type="text" class="form-control" value="{bccRight}" name="bccRight"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="replyToRight" class="">{f:translate(key:'backend.replyTo')}</label>
-								<f:form.textfield type="text" class="form-control" value="{replyToRight}" name="replyToRight"></f:form.textfield>
-							</div>
-							<div class="form-group">
-								<label for="subjectRight" class="">{f:translate(key:'backend.subject')}</label>
-								<f:form.textfield type="text" class=" form-control" value="{subjectRight}" name="subjectRight"></f:form.textfield>
-							</div>
-							<label for="contentRight" class="">{f:translate(key:'backend.content')}</label>
-							<f:form.textarea class="form-control" rows="25" name="contentRight" value="{contentRight}"></f:form.textarea>
-						</div>
-						<div class="col-md-2">
-							<div class="form-group">
-								<f:form.submit class="btn-save-backend btn-success btn form-control" value="{f:translate(key:'backend.save')}" />
-							</div>
-						</div>
-					</f:form>
-				</f:then>
-				<f:else>
-					<f:render partial="Mail/Empty" />
-				</f:else>
-
-			</f:if>
+						</f:be.menus.actionMenu>
+					</div>
+					<div class="form-group">
+						<f:link.action class="reset-btn btn-danger btn form-group" action="reset" arguments="{template: selectedTemplateKey, language: selectedLanguageRight, extensionKey: selectedTemplate.extension}">{f:translate(key:'backend.button_reset')}</f:link.action>
+					</div>
+					<div class="form-group">
+						<label for="fromNameRight" class="">{f:translate(key:'backend.fromName')}</label>
+						<f:form.textfield type="text" class="form-control" value="{fromNameRight}" name="fromNameRight" />
+					</div>
+					<div class="form-group">
+						<label for="fromMailRight" class="">{f:translate(key:'backend.fromMail')}</label>
+						<f:form.textfield type="email" class="form-control" value="{fromMailRight}" name="fromMailRight" />
+					</div>
+					<div class="form-group">
+						<label for="ccRight" class="">{f:translate(key:'backend.cc')}</label>
+						<f:form.textfield type="text" class="form-control" value="{ccRight}" name="ccRight" />
+					</div>
+					<div class="form-group">
+						<label for="bccRight" class="">{f:translate(key:'backend.bcc')}</label>
+						<f:form.textfield type="text" class="form-control" value="{bccRight}" name="bccRight" />
+					</div>
+					<div class="form-group">
+						<label for="replyToRight" class="">{f:translate(key:'backend.replyTo')}</label>
+						<f:form.textfield type="text" class="form-control" value="{replyToRight}" name="replyToRight" />
+					</div>
+					<div class="form-group">
+						<label for="subjectRight" class="">{f:translate(key:'backend.subject')}</label>
+						<f:form.textfield type="text" class=" form-control" value="{subjectRight}" name="subjectRight" />
+					</div>
+					<label for="contentRight" class="">{f:translate(key:'backend.content')}</label>
+					<f:form.textarea class="form-control" rows="25" name="contentRight" value="{contentRight}" />
+				</div>
+				<div class="col-md-2">
+					<div class="form-group">
+						<f:form.submit class="btn-save-backend btn-success btn form-control" value="{f:translate(key:'backend.save')}" />
+					</div>
+				</div>
+			</f:form>
+		</f:then>
+		<f:else>
+			<f:render partial="Mail/Empty" />
 		</f:else>
 	</f:if>
 </f:section>
diff --git a/Resources/Private/Templates/Queue/Index.html b/Resources/Private/Templates/Queue/Index.html
index 4a0673c2371c1180d266089c55989796c5f9fc17..25c16288bc54f4f074621faca9dd5de17887c419 100644
--- a/Resources/Private/Templates/Queue/Index.html
+++ b/Resources/Private/Templates/Queue/Index.html
@@ -35,7 +35,7 @@
 										<td>
 											<f:if condition="{mail.sent} == '0'">
 												<f:then>
-													<f:link.action class="btn btn-default btn-send-now" controller="Queue" action="sendMail" arguments="{uid: mail.uid, selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}">
+													<f:link.action class="btn btn-default btn-send-now" controller="Queue" action="sendMail" arguments="{uid: mail.uid}">
 													<span class="t3js-icon icon icon-size-small icon-state-default actions-document-import-t3d">
 														<span class="icon-markup">
 															<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-document-import-t3d.svg" width="16" height="16">
@@ -45,7 +45,7 @@
 													</f:link.action>
 												</f:then>
 												<f:else>
-													<f:link.action class="btn btn-default btn-resend" controller="Queue" action="sendMail" arguments="{uid: mail.uid, selectedTemplate: selectedTemplateKey, selectedExtension: selectedExtensionKey}">
+													<f:link.action class="btn btn-default btn-resend" controller="Queue" action="sendMail" arguments="{uid: mail.uid}">
 															<span class="t3js-icon icon icon-size-small icon-state-default icon-actions-insert-reference">
 																<span class="icon-markup">
 																	<img src="/typo3/sysext/core/Resources/Public/Icons/T3Icons/actions/actions-insert-reference.svg" width="16" height="16">
diff --git a/ext_localconf.php b/ext_localconf.php
index 96443a64af78df48f5028c02a620ce152f762f79..0c0d4ff455c941f0854926a1bfdf883ff7a69deb 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -35,6 +35,10 @@ $extPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('sg_mail'
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] =
 	\SGalinski\SgMail\Command\SendMailCommandController::class;
 
+// add upgrade wizard for moving all db entries to their respected siteroot
+$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update']['tx_sgmail_migrate_data'] = \SGalinski\SgMail\Updates\MigrateData::class;
+
+
 if (TYPO3_MODE === 'BE') {
 	$tsPath = $extPath . 'Configuration/TypoScript/';
 	\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(file_get_contents($tsPath . 'setup.ts'));
diff --git a/ext_tables.sql b/ext_tables.sql
index 1a81b1b79b951579db32cfb89ed4123cb7065a1a..a22cf39508fa23c7db2ee742e6460a2a9e52f572 100644
--- a/ext_tables.sql
+++ b/ext_tables.sql
@@ -15,6 +15,7 @@ CREATE TABLE tx_sgmail_domain_model_mail (
 	template_name varchar(30) DEFAULT '' NOT NULL,
 	reply_to varchar(30) DEFAULT '' NOT NULL,
 	sending_time int(11) unsigned DEFAULT '0' NOT NULL,
+	site_root_id int(11) unsigned DEFAULT '0' NOT NULL,
 
 	tstamp int(11) unsigned DEFAULT '0' NOT NULL,
 	crdate int(11) unsigned DEFAULT '0' NOT NULL,
@@ -32,6 +33,7 @@ CREATE TABLE tx_sgmail_domain_model_template (
 	uid int(11) NOT NULL auto_increment,
 	pid int(11) DEFAULT '0' NOT NULL,
 
+	site_root_id int(11) unsigned DEFAULT '0' NOT NULL,
 	subject text NOT NULL,
 	extension_key varchar(255) DEFAULT '' NOT NULL,
 	template_name varchar(255) DEFAULT '' NOT NULL,