 		{
 			logger.info('installing extension {0}', [extensionClass]);
 			_destroyed && throwContextDestroyedError();
-			if (extensionClasses.indexOf(extensionClass) != -1)
-				return this;
-
-			extensionClasses.push(extensionClass);
-
-			if (initialized)
-			{
-				const extension:IContextExtension = createExtension(extensionClass);
-				extension.install(this);
-				extension.initialize();
-			}
-
+			extensionManager.addExtension(extensionClass);
 			return this;
 		}
 


		private const configClasses:Vector.<Class> = new Vector.<Class>;

		private const extensionByClass:Dictionary = new Dictionary();

		private const extensionClasses:Vector.<Class> = new Vector.<Class>;

		public function Context()
		{
			// This page intentionally left blank
		}

		public function destroy():void
		{
			logger.info('destroying context');
			_destroyed && throwContextDestroyedError();
			uninstallExtensions();
			_destroyed = true;
		}

		public function initialize():void

	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
	import flash.system.ApplicationDomain;
	import org.robotlegs.v2.core.api.IContext;
	import org.robotlegs.v2.core.api.IContextConfig;
	import org.robotlegs.v2.core.api.IContextExtension;
