Index: typo3/sysext/em/classes/index.php
===================================================================
--- typo3/sysext/em/classes/index.php	(revision 9639)
+++ typo3/sysext/em/classes/index.php	(revision )
@@ -107,13 +107,6 @@
 		'excludeFromUpdates' => '#cf7307'
 	);
 
-	/**
-	 * "TYPE" information; labels, paths, description etc. See init()
-	 */
-	var $typeLabels = array();
-	var $typeDescr = array();
-	var $typeBackPaths = array(); // Also static, set in init()
-
 	var $detailCols = array(
 		0 => 2,
 		1 => 5,
@@ -150,6 +143,13 @@
 	var $gzcompress = 0; // Is set true, if system support compression.
 
 	/**
+	 * Instance of EM API
+	 *
+	 * @var tx_em_API
+	 */
+	protected $api;
+
+	/**
 	 * instance of TER connection handler
 	 *
 	 * @var tx_em_Connection_Ter
@@ -260,21 +260,6 @@
 			'excludeFromUpdates' => $GLOBALS['LANG']->getLL('state_exclude_from_updates')
 		);
 
-		/**
-		 * "TYPE" information; labels, paths, description etc.
-		 */
-		$this->typeLabels = array(
-			'S' => $GLOBALS['LANG']->getLL('type_system'),
-			'G' => $GLOBALS['LANG']->getLL('type_global'),
-			'L' => $GLOBALS['LANG']->getLL('type_local'),
-		);
-		$this->typeDescr = array(
-			'S' => $GLOBALS['LANG']->getLL('descr_system'),
-			'G' => $GLOBALS['LANG']->getLL('descr_global'),
-			'L' => $GLOBALS['LANG']->getLL('descr_local'),
-		);
-
-
 		$this->script = 'mod.php?M=tools_em';
 		$this->privacyNotice = $GLOBALS['LANG']->getLL('privacy_notice');
 		$securityMessage = $GLOBALS['LANG']->getLL('security_warning_extensions') .
@@ -316,6 +301,7 @@
 		$this->doc->setModuleTemplate('templates/em_index.html');
 
 		// Initialize helper objects
+		$this->api = t3lib_div::makeInstance('tx_em_API');
 		$this->terConnection = t3lib_div::makeInstance('tx_em_Connection_Ter', $this);
 		$this->terConnection->wsdlURL = $TYPO3_CONF_VARS['EXT']['em_wsdlURL'];
 
@@ -2181,7 +2167,7 @@
 			$content .= '<a class="t3-link" href="#" onclick="' . htmlspecialchars($onClick) .
 					' return false;"><strong>' . $updateEMConf . '</strong> ' .
 					sprintf($GLOBALS['LANG']->getLL('extDelete_from_location'),
-						$this->typeLabels[$extInfo['type']],
+						$this->api->typeLabels[$extInfo['type']],
 						substr($absPath, strlen(PATH_site))
 					) . '</a>';
 			$content .= '<br /><br />' . $GLOBALS['LANG']->getLL('extUpdateEMCONF_info_changes') . '<br />
Index: typo3/sysext/em/classes/extensions/class.tx_em_extensions_details.php
===================================================================
--- typo3/sysext/em/classes/extensions/class.tx_em_extensions_details.php	(revision 9440)
+++ typo3/sysext/em/classes/extensions/class.tx_em_extensions_details.php	(revision )
@@ -40,6 +40,13 @@
 	protected $parentObject;
 
 	/**
+	 * Instance of EM API
+	 *
+	 * @var tx_em_API
+	 */
+	protected $api;
+
+	/**
 	 * Class for install extensions
 	 *
 	 * @var em_install
@@ -53,6 +60,7 @@
 	 */
 	public function __construct($parentObject = NULL) {
 		$this->parentObject = $parentObject;
+		$this->api = t3lib_div::makeInstance('tx_em_API');
 		$this->install = t3lib_div::makeInstance('tx_em_Install', $this);
 		$GLOBALS['LANG']->includeLLFile(t3lib_extMgm::extPath('em') . 'language/locallang.xml');
 	}
@@ -565,7 +573,7 @@
 
 			$headerCol = $GLOBALS['LANG']->getLL('extInfoArray_inst_type');
 			$headerCol = t3lib_BEfunc::wrapInHelp($this->parentObject->descrTable, 'emconf_type', $headerCol);
-			$dataCol = $this->parentObject->typeLabels[$extInfo['type']] . ' - <em>' . $this->parentObject->typeDescr[$extInfo['type']] . '</em>';
+			$dataCol = $this->api->typeLabels[$extInfo['type']] . ' - <em>' . $this->parentObject->typeDescr[$extInfo['type']] . '</em>';
 			$lines[] = array($headerCol, $dataCol);
 
 
@@ -735,13 +743,13 @@
 			$others = array();
 			for ($a = 0; $a < strlen($dbInst); $a++) {
 				if (substr($dbInst, $a, 1) != $current) {
-					$others[] = '"' . $this->parentObject->typeLabels[substr($dbInst, $a, 1)] . '"';
+					$others[] = '"' . $this->api->typeLabels[substr($dbInst, $a, 1)] . '"';
 				}
 			}
 			return tx_em_Tools::rfw(
 				sprintf($GLOBALS['LANG']->getLL('extInfoArray_double_installation_infotext'),
 					implode(' ' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:and') . ' ', $others),
-					$this->parentObject->typeLabels[$current]
+					$this->api->typeLabels[$current]
 				)
 			);
 		} else {
Index: typo3/sysext/em/classes/class.tx_em_api.php
===================================================================
--- typo3/sysext/em/classes/class.tx_em_api.php	(revision )
+++ typo3/sysext/em/classes/class.tx_em_api.php	(revision )
@@ -0,0 +1,73 @@
+<?php
+/***************************************************************
+ *  Copyright notice
+ *
+ *  (c) 2010 Steffen Kamper <steffen@typo3.org>
+ *  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 2 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.
+ *  A copy is found in the textfile GPL.txt and important notices to the license
+ *  from the author is found in LICENSE.txt distributed with these scripts.
+ *
+ *
+ *  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!
+ ***************************************************************/
+
+class tx_em_API {
+
+	/**
+	 * @var array
+	 */
+	public $typeLabels = array();
+
+	/**
+	 * @var array
+	 */
+	public $typeDescr = array();
+
+	/**
+	 * @var array
+	 */
+	public $typeBackPaths = array();
+
+
+	/**
+	 * Constructor
+	 *
+	 * @return void
+	 */
+	public function __construct() {
+
+		// load langauge file
+		$GLOBALS['LANG']->includeLLFile(t3lib_extMgm::extPath('em') . 'language/locallang.xml');
+
+		/**
+		 * "TYPE" information; labels, paths, description etc.
+		 */
+		$this->typeLabels = array(
+			'S' => $GLOBALS['LANG']->getLL('type_system'),
+			'G' => $GLOBALS['LANG']->getLL('type_global'),
+			'L' => $GLOBALS['LANG']->getLL('type_local'),
+		);
+		$this->typeDescr = array(
+			'S' => $GLOBALS['LANG']->getLL('descr_system'),
+			'G' => $GLOBALS['LANG']->getLL('descr_global'),
+			'L' => $GLOBALS['LANG']->getLL('descr_local'),
+		);
+
+
+
+	}
+}
Index: typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php
===================================================================
--- typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php	(revision 9639)
+++ typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php	(revision )
@@ -36,6 +36,13 @@
 
 	protected $parentObject;
 
+	/**
+	 * Instance of EM API
+	 *
+	 * @var tx_em_API
+	 */
+	protected $api;
+
 	protected $categories;
 	protected $types;
 
@@ -47,6 +54,7 @@
 	 */
 	public function __construct($parentObject = NULL) {
 		$this->parentObject = $parentObject;
+		$this->api = t3lib_div::makeInstance('tx_em_API');
 		$this->install = t3lib_div::makeInstance('tx_em_Install', $this);
 
 		$this->categories = array(
@@ -581,7 +589,7 @@
 					);
 					$doubleInstall = ' <strong><abbr title="' . $doubleInstallTitle . '">' . tx_em_Tools::rfw($extInfo['doubleInstall']) . '</abbr></strong>';
 				}
-				$cells[] = '<td nowrap="nowrap">' . $this->parentObject->typeLabels[$extInfo['type']] . $doubleInstall . '</td>';
+				$cells[] = '<td nowrap="nowrap">' . $this->api->typeLabels[$extInfo['type']] . $doubleInstall . '</td>';
 			} else { // Listing extensions from REMOTE repository:
 				$inst_curVer = $inst_list[$extKey]['EM_CONF']['version'];
 				if (isset($inst_list[$extKey])) {
@@ -592,7 +600,7 @@
 				$cells[] = '<td nowrap="nowrap">' . t3lib_befunc::date($extInfo['EM_CONF']['lastuploaddate']) . '</td>';
 				$cells[] = '<td nowrap="nowrap">' . htmlspecialchars(t3lib_div::fixed_lgd_cs($extInfo['EM_CONF']['author'], $GLOBALS['BE_USER']->uc[titleLen])) . '</td>';
 				$cells[] = '<td nowrap="nowrap">' . $inst_curVer . '</td>';
-				$cells[] = '<td nowrap="nowrap">' . $this->parentObject->typeLabels[$inst_list[$extKey]['type']] . (strlen($inst_list[$extKey]['doubleInstall']) > 1 ? '<strong> ' . tx_em_Tools::rfw($inst_list[$extKey]['doubleInstall']) . '</strong>' : '') . '</td>';
+				$cells[] = '<td nowrap="nowrap">' . $this->api->typeLabels[$inst_list[$extKey]['type']] . (strlen($inst_list[$extKey]['doubleInstall']) > 1 ? '<strong> ' . tx_em_Tools::rfw($inst_list[$extKey]['doubleInstall']) . '</strong>' : '') . '</td>';
 				$cells[] = '<td nowrap="nowrap">' . ($extInfo['downloadcounter_all'] ? $extInfo['downloadcounter_all'] : '&nbsp;&nbsp;') . '/' . ($extInfo['downloadcounter'] ? $extInfo['downloadcounter'] : '&nbsp;') . '</td>';
 			}
 			$cells[] = '<td nowrap="nowrap" class="extstate" style="background-color:' . $this->parentObject->stateColors[$extInfo['EM_CONF']['state']] . ';">' . $this->parentObject->states[$extInfo['EM_CONF']['state']] . '</td>';
@@ -697,7 +705,7 @@
 						'<td valign="top">' . $name . '</td>' .
 						'<td valign="top" align="right">' . $data[EM_CONF][version] . '</td>' .
 						'<td valign="top" align="right">' . $lastversion . '</td>' .
-						'<td valign="top" nowrap="nowrap">' . $this->parentObject->typeLabels[$data['type']] . (strlen($data['doubleInstall']) > 1 ? '<strong> ' . tx_em_Tools::rfw($extInfo['doubleInstall']) . '</strong>' : '') . '</td>' .
+						'<td valign="top" nowrap="nowrap">' . $this->api->typeLabels[$data['type']] . (strlen($data['doubleInstall']) > 1 ? '<strong> ' . tx_em_Tools::rfw($extInfo['doubleInstall']) . '</strong>' : '') . '</td>' .
 						'<td valign="top">' . $comment . '</td></tr>' . LF .
 						$warn .
 						'<tr class="bgColor4"><td colspan="7"><hr style="margin:0px" /></td></tr>' . LF;
Index: typo3/sysext/em/classes/install/class.tx_em_install.php
===================================================================
--- typo3/sysext/em/classes/install/class.tx_em_install.php	(revision 9640)
+++ typo3/sysext/em/classes/install/class.tx_em_install.php	(revision )
@@ -43,7 +43,14 @@
 	protected $parentObject;
 
 	/**
+	 * Instance of EM API
 	 *
+	 * @var tx_em_API
+	 */
+	protected $api;
+
+	/**
+	 *
 	 * @var t3lib_install
 	 */
 	protected $install;
@@ -59,6 +66,7 @@
 	public function __construct($parentObject = NULL) {
 		$GLOBALS['LANG']->includeLLFile(t3lib_extMgm::extPath('em', 'language/locallang.xml'));
 		$this->parentObject = $parentObject;
+		$this->api = t3lib_div::makeInstance('tx_em_API');
 		$this->install = t3lib_div::makeInstance('t3lib_install');
 		$this->install->INSTALL = t3lib_div::_GP('TYPO3_INSTALL');
 		$this->systemInstall = isset($GLOBALS['TYPO3_CONF_VARS']['EXT']['allowSystemInstall']) && $GLOBALS['TYPO3_CONF_VARS']['EXT']['allowSystemInstall'];
@@ -202,7 +210,7 @@
 
 											$messageContent .= 'ext_emconf.php: ' . $extDirPath . 'ext_emconf.php<br />';
 											$messageContent .= $GLOBALS['LANG']->getLL('ext_import_ext_type') . ' ';
-											$messageContent .= $this->typeLabels[$loc] . '<br />';
+											$messageContent .= $this->api->typeLabels[$loc] . '<br />';
 											$messageContent .= '<br />';
 
 											// Remove cache files:
@@ -537,7 +545,7 @@
 			return $GLOBALS['LANG']->getLL('extDelete_ext_active');
 		} elseif (!tx_em_Tools::deleteAsType($extInfo['type'])) {
 			return sprintf($GLOBALS['LANG']->getLL('extDelete_wrong_scope'),
-				$this->typeLabels[$extInfo['type']]
+				$this->api->typeLabels[$extInfo['type']]
 			);
 		} elseif (t3lib_div::inList('G,L', $extInfo['type'])) {
 			if ($command['doDelete'] && !strcmp($absPath, urldecode($command['absPath']))) {
@@ -570,7 +578,7 @@
 				$content .= '<a class="t3-link" href="#" onclick="' . htmlspecialchars($onClick) .
 						' return false;"><strong>' . $deleteFromServer . '</strong> ' .
 						sprintf($GLOBALS['LANG']->getLL('extDelete_from_location'),
-							$this->typeLabels[$extInfo['type']],
+							$this->api->typeLabels[$extInfo['type']],
 							substr($absPath, strlen(PATH_site))
 						) . '</a>';
 				$content .= '<br /><br />' . $GLOBALS['LANG']->getLL('extDelete_backup');
Index: typo3/sysext/em/ext_autoload.php
===================================================================
--- typo3/sysext/em/ext_autoload.php	(revision 9477)
+++ typo3/sysext/em/ext_autoload.php	(revision )
@@ -4,7 +4,8 @@
 return array(
 	'tx_em_index_checkdatabaseupdateshook' => $emInterfacesPath . 'interface.tx_em_index_checkdatabaseupdateshook.php',
 
-	'sc_mod_tools_em_index' => $emClassesPath . '../classes/index.php',
+	'sc_mod_tools_em_index' => $emClassesPath . 'index.php',
+	'tx_em_api' => $emClassesPath . 'class.tx_em_api.php',
 
 	'tx_em_connection_ter' => $emClassesPath . 'connection/class.tx_em_connection_ter.php',
 	'tx_em_connection_soap' => $emClassesPath . 'connection/class.tx_em_connection_soap.php',
