protected static function packagesInstall($installerInfo, $event) {
		
		// mark if this is an interactive call or not
		self::$isInteractive = $event->getIO()->isInteractive();
		
		// initialize a bunch of stuff like config and console
		self::init();
		
		// reorder packages so the starterkit is first if it's being installed as a package
		if (isset($installerInfo["packages"])) {
			
			$packages = $installerInfo["packages"];
			$packages = array_merge(array_filter($packages, "self::includeStarterKit"), array_filter($packages, "self::excludeStarterKit"));
			
			foreach ($packages as $package) {
				
				// set-up package info
				$extra     = $package["extra"];
				$type      = $package["type"];
				$name      = $package["name"];
				$pathBase  = $package["pathBase"];
				$pathDist  = $package["pathDist"];
				
				// make sure that it has the name-spaced section of data to be parsed. if it exists parse it
				if (!empty($extra)) {
					self::parseComposerExtraList($extra, $name, $pathDist);
				}
				
				// see if the package has a listener
				self::scanForListener($pathBase);
				
				// address other specific needs based on type
				if ($type == "patternlab-patternengine") {
					self::scanForPatternEngineRule($pathBase);
				} else if (($type == "patternlab-styleguidekit") && (strpos($name,"-assets-") === false)) {
					$dir = str_replace(Config::getOption("baseDir"), "", $pathBase);
					$dir = ($dir[strlen($dir)-1] == DIRECTORY_SEPARATOR) ? rtrim($dir, DIRECTORY_SEPARATOR) : $dir;
					Config::updateConfigOption("styleguideKit",$name);
					Config::updateConfigOption("styleguideKitPath",$dir);
				}
				
			}
			
		}
		
		// make sure user is prompted to install starterkit
		if (!empty($installerInfo["suggestedStarterKits"])) {
			self::promptStarterKitInstall($installerInfo["suggestedStarterKits"]);
		}
		
		// override any configs that have been set-up
		if (!empty($installerInfo["configOverrides"])) {
			foreach ($installerInfo["configOverrides"] as $option => $value) {
				Config::updateConfigOption($option,$value, true); // forces the update
			}
		}
		
		if ($installerInfo["projectInstall"]) {
			
			Console::writeLine("");
			Console::writeLine("<h1><fire3>Thank you for installing...</fire3></h1>", false, true);
			Console::writeLine("<fire1>(                               (             </fire1>");
			Console::writeLine("<fire2>)\ )        )   )               )\ )         )</fire2>");
			Console::writeLine("<fire3>(()/(   ) ( /(( /(  (  (        (()/(    ) ( /(</fire3>");
			Console::writeLine("<fire4>/(_)| /( )\())\())))\ )(   (    /(_))( /( )\())</fire4>");
			Console::writeLine("<fire5>(</fire5><cool>_</cool><fire5>)) )(_)|</fire5><cool>_</cool><fire5>))(</fire5><cool>_</cool><fire5>))//((_|()\  )\ )(</fire5><cool>_</cool><fire5>))  )(_)|(_)\</fire5>");
			Console::writeLine("<cool>| _ </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |_| |_</cool><fire6>(</fire6><cool>_</cool><fire6>))  ((</fire6><cool>_</cool><fire6>)</fire6><cool>_</cool><fire6>(</fire6><cool>_</cool><fire6>/(</fire6><cool>| |  </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |</cool><fire6>(</fire6><cool>_</cool><fire6>)</fire6>");
			Console::writeLine("<cool>|  _/ _` |  _|  _/ -_)| '_| ' \</cool><fire6>))</fire6><cool> |__/ _` | '_ \  </cool>");
			Console::writeLine("<cool>|_| \__,_|\__|\__\___||_| |_||_||____\__,_|_.__/  </cool>", false, true);

		}
		
	}