diff --git a/Classes/Domain/Repository/CompanyRepository.php b/Classes/Domain/Repository/CompanyRepository.php
index 031a5b558c1a1e3a819d9ab22d125c6631c44c99..556457d0bddcb4966b6604e8ab9c9625f0a001f5 100644
--- a/Classes/Domain/Repository/CompanyRepository.php
+++ b/Classes/Domain/Repository/CompanyRepository.php
@@ -124,6 +124,7 @@ class CompanyRepository extends Repository {
 	 * @throws \TYPO3\CMS\Core\Context\Exception\AspectNotFoundException
 	 */
 	public function getAllCompanies($pageUid) {
+		$companyConstraints = [];
 		$query = $this->createQuery();
 		$querySettings = $query->getQuerySettings();
 		$querySettings->setStoragePageIds([$pageUid]);
diff --git a/Classes/Property/TypeConverter/UploadedFileReferenceConverter.php b/Classes/Property/TypeConverter/UploadedFileReferenceConverter.php
index 1edded6cd48830cf3ed4e4120919c00bf7210a22..d54ee0848224d11a7a9cf77ea7b08cabe0f250a8 100644
--- a/Classes/Property/TypeConverter/UploadedFileReferenceConverter.php
+++ b/Classes/Property/TypeConverter/UploadedFileReferenceConverter.php
@@ -371,7 +371,7 @@ class UploadedFileReferenceConverter implements TypeConverterInterface {
 		$fileName = $this->getTargetUploadFileName();
 		$finalFileName = $fileName . '.' . strtolower($filePathInfo['extension']);
 		if (!$uploadInfo['wasUploaded']) {
-			if (!GeneralUtility::verifyFilenameAgainstDenyPattern($uploadInfo['name'])) {
+			if (!\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Resource\Security\FileNameValidator::class)->isValid($uploadInfo['name'])) {
 				throw new TypeConverterException(
 					'Uploading files with PHP file extensions is not allowed!', 1399312430
 				);
diff --git a/Classes/Updates/DepartmentUpdateWizard.php b/Classes/Updates/DepartmentUpdateWizard.php
index f9f97de074973cdd5d13ab9ba033962b4e177643..e023bd6816cef47db27d6403876c0a8f5b6266d0 100644
--- a/Classes/Updates/DepartmentUpdateWizard.php
+++ b/Classes/Updates/DepartmentUpdateWizard.php
@@ -41,7 +41,7 @@ class DepartmentUpdateWizard implements UpgradeWizardInterface {
 	/**
 	 * The wizard identifier
 	 */
-	const IDENTIFIER = 'tx_sgjobs_departmentupdatewizward';
+	public const IDENTIFIER = 'tx_sgjobs_departmentupdatewizward';
 
 	/**
 	 * Check if the job table has a deleted area field
diff --git a/Classes/ViewHelpers/Backend/Widget/Controller/PaginateController.php b/Classes/ViewHelpers/Backend/Widget/Controller/PaginateController.php
index 47265580a5adfcdcb6aeb7e7e530f2825c95898a..c29cb31570f57d99394bc5b225fc47cf4f0ad8d6 100644
--- a/Classes/ViewHelpers/Backend/Widget/Controller/PaginateController.php
+++ b/Classes/ViewHelpers/Backend/Widget/Controller/PaginateController.php
@@ -92,7 +92,7 @@ class PaginateController extends \TYPO3\CMS\Fluid\ViewHelpers\Be\Widget\Controll
 	 */
 	protected function buildPagination() {
 		$pagination = parent::buildPagination();
-		$pagination['totalObjects'] = \count($this->objects);
+		$pagination['totalObjects'] = is_countable($this->objects) ? \count($this->objects) : 0;
 		return $pagination;
 	}
 }
diff --git a/Classes/ViewHelpers/SetViewHelper.php b/Classes/ViewHelpers/SetViewHelper.php
index 782d2211b8577f4f289576e30b0bd7683a201907..9280d9a997fc4767eeefc8fcdbb8c316572714d5 100644
--- a/Classes/ViewHelpers/SetViewHelper.php
+++ b/Classes/ViewHelpers/SetViewHelper.php
@@ -47,7 +47,7 @@ class SetViewHelper extends AbstractViewHelper {
 	 * Set (override) the variable in $name.
 	 *
 	 * @return void
-	 * @throws \TYPO3\CMS\Fluid\Core\ViewHelper\Exception\InvalidVariableException
+	 * @throws \TYPO3Fluid\Fluid\Core\Exception
 	 */
 	public function render() {
 		$value = $this->arguments['value'];
diff --git a/Classes/ViewHelpers/Widget/UriViewHelper.php b/Classes/ViewHelpers/Widget/UriViewHelper.php
index e33ba7e35f1bbc69613fefa7a321f4bc15d2760d..560113e12e36dfc3c5669c14a7e7d5d7e97fe17e 100644
--- a/Classes/ViewHelpers/Widget/UriViewHelper.php
+++ b/Classes/ViewHelpers/Widget/UriViewHelper.php
@@ -149,7 +149,6 @@ class UriViewHelper extends AbstractViewHelper {
 			->setArguments($allArguments)
 			->setSection($arguments['section'])
 			->setAddQueryString(TRUE)
-			->setAddQueryStringMethod($arguments['addQueryStringMethod'] ?? '')
 			->setArgumentsToBeExcludedFromQueryString([$argumentPrefix, 'cHash'])
 			->setFormat($arguments['format'])
 			->build();
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_company.php b/Configuration/TCA/tx_sgjobs_domain_model_company.php
index 7f15060dcb21800983295285d764c4517c5ba9f5..dc54ecee9756c57257cde282c097027b16a601d0 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_company.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_company.php
@@ -31,7 +31,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'job_id, zip, city, state, country, description, name, street, contact',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -51,11 +50,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden,
-			job_id, zip, city, street,name, state, country, description, contact;;;richtext[*]:rte_transform[mode=ts],
-			--div--; LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.seo_tab,
-				identifying_url,
-			--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime',
+			'showitem' => '--palette--;;sysLanguageAndHidden,job_id,zip,city,street,name,state,country,description,contact,--palette--,--div--;LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.seo_tab,identifying_url,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime',
 		],
 	],
 	'palettes' => [
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_contact.php b/Configuration/TCA/tx_sgjobs_domain_model_contact.php
index 4566858174e6ff5df25f2c4e425c6233f1b637fa..ef78201d482d1a798b7ed6e7a783db4a425d0264 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_contact.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_contact.php
@@ -33,7 +33,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'title, first_name, last_name, street, city, zip, email, phone, hide_in_frontend',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -53,9 +52,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden,
-			hide_in_frontend, title, first_name, last_name, image, street, city, zip, email, phone;;;richtext[*]:rte_transform[mode=ts],
-			--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime',
+			'showitem' => '--palette--;;sysLanguageAndHidden,hide_in_frontend,title,first_name,last_name,image,street,city,zip,email,phone,--palette--,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime',
 		],
 	],
 	'palettes' => [
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_department.php b/Configuration/TCA/tx_sgjobs_domain_model_department.php
index e021bbe1b4a38e4774a4c456794d7950c7f36b99..01e9134d575b28ad79d3a97da853d2a25f2b815e 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_department.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_department.php
@@ -31,7 +31,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'title',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -51,9 +50,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden,
-			title,
-			--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime',
+			'showitem' => '--palette--;;sysLanguageAndHidden,title,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime',
 		],
 	],
 	'palettes' => [
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_experience_level.php b/Configuration/TCA/tx_sgjobs_domain_model_experience_level.php
index 9f363e7f230c28e8ea921c2ed0f8799508712b31..010f6592189ce2d808107ee46bb3c6f8bd2b98d2 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_experience_level.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_experience_level.php
@@ -31,7 +31,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'title',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -51,9 +50,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden,
-			title,
-			--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime',
+			'showitem' => '--palette--;;sysLanguageAndHidden,title,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime',
 		],
 	],
 	'palettes' => [
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_job.php b/Configuration/TCA/tx_sgjobs_domain_model_job.php
index e9186cf43e8ab2330ca342bd7780eff2afab531f..8434f553449effc801d2d16a30c611627e8a8c91 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_job.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_job.php
@@ -35,7 +35,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'title, job_id, path_segment, start_date, alternative_start_date, location, apply_external_link, description, task, qualification',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -55,22 +54,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden, --palette--;;palette_title,
-				--palette--;;palette_title_start_location,
-				--palette--;;palette_apply_function,
-				apply_external_link,
-				department,
-				experience_level,
-				company,
-				contact,
-				--div--; LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.qualification_tab, description, task, qualification, attachment,
-				--div--; LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.seo_tab,
-					--palette--;;palette_location_specifications,
-					employment_types,
-					--palette--;;palette_seo_dates,
-					--palette--;;palette_salary,
-				--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime,
-				--div--;LLL:EXT:languagevisibility/Resources/Private/Language/locallang_db.xml:tabname, tx_languagevisibility_visibility',
+			'showitem' => '--palette--;;sysLanguageAndHidden,--palette--;;palette_title,--palette--;;palette_title_start_location,--palette--;;palette_apply_function,apply_external_link,department,experience_level,company,contact,--div--;LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.qualification_tab,description,task,qualification,attachment,--div--;LLL:EXT:sg_jobs/Resources/Private/Language/locallang_db.xlf:tca.seo_tab,--palette--;;palette_location_specifications,employment_types,--palette--;;palette_seo_dates,--palette--;;palette_salary,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime,--div--;LLL:EXT:languagevisibility/Resources/Private/Language/locallang_db.xml:tabname,tx_languagevisibility_visibility',
 		],
 	],
 	'palettes' => [
diff --git a/Configuration/TCA/tx_sgjobs_domain_model_job_application.php b/Configuration/TCA/tx_sgjobs_domain_model_job_application.php
index 40f8d7b40e4530405286d6c363eeb8a4eb1e73d9..8465671d56f0cefb2a93a2bef5ea323ff16cd800 100644
--- a/Configuration/TCA/tx_sgjobs_domain_model_job_application.php
+++ b/Configuration/TCA/tx_sgjobs_domain_model_job_application.php
@@ -33,7 +33,6 @@ $columns = [
 		'tstamp' => 'tstamp',
 		'crdate' => 'crdate',
 		'cruser_id' => 'cruser_id',
-		'dividers2tabs' => TRUE,
 		'searchFields' => 'job_id, job, job_title, company, gender, first_name, last_name, street, city, zip, country, nationality, education, birth_date, phone, mobile, email, message, cover_letter, certificate, cv',
 		'versioningWS' => 2,
 		'versioning_followPages' => TRUE,
@@ -53,10 +52,7 @@ $columns = [
 	'interface' => [],
 	'types' => [
 		'1' => [
-			'showitem' => '--palette--;;sysLanguageAndHidden,job_id, job, job_title, company, gender, first_name, last_name, street, city, zip,
-				country, nationality, education, birth_date, phone, mobile, email, message, privacy_policy, cover_letter, cv, certificate,
-				div;;richtext[*]:rte_transform[mode=ts],
-				--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access, starttime, endtime',
+			'showitem' => '--palette--;;sysLanguageAndHidden,job_id,job,job_title,company,gender,first_name,last_name,street,city,zip,country,nationality,education,birth_date,phone,mobile,email,message,privacy_policy,cover_letter,cv,certificate,div,--palette--;;richtext[*]:rte_transform[mode=ts],--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,starttime,endtime',
 		],
 	],
 	'palettes' => [
diff --git a/ext_localconf.php b/ext_localconf.php
index 0b4b7a24f96eddd6a1bf00bd63151a6b3432d87d..47d880f7a41587253779c4d05384dc75e701f7eb 100644
--- a/ext_localconf.php
+++ b/ext_localconf.php
@@ -30,39 +30,39 @@ call_user_func(
 		);
 		// Configure frontend plugins
 		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
-			'SGalinski.sg_jobs',
+			'Srectorprefix20211231gJobs',
 			'Joblist',
 			[
 				// Available actions
-				'Joblist' => 'index'
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JoblistController::class => 'index'
 			],
 			[
 				// Uncacheable actions
-				'Joblist' => ''
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JoblistController::class => ''
 			]
 		);
 		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
-			'SGalinski.sg_jobs',
+			'Srectorprefix20211231gJobs',
 			'JobApplication',
 			[
 				// Available actions
-				'Joblist' => 'applyForm, apply'
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JoblistController::class => 'applyForm, apply'
 			],
 			[
 				// Uncacheable actions
-				'Joblist' => 'applyForm, apply'
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JoblistController::class => 'applyForm, apply'
 			]
 		);
 		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
-			'SGalinski.sg_jobs',
+			'Srectorprefix20211231gJobs',
 			'JobTeaser',
 			[
 				// Available actions
-				'JobTeaser' => 'index'
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JobTeaserController::class => 'index'
 			],
 			[
 				// Uncacheable actions
-				'JobTeaser' => ''
+				\SGalinski\Srectorprefix20211231gJobs\Controller\JobTeaserController::class => ''
 			]
 		);
 		// Backend preview for plugins
@@ -110,9 +110,9 @@ call_user_func(
 		// Class aliasing for TYPO3 version compatibility
 		if (!class_exists('SgJobsPageRepository')) {
 			if (version_compare(\TYPO3\CMS\Core\Utility\VersionNumberUtility::getCurrentTypo3Version(), '10.3.0', '>=')) {
-				class_alias('\TYPO3\CMS\Core\Domain\Repository\PageRepository', 'SgJobsPageRepository');
+				class_alias(\TYPO3\CMS\Core\Domain\Repository\PageRepository::class, 'SgJobsPageRepository');
 			} else {
-				class_alias('\TYPO3\CMS\Frontend\Page\PageRepository', 'SgJobsPageRepository');
+				class_alias(\TYPO3\CMS\Core\Domain\Repository\PageRepository::class, 'SgJobsPageRepository');
 			}
 		}
 	}
diff --git a/ext_tables.php b/ext_tables.php
index d27878133187edac617545c8a0b90998f8c0c95b..b223ba7b47bf71ee8013464866ae07598d1d14cf 100644
--- a/ext_tables.php
+++ b/ext_tables.php
@@ -46,12 +46,12 @@ call_user_func(
 
 		// Register backend modules
 		\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
-			'SGalinski.sg_jobs',
+			'Srectorprefix20211231gJobs',
 			'web',
 			'Backend',
 			'',
 			[
-				'Backend' => 'index',
+				\SGalinski\Srectorprefix20211231gJobs\Controller\BackendController::class => 'index',
 			],
 			[
 				'access' => 'user,group',