void ZoneServerImplementation::initialize() {
	serverState = LOADING;

	loadGalaxyName();

	processor = new ZoneProcessServer(_this.getReferenceUnsafeStaticCast());
	processor->deploy("ZoneProcessServer");
	processor->initialize();

	zones = new VectorMap<String, ManagedReference<Zone*> >();

	objectManager = ObjectManager::instance();
	objectManager->setZoneProcessor(processor);
	objectManager->updateObjectVersion();

	stringIdManager = StringIdManager::instance();

	reactionManager = new ReactionManager(_this.getReferenceUnsafeStaticCast());
	reactionManager->loadLuaConfig();

	creatureTemplateManager = CreatureTemplateManager::instance();
	creatureTemplateManager->loadTemplates();

	dnaManager = DnaManager::instance();
	dnaManager->loadSampleData();

	phandler = new BasePacketHandler("ZoneServer", zoneHandler);
	phandler->setLogging(false);

	info("Initializing chat manager...", true);

	chatManager = new ChatManager(_this.getReferenceUnsafeStaticCast(), 10000);
	chatManager->deploy("ChatManager");
	chatManager->initiateRooms();

	playerManager = new PlayerManager(_this.getReferenceUnsafeStaticCast(), processor);
	playerManager->deploy("PlayerManager");

	chatManager->setPlayerManager(playerManager);

	craftingManager = new CraftingManager();
	craftingManager->deploy("CraftingManager");
	craftingManager->setZoneProcessor(processor);
	craftingManager->initialize();

	lootManager = new LootManager(craftingManager, objectManager, _this.getReferenceUnsafeStaticCast());
	lootManager->deploy("LootManager");
	lootManager->initialize();

	resourceManager = new ResourceManager(_this.getReferenceUnsafeStaticCast(), processor, objectManager);
	resourceManager->deploy("ResourceManager");

	cityManager = new CityManager(_this.getReferenceUnsafeStaticCast());
	cityManager->deploy("CityManager");
	cityManager->loadLuaConfig();

	auctionManager = new AuctionManager(_this.getReferenceUnsafeStaticCast());
	auctionManager->deploy();

	missionManager = new MissionManager(_this.getReferenceUnsafeStaticCast(), processor);
	missionManager->deploy("MissionManager");

	petManager = new PetManager(_this.getReferenceUnsafeStaticCast());
	petManager->initialize();

	startZones();

	startManagers();

	//serverState = LOCKED;
	serverState = ONLINE; //Test Center does not need to apply this change, but would be convenient for Dev Servers.

	ObjectDatabaseManager::instance()->commitLocalTransaction();
}