Index: branches/5.2.x/core/kernel/application.php
===================================================================
--- branches/5.2.x/core/kernel/application.php
+++ branches/5.2.x/core/kernel/application.php
@@ -2148,6 +2148,18 @@
 	}
 
 	/**
+	 * Finds the absolute path to the file where the class is defined.
+	 *
+	 * @param string $class The name of the class.
+	 *
+	 * @return string|false
+	 */
+	public function findClassFile($class)
+	{
+		return $this->Factory->findClassFile($class);
+	}
+
+	/**
 	 * Add new scheduled task
 	 *
 	 * @param string $short_name name to be used to store last maintenance run info
Index: branches/5.2.x/core/kernel/utility/factory.php
===================================================================
--- branches/5.2.x/core/kernel/utility/factory.php
+++ branches/5.2.x/core/kernel/utility/factory.php
@@ -85,6 +85,24 @@
 	}
 
 	/**
+	 * Finds the absolute path to the file where the class is defined.
+	 *
+	 * @param string $class The name of the class.
+	 *
+	 * @return string|false
+	 */
+	public function findClassFile($class)
+	{
+		$file = $this->findFile($class);
+
+		if ( $file ) {
+			return FULL_PATH . $file;
+		}
+
+		return false;
+	}
+
+	/**
 	 * Finds the path to the file where the class is defined.
 	 *
 	 * @param string $class The name of the class
@@ -344,4 +362,4 @@
 
 class kFactoryException extends Exception {
 
-}
\ No newline at end of file
+}
Index: branches/5.2.x/core/units/structure/structure_config.php
===================================================================
--- branches/5.2.x/core/units/structure/structure_config.php
+++ branches/5.2.x/core/units/structure/structure_config.php
@@ -15,11 +15,11 @@
 defined('FULL_PATH') or die('restricted access!');
 
 	$config = Array (
-		'Prefix'			=>	'st',
-		'ItemClass'			=>	Array('class'=>'CategoriesItem','file'=>'structure_item.php', 'build_event'=>'OnItemBuild'),
-		'ListClass'			=>	Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'),
-		'EventHandlerClass'	=>	Array('class'=>'CategoriesEventHandler','file'=>'structure_eh.php', 'build_event'=>'OnBuild'),
-		'TagProcessorClass' =>	Array('class'=>'CategoriesTagProcessor','file'=>'structure_tp.php', 'build_event'=>'OnBuild'),
+		'Prefix' => 'st',
+		'ItemClass'         => array('class' => 'CategoriesItem', 'file' => '../categories/categories_item.php', 'build_event' => 'OnItemBuild'),
+		'ListClass'         => array('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
+		'EventHandlerClass' => array('class' => 'CategoriesEventHandler', 'file' => '../categories/categories_event_handler.php', 'build_event' => 'OnBuild'),
+		'TagProcessorClass' => array('class' => 'CategoriesTagProcessor', 'file' => '../categories/categories_tag_processor.php', 'build_event' => 'OnBuild'),
 
 		'AutoLoad'				=>	true,
 
@@ -273,4 +273,4 @@
 			'DefaultSorting1Dir'	=>	'Category_Sortorder',
 			'DefaultSorting2Dir'	=>	'Category_Sortorder2',
 		),
-	);
\ No newline at end of file
+	);
Index: branches/5.2.x/core/units/structure/structure_eh.php
===================================================================
--- branches/5.2.x/core/units/structure/structure_eh.php
+++ branches/5.2.x/core/units/structure/structure_eh.php
@@ -1,15 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.org/license for copyright notices and details.
-*/
-
-kUtil::includeOnce(FULL_PATH . '/core/units/categories/categories_event_handler.php');
\ No newline at end of file
Index: branches/5.2.x/core/units/structure/structure_item.php
===================================================================
--- branches/5.2.x/core/units/structure/structure_item.php
+++ branches/5.2.x/core/units/structure/structure_item.php
@@ -1,15 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.org/license for copyright notices and details.
-*/
-
-kUtil::includeOnce(FULL_PATH . '/core/units/categories/categories_item.php');
\ No newline at end of file
Index: branches/5.2.x/core/units/structure/structure_tp.php
===================================================================
--- branches/5.2.x/core/units/structure/structure_tp.php
+++ branches/5.2.x/core/units/structure/structure_tp.php
@@ -1,15 +0,0 @@
-<?php
-/**
-* @version	$Id$
-* @package	In-Portal
-* @copyright	Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
-* @license      GNU/GPL
-* In-Portal is Open Source software.
-* This means that this software may have been modified pursuant
-* the GNU General Public License, and as distributed it includes
-* or is derivative of works licensed under the GNU General Public License
-* or other free or open source software licenses.
-* See http://www.in-portal.org/license for copyright notices and details.
-*/
-
-kUtil::includeOnce(FULL_PATH . '/core/units/categories/categories_tag_processor.php');
\ No newline at end of file
Index: branches/5.2.x/tools/class_locator.php
===================================================================
--- branches/5.2.x/tools/class_locator.php
+++ branches/5.2.x/tools/class_locator.php
@@ -0,0 +1,37 @@
+<?php
+/**
+* @version	$Id$
+* @package	In-Portal
+* @copyright	Copyright (C) 1997 - 2016 Intechnic. All rights reserved.
+* @license      GNU/GPL
+* In-Portal is Open Source software.
+* This means that this software may have been modified pursuant
+* the GNU General Public License, and as distributed it includes
+* or is derivative of works licensed under the GNU General Public License
+* or other free or open source software licenses.
+* See http://www.in-portal.org/license for copyright notices and details.
+*/
+
+$start = microtime(true);
+
+define('DBG_ZEND_PRESENT', 1);
+define('INDEX_FILE', 'index.php');
+define('FULL_PATH', realpath(dirname(__FILE__) . '/..'));
+
+include_once(FULL_PATH . '/core/kernel/startup.php');
+
+$application = kApplication::Instance();
+$application->Init();
+
+/** @var \Composer\Autoload\ClassLoader $composer_class_loader */
+$composer_class_loader = require FULL_PATH . '/vendor/autoload.php';
+
+return function ($class) use ($application, $composer_class_loader) {
+	$file = $application->findClassFile($class);
+
+	if ( $file !== false ) {
+		return $file;
+	}
+
+	return $composer_class_loader->findFile($class);
+};