[Avida-SVN] r1624 - in branches/collect: Avida.xcodeproj documentation source source/actions source/cpu source/drivers source/main source/targets/avida-viewer source/tools support/config

blwalker at myxo.css.msu.edu blwalker at myxo.css.msu.edu
Tue May 29 11:12:46 PDT 2007


Author: blwalker
Date: 2007-05-29 14:12:46 -0400 (Tue, 29 May 2007)
New Revision: 1624

Modified:
   branches/collect/Avida.xcodeproj/project.pbxproj
   branches/collect/documentation/actions.html
   branches/collect/source/actions/PrintActions.cc
   branches/collect/source/cpu/cHardwareGX.cc
   branches/collect/source/cpu/cHardwareGX.h
   branches/collect/source/cpu/cHardwareTransSMT.cc
   branches/collect/source/defs.h
   branches/collect/source/drivers/cDefaultRunDriver.cc
   branches/collect/source/main/avida.cc
   branches/collect/source/main/cAvidaConfig.h
   branches/collect/source/main/cOrganism.cc
   branches/collect/source/main/cOrganism.h
   branches/collect/source/main/cPhenotype.cc
   branches/collect/source/main/cPhenotype.h
   branches/collect/source/main/cPopulation.cc
   branches/collect/source/main/cStats.cc
   branches/collect/source/main/cStats.h
   branches/collect/source/main/cTaskLib.cc
   branches/collect/source/targets/avida-viewer/cSymbolUtil.cc
   branches/collect/source/targets/avida-viewer/cZoomScreen.cc
   branches/collect/source/tools/tArray.h
   branches/collect/support/config/avida.cfg
Log:

Oops, only committed tests/ changes in the last one.

Porting r1594:1621 from development; next port should be based at r1624.


Modified: branches/collect/Avida.xcodeproj/project.pbxproj
===================================================================
--- branches/collect/Avida.xcodeproj/project.pbxproj	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/Avida.xcodeproj/project.pbxproj	2007-05-29 18:12:46 UTC (rev 1624)
@@ -6,52 +6,165 @@
 	objectVersion = 42;
 	objects = {
 
+/* Begin PBXAggregateTarget section */
+		7023ED520C0A590200362B9C /* full-suite */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = 7023ED590C0A594300362B9C /* Build configuration list for PBXAggregateTarget "full-suite" */;
+			buildPhases = (
+			);
+			dependencies = (
+				7023ED540C0A590B00362B9C /* PBXTargetDependency */,
+				7023ED560C0A590F00362B9C /* PBXTargetDependency */,
+				7023ED580C0A591100362B9C /* PBXTargetDependency */,
+			);
+			name = "full-suite";
+			productName = "full-suite";
+		};
+/* End PBXAggregateTarget section */
+
 /* Begin PBXBuildFile section */
-		1097463F0AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
-		109746410AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
-		109746430AE9606E00929ED6 /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
-		4233358A0BC067E3000DF681 /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
-		7005A70409BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
-		7005A70609BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
-		7005A70809BA0FA90007E16E /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
 		700E2996085A1F6000CF158A /* avida in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3164D07626CF3008F7A48 /* avida */; };
-		700E2AF8085DE50C00CF158A /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
 		700E2B87085DE54400CF158A /* avida-viewer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 700E2B83085DE50C00CF158A /* avida-viewer */; };
-		7013846209028B3E0087ED2E /* cAvidaConfig.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7013846009028B3E0087ED2E /* cAvidaConfig.cc */; };
-		7013846409028B3E0087ED2E /* cAvidaConfig.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7013846009028B3E0087ED2E /* cAvidaConfig.cc */; };
-		701D915D094B864A008B845F /* cFallbackWorldDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D915C094B864A008B845F /* cFallbackWorldDriver.cc */; };
-		701D915E094B864A008B845F /* cFallbackWorldDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D915C094B864A008B845F /* cFallbackWorldDriver.cc */; };
-		701D930E094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */; };
-		701D9310094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */; };
-		701D9383094CBA69008B845F /* cDriverManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D9382094CBA69008B845F /* cDriverManager.cc */; };
-		701D9384094CBA69008B845F /* cDriverManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D9382094CBA69008B845F /* cDriverManager.cc */; };
-		701D93E9094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */; };
-		701D93EB094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */; };
-		702D4F0108DA5341007BA469 /* cEnvironment.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFC08DA5341007BA469 /* cEnvironment.cc */; };
-		702D4F0208DA5341007BA469 /* cPopulationInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFD08DA5341007BA469 /* cPopulationInterface.cc */; };
-		702D4F0608DA5341007BA469 /* cEnvironment.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFC08DA5341007BA469 /* cEnvironment.cc */; };
-		702D4F0708DA5341007BA469 /* cPopulationInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFD08DA5341007BA469 /* cPopulationInterface.cc */; };
-		702D4F4508DA61FE007BA469 /* cBirthChamber.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4F3F08DA61FE007BA469 /* cBirthChamber.cc */; };
-		702D4F4B08DA61FE007BA469 /* cBirthChamber.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4F3F08DA61FE007BA469 /* cBirthChamber.cc */; };
-		702F52AA0992F8F600B2B507 /* cSymbolTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702F52A80992F8F600B2B507 /* cSymbolTable.cc */; };
-		702F52E10992FD8000B2B507 /* cScriptObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702F52DF0992FD8000B2B507 /* cScriptObject.cc */; };
+		7023EC3A0C0A431B00362B9C /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
+		7023EC3B0C0A431B00362B9C /* cActionLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051BA0A1F66B400CBB8B6 /* cActionLibrary.cc */; };
+		7023EC3C0C0A431B00362B9C /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
+		7023EC3D0C0A431B00362B9C /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
+		7023EC3E0C0A431B00362B9C /* cAnalyzeJobQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A16F09A8014600038658 /* cAnalyzeJobQueue.cc */; };
+		7023EC3F0C0A431B00362B9C /* cAnalyzeJobWorker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A1B409A810CB00038658 /* cAnalyzeJobWorker.cc */; };
+		7023EC400C0A431B00362B9C /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
+		7023EC410C0A431B00362B9C /* cArgSchema.cc in Sources */ = {isa = PBXBuildFile; fileRef = 703D4D6D0ABA374A0032C8A0 /* cArgSchema.cc */; };
+		7023EC420C0A431B00362B9C /* cAvidaConfig.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7013846009028B3E0087ED2E /* cAvidaConfig.cc */; };
+		7023EC430C0A431B00362B9C /* cBirthChamber.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4F3F08DA61FE007BA469 /* cBirthChamber.cc */; };
+		7023EC440C0A431B00362B9C /* cChangeList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087DF08F5F4BA00FC65FE /* cChangeList.cc */; };
+		7023EC450C0A431B00362B9C /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
+		7023EC460C0A431B00362B9C /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
+		7023EC470C0A431B00362B9C /* cConstSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E008F5F4BA00FC65FE /* cConstSchedule.cc */; };
+		7023EC480C0A431B00362B9C /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
+		7023EC490C0A431B00362B9C /* cCPUStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF6108C3954700F50912 /* cCPUStack.cc */; };
+		7023EC4A0C0A431B00362B9C /* cCPUTestInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF7108C3968700F50912 /* cCPUTestInfo.cc */; };
+		7023EC4B0C0A431B00362B9C /* cDataFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0884F08F5FE5800FC65FE /* cDataFile.cc */; };
+		7023EC4C0C0A431B00362B9C /* cDataFileManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885008F5FE5800FC65FE /* cDataFileManager.cc */; };
+		7023EC4D0C0A431B00362B9C /* cDataManager_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885108F5FE5800FC65FE /* cDataManager_Base.cc */; };
+		7023EC4E0C0A431B00362B9C /* cDefaultAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */; };
+		7023EC4F0C0A431B00362B9C /* cDefaultMessageDisplay.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885208F5FE5800FC65FE /* cDefaultMessageDisplay.cc */; };
+		7023EC500C0A431B00362B9C /* cDefaultRunDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */; };
+		7023EC510C0A431B00362B9C /* cDeme.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1097463D0AE9606E00929ED6 /* cDeme.cc */; };
+		7023EC520C0A431B00362B9C /* cDoubleSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885308F5FE5800FC65FE /* cDoubleSum.cc */; };
+		7023EC530C0A431B00362B9C /* cDriverManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D9382094CBA69008B845F /* cDriverManager.cc */; };
+		7023EC540C0A431B00362B9C /* cEnvironment.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFC08DA5341007BA469 /* cEnvironment.cc */; };
+		7023EC550C0A431B00362B9C /* cEventList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708BF2FD0AB65DC700A923BF /* cEventList.cc */; };
+		7023EC560C0A431B00362B9C /* cFallbackWorldDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D915C094B864A008B845F /* cFallbackWorldDriver.cc */; };
+		7023EC570C0A431B00362B9C /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
+		7023EC580C0A431B00362B9C /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
+		7023EC590C0A431B00362B9C /* cGenome.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB408DB7F8200068AC2 /* cGenome.cc */; };
+		7023EC5A0C0A431B00362B9C /* cGenomeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB508DB7F8200068AC2 /* cGenomeUtil.cc */; };
+		7023EC5B0C0A431B00362B9C /* cGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DC9E09293E6F009E311D /* cGenotype.cc */; };
+		7023EC5C0C0A431B00362B9C /* cGenotype_BirthData.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE700929678E009E311D /* cGenotype_BirthData.cc */; };
+		7023EC5D0C0A431B00362B9C /* cGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6809296613009E311D /* cGenotypeControl.cc */; };
+		7023EC5E0C0A431B00362B9C /* cHardwareBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA308C39F2100F50912 /* cHardwareBase.cc */; };
+		7023EC5F0C0A431B00362B9C /* cHardwareCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA508C39F2100F50912 /* cHardwareCPU.cc */; };
+		7023EC600C0A431B00362B9C /* cHardwareExperimental.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B1A64F0B7E237F00067486 /* cHardwareExperimental.cc */; };
+		7023EC610C0A431B00362B9C /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
+		7023EC620C0A431B00362B9C /* cHardwareManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BD690905CE5F0028A785 /* cHardwareManager.cc */; };
+		7023EC630C0A431B00362B9C /* cHardwareSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02308C3C71300F50912 /* cHardwareSMT.cc */; };
+		7023EC640C0A431B00362B9C /* cHardwareStatusPrinter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02408C3C71300F50912 /* cHardwareStatusPrinter.cc */; };
+		7023EC650C0A431B00362B9C /* cHardwareTransSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7049F2D70A66859300640512 /* cHardwareTransSMT.cc */; };
+		7023EC660C0A431B00362B9C /* cHeadCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02608C3C71300F50912 /* cHeadCPU.cc */; };
+		7023EC670C0A431B00362B9C /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
+		7023EC680C0A431B00362B9C /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
+		7023EC690C0A431B00362B9C /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
+		7023EC6A0C0A431B00362B9C /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
+		7023EC6B0C0A431B00362B9C /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
+		7023EC6C0C0A431B00362B9C /* cInjectGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533364092A3DF4006BD186 /* cInjectGenotype.cc */; };
+		7023EC6D0C0A431B00362B9C /* cInjectGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533366092A3DF4006BD186 /* cInjectGenotypeControl.cc */; };
+		7023EC6E0C0A431B00362B9C /* cInjectGenotypeQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533369092A3DF4006BD186 /* cInjectGenotypeQueue.cc */; };
+		7023EC6F0C0A431B00362B9C /* cInstruction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EBF08DB7F8200068AC2 /* cInstruction.cc */; };
+		7023EC700C0A431B00362B9C /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
+		7023EC710C0A431B00362B9C /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
+		7023EC720C0A431B00362B9C /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
+		7023EC730C0A431B00362B9C /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
+		7023EC740C0A431B00362B9C /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
+		7023EC750C0A431B00362B9C /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705333E5092A4B7C006BD186 /* cLineage.cc */; };
+		7023EC760C0A431B00362B9C /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
+		7023EC770C0A431B00362B9C /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
+		7023EC780C0A431B00362B9C /* cMutationalNeighborhood.cc in Sources */ = {isa = PBXBuildFile; fileRef = 709D924B0A5D950D00D6A163 /* cMutationalNeighborhood.cc */; };
+		7023EC790C0A431B00362B9C /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
+		7023EC7A0C0A431B00362B9C /* cMutationRates.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865708F4974300FC65FE /* cMutationRates.cc */; };
+		7023EC7B0C0A431B00362B9C /* cMxCodeArray.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865808F4974300FC65FE /* cMxCodeArray.cc */; };
+		7023EC7C0C0A431B00362B9C /* cOrganism.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868708F49EA800FC65FE /* cOrganism.cc */; };
+		7023EC7D0C0A431B00362B9C /* cPhenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0869C08F49F4800FC65FE /* cPhenotype.cc */; };
+		7023EC7E0C0A431B00362B9C /* cPopulation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868908F49EA800FC65FE /* cPopulation.cc */; };
+		7023EC7F0C0A431B00362B9C /* cPopulationCell.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868A08F49EA800FC65FE /* cPopulationCell.cc */; };
+		7023EC800C0A431B00362B9C /* cPopulationInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFD08DA5341007BA469 /* cPopulationInterface.cc */; };
+		7023EC810C0A431B00362B9C /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
+		7023EC820C0A431B00362B9C /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
+		7023EC830C0A431B00362B9C /* cReaction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871E08F5E82D00FC65FE /* cReaction.cc */; };
+		7023EC840C0A431B00362B9C /* cReactionLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871F08F5E82D00FC65FE /* cReactionLib.cc */; };
+		7023EC850C0A431B00362B9C /* cReactionResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872208F5E82D00FC65FE /* cReactionResult.cc */; };
+		7023EC860C0A431B00362B9C /* cResource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872308F5E82D00FC65FE /* cResource.cc */; };
+		7023EC870C0A431B00362B9C /* cResourceCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872408F5E82D00FC65FE /* cResourceCount.cc */; };
+		7023EC880C0A431B00362B9C /* cResourceLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872508F5E82D00FC65FE /* cResourceLib.cc */; };
+		7023EC890C0A431B00362B9C /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
+		7023EC8A0C0A431B00362B9C /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
+		7023EC8B0C0A431B00362B9C /* cSpatialCountElem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872608F5E82D00FC65FE /* cSpatialCountElem.cc */; };
+		7023EC8C0C0A431B00362B9C /* cSpatialResCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872708F5E82D00FC65FE /* cSpatialResCount.cc */; };
+		7023EC8D0C0A431B00362B9C /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
+		7023EC8E0C0A431B00362B9C /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
+		7023EC8F0C0A431B00362B9C /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
+		7023EC900C0A431B00362B9C /* cStats.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872B08F5E82D00FC65FE /* cStats.cc */; };
+		7023EC910C0A431B00362B9C /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
+		7023EC920C0A431B00362B9C /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
+		7023EC930C0A431B00362B9C /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
+		7023EC940C0A431B00362B9C /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
+		7023EC950C0A431B00362B9C /* cTaskLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872D08F5E82D00FC65FE /* cTaskLib.cc */; };
+		7023EC960C0A431B00362B9C /* cTestCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02808C3C71300F50912 /* cTestCPU.cc */; };
+		7023EC970C0A431B00362B9C /* cTestCPUInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7005A70209BA0FA90007E16E /* cTestCPUInterface.cc */; };
+		7023EC980C0A431B00362B9C /* cThread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A11F09A7BEFC00038658 /* cThread.cc */; };
+		7023EC990C0A431B00362B9C /* cTools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9008FB2E6B00FC65FE /* cTools.cc */; };
+		7023EC9A0C0A431B00362B9C /* cWeightedIndex.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9108FB2E6B00FC65FE /* cWeightedIndex.cc */; };
+		7023EC9B0C0A431B00362B9C /* cWorld.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BC6309059A970028A785 /* cWorld.cc */; };
+		7023EC9C0C0A431B00362B9C /* DriverActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704ADBC40A6EEFC300666970 /* DriverActions.cc */; };
+		7023EC9D0C0A431B00362B9C /* EnvironmentActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ABB180A8A6A6000A6A80E /* EnvironmentActions.cc */; };
+		7023EC9E0C0A431B00362B9C /* LandscapeActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 707AF04509EAB529001AEA89 /* LandscapeActions.cc */; };
+		7023EC9F0C0A431B00362B9C /* PopulationActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C054C90A4F6E19002703C1 /* PopulationActions.cc */; };
+		7023ECA00C0A431B00362B9C /* PrintActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ACD4D0A13FED4002D5BA0 /* PrintActions.cc */; };
+		7023ECA10C0A431B00362B9C /* SaveLoadActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051A80A1F65FE00CBB8B6 /* SaveLoadActions.cc */; };
+		7023ECA80C0A437200362B9C /* libavida-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7023EC330C0A426900362B9C /* libavida-core.a */; };
+		7023ECBA0C0A441300362B9C /* cEnvironmentScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5C097AF730002F8733 /* cEnvironmentScreen.cc */; };
+		7023ECBB0C0A441500362B9C /* cBarScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC59097AF730002F8733 /* cBarScreen.cc */; };
+		7023ECBC0C0A441800362B9C /* cAnalyzeView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF490B2FBC85001269F6 /* cAnalyzeView.cc */; };
+		7023ECBD0C0A441900362B9C /* cAnalyzeScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF470B2FBC85001269F6 /* cAnalyzeScreen.cc */; };
+		7023ECBE0C0A441C00362B9C /* cHistScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5E097AF730002F8733 /* cHistScreen.cc */; };
+		7023ECBF0C0A441D00362B9C /* cMapScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC61097AF730002F8733 /* cMapScreen.cc */; };
+		7023ECC10C0A442200362B9C /* cMenuWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC63097AF730002F8733 /* cMenuWindow.cc */; };
+		7023ECC30C0A442400362B9C /* cOptionsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC65097AF730002F8733 /* cOptionsScreen.cc */; };
+		7023ECC40C0A442700362B9C /* cScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC67097AF730002F8733 /* cScreen.cc */; };
+		7023ECC50C0A442D00362B9C /* cStatsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC69097AF730002F8733 /* cStatsScreen.cc */; };
+		7023ECC60C0A443000362B9C /* cSymbolUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6B097AF730002F8733 /* cSymbolUtil.cc */; };
+		7023ECC70C0A443500362B9C /* cTextViewerAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF4C0B2FBC85001269F6 /* cTextViewerAnalyzeDriver.cc */; };
+		7023ECC80C0A443800362B9C /* cTextViewerDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6D097AF730002F8733 /* cTextViewerDriver.cc */; };
+		7023ECC90C0A443A00362B9C /* cTextViewerDriver_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF4E0B2FBC85001269F6 /* cTextViewerDriver_Base.cc */; };
+		7023ECCA0C0A443C00362B9C /* cTextWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6F097AF730002F8733 /* cTextWindow.cc */; };
+		7023ECCB0C0A443F00362B9C /* cView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC71097AF730002F8733 /* cView.cc */; };
+		7023ECCC0C0A444200362B9C /* cViewInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC73097AF730002F8733 /* cViewInfo.cc */; };
+		7023ECCD0C0A444600362B9C /* cZoomScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC75097AF730002F8733 /* cZoomScreen.cc */; };
+		7023ECCE0C0A444800362B9C /* viewer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC78097AF730002F8733 /* viewer.cc */; };
+		7023ECD30C0A447700362B9C /* libavida-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7023EC330C0A426900362B9C /* libavida-core.a */; };
+		7023ECD40C0A447800362B9C /* libtcmalloc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 70AA941909D486AE006A24C8 /* libtcmalloc.a */; };
+		7023ECD70C0A44BF00362B9C /* main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC57097AF730002F8733 /* main.cc */; };
+		7023ECD80C0A44C400362B9C /* cASLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731663097C6DF500815164 /* cASLibrary.cc */; };
+		7023ECD90C0A44C600362B9C /* cASSymbol.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731669097C6E0C00815164 /* cASSymbol.cc */; };
+		7023ECDA0C0A44C900362B9C /* cLexer.l in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAD21097AF81A002F8733 /* cLexer.l */; };
+		7023ECDB0C0A44CA00362B9C /* cParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7073165B097C6C8F00815164 /* cParser.cc */; };
+		7023ECDC0C0A44CC00362B9C /* cScriptObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702F52DF0992FD8000B2B507 /* cScriptObject.cc */; };
+		7023ECDD0C0A44CE00362B9C /* cSymbolTable.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702F52A80992F8F600B2B507 /* cSymbolTable.cc */; };
+		7023ECDE0C0A44D800362B9C /* libavida-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7023EC330C0A426900362B9C /* libavida-core.a */; };
+		7023ECDF0C0A44D900362B9C /* libtcmalloc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 70AA941909D486AE006A24C8 /* libtcmalloc.a */; };
 		702F532F0993060A00B2B507 /* avida-s in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70DCAD1C097AF7CC002F8733 /* avida-s */; };
 		7039884D09F00D020052ACE7 /* analyze.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 707AF2D309EE8501001AEA89 /* analyze.cfg */; };
 		7039884E09F00D030052ACE7 /* avida.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 707AF2D509EE8501001AEA89 /* avida.cfg */; };
 		7039884F09F00D060052ACE7 /* environment.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 707AF2D709EE8501001AEA89 /* environment.cfg */; };
 		7039885009F00D080052ACE7 /* events.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 707AF2D809EE8501001AEA89 /* events.cfg */; };
-		703D4D6E0ABA374A0032C8A0 /* cArgSchema.cc in Sources */ = {isa = PBXBuildFile; fileRef = 703D4D6D0ABA374A0032C8A0 /* cArgSchema.cc */; };
-		703D4D6F0ABA374A0032C8A0 /* cArgSchema.cc in Sources */ = {isa = PBXBuildFile; fileRef = 703D4D6D0ABA374A0032C8A0 /* cArgSchema.cc */; };
-		703D4D700ABA374A0032C8A0 /* cArgSchema.cc in Sources */ = {isa = PBXBuildFile; fileRef = 703D4D6D0ABA374A0032C8A0 /* cArgSchema.cc */; };
-		703D4E2E0ABCAC4A0032C8A0 /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
-		7040D3A6090964D100AA820F /* cMxCodeArray.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865808F4974300FC65FE /* cMxCodeArray.cc */; };
-		70422A28091B141000A5E67F /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
-		70422A30091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
-		70422A34091B141000A5E67F /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
-		70422A3C091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
-		7049F2D90A66859700640512 /* cHardwareTransSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7049F2D70A66859300640512 /* cHardwareTransSMT.cc */; };
-		7049F2DA0A66859B00640512 /* cHardwareTransSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7049F2D70A66859300640512 /* cHardwareTransSMT.cc */; };
-		7049F2DB0A66859F00640512 /* cHardwareTransSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7049F2D70A66859300640512 /* cHardwareTransSMT.cc */; };
 		7049F3560A66A8F500640512 /* instset-classic.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F3520A66A8F500640512 /* instset-classic.cfg */; };
 		7049F3570A66A8F500640512 /* instset-sex-classic.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F3530A66A8F500640512 /* instset-sex-classic.cfg */; };
 		7049F3580A66A8F500640512 /* instset-smt.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F3540A66A8F500640512 /* instset-smt.cfg */; };
@@ -60,316 +173,16 @@
 		7049F3710A66AD7E00640512 /* default-sex-classic.org in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F36D0A66AD7E00640512 /* default-sex-classic.org */; };
 		7049F3720A66AD7E00640512 /* default-smt.org in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F36E0A66AD7E00640512 /* default-smt.org */; };
 		7049F3730A66AD7E00640512 /* default-transsmt.org in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7049F36F0A66AD7E00640512 /* default-transsmt.org */; };
-		704ADBC60A6EEFC300666970 /* DriverActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704ADBC40A6EEFC300666970 /* DriverActions.cc */; };
-		704ADBC80A6EEFC300666970 /* DriverActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704ADBC40A6EEFC300666970 /* DriverActions.cc */; };
-		704ADBF90A6EF3A300666970 /* DriverActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 704ADBC40A6EEFC300666970 /* DriverActions.cc */; };
-		7053324C0929764C006BD186 /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
-		7053324D0929764E006BD186 /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
-		7053336D092A3DF9006BD186 /* cInjectGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533364092A3DF4006BD186 /* cInjectGenotype.cc */; };
-		7053336F092A3DFC006BD186 /* cInjectGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533366092A3DF4006BD186 /* cInjectGenotypeControl.cc */; };
-		70533371092A3E00006BD186 /* cInjectGenotypeQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533369092A3DF4006BD186 /* cInjectGenotypeQueue.cc */; };
-		705333E7092A4B7F006BD186 /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705333E5092A4B7C006BD186 /* cLineage.cc */; };
-		70533479092A4F4D006BD186 /* cGenotype_BirthData.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE700929678E009E311D /* cGenotype_BirthData.cc */; };
-		7053347B092A4F50006BD186 /* cGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6809296613009E311D /* cGenotypeControl.cc */; };
-		7053347C092A4F52006BD186 /* cInjectGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533364092A3DF4006BD186 /* cInjectGenotype.cc */; };
-		7053347E092A4F55006BD186 /* cInjectGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533366092A3DF4006BD186 /* cInjectGenotypeControl.cc */; };
-		70533480092A4F59006BD186 /* cInjectGenotypeQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533369092A3DF4006BD186 /* cInjectGenotypeQueue.cc */; };
-		70533481092A4F5B006BD186 /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705333E5092A4B7C006BD186 /* cLineage.cc */; };
-		70533482092A4F5D006BD186 /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
-		70533483092A4F5F006BD186 /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
-		70533484092A4F60006BD186 /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
-		7054A12109A7BEFC00038658 /* cThread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A11F09A7BEFC00038658 /* cThread.cc */; };
-		7054A12309A7BEFC00038658 /* cThread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A11F09A7BEFC00038658 /* cThread.cc */; };
-		7054A12509A7BEFC00038658 /* cThread.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A11F09A7BEFC00038658 /* cThread.cc */; };
-		7054A17109A8014600038658 /* cAnalyzeJobQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A16F09A8014600038658 /* cAnalyzeJobQueue.cc */; };
-		7054A17309A8014600038658 /* cAnalyzeJobQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A16F09A8014600038658 /* cAnalyzeJobQueue.cc */; };
-		7054A17509A8014600038658 /* cAnalyzeJobQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A16F09A8014600038658 /* cAnalyzeJobQueue.cc */; };
-		7054A1B609A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A1B409A810CB00038658 /* cAnalyzeJobWorker.cc */; };
-		7054A1B809A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A1B409A810CB00038658 /* cAnalyzeJobWorker.cc */; };
-		7054A1BA09A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7054A1B409A810CB00038658 /* cAnalyzeJobWorker.cc */; };
-		705ABB3C0A8A6B3D00A6A80E /* EnvironmentActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ABB180A8A6A6000A6A80E /* EnvironmentActions.cc */; };
-		705ABB3D0A8A6B4100A6A80E /* EnvironmentActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ABB180A8A6A6000A6A80E /* EnvironmentActions.cc */; };
-		705ABB3E0A8A6B4400A6A80E /* EnvironmentActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ABB180A8A6A6000A6A80E /* EnvironmentActions.cc */; };
-		705ACD4F0A13FED5002D5BA0 /* PrintActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ACD4D0A13FED4002D5BA0 /* PrintActions.cc */; };
-		705ACD630A1403A5002D5BA0 /* PrintActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ACD4D0A13FED4002D5BA0 /* PrintActions.cc */; };
-		705ACD640A1403AA002D5BA0 /* PrintActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705ACD4D0A13FED4002D5BA0 /* PrintActions.cc */; };
 		70658C5A085DF67D00486BED /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 70658C59085DF67D00486BED /* libncurses.5.4.dylib */; };
-		706C6FFF0B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
-		706C70000B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
-		706C70010B83F265003174C1 /* cInstSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = 706C6FFE0B83F265003174C1 /* cInstSet.cc */; };
-		707045F00BCEA0D9000F9B9A /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
-		7073165D097C6C8F00815164 /* cParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7073165B097C6C8F00815164 /* cParser.cc */; };
-		70731665097C6DF500815164 /* cASLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731663097C6DF500815164 /* cASLibrary.cc */; };
-		7073166B097C6E0C00815164 /* cASSymbol.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70731669097C6E0C00815164 /* cASSymbol.cc */; };
-		707AF0B209EAC7FD001AEA89 /* LandscapeActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 707AF04509EAB529001AEA89 /* LandscapeActions.cc */; };
-		707AF0B309EAC801001AEA89 /* LandscapeActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 707AF04509EAB529001AEA89 /* LandscapeActions.cc */; };
-		707AF0B409EAC805001AEA89 /* LandscapeActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 707AF04509EAB529001AEA89 /* LandscapeActions.cc */; };
-		708051B20A1F663100CBB8B6 /* SaveLoadActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051A80A1F65FE00CBB8B6 /* SaveLoadActions.cc */; };
-		708051BB0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051BA0A1F66B400CBB8B6 /* cActionLibrary.cc */; };
-		708051BC0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051BA0A1F66B400CBB8B6 /* cActionLibrary.cc */; };
-		708051BD0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051BA0A1F66B400CBB8B6 /* cActionLibrary.cc */; };
-		708BF2FE0AB65DC700A923BF /* cEventList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708BF2FD0AB65DC700A923BF /* cEventList.cc */; };
-		708BF2FF0AB65DC700A923BF /* cEventList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708BF2FD0AB65DC700A923BF /* cEventList.cc */; };
-		708BF3000AB65DC700A923BF /* cEventList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708BF2FD0AB65DC700A923BF /* cEventList.cc */; };
-		7099EF510B2FBC85001269F6 /* cAnalyzeScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF470B2FBC85001269F6 /* cAnalyzeScreen.cc */; };
-		7099EF530B2FBC85001269F6 /* cAnalyzeView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF490B2FBC85001269F6 /* cAnalyzeView.cc */; };
-		7099EF560B2FBC86001269F6 /* cTextViewerAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF4C0B2FBC85001269F6 /* cTextViewerAnalyzeDriver.cc */; };
-		7099EF580B2FBC86001269F6 /* cTextViewerDriver_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7099EF4E0B2FBC85001269F6 /* cTextViewerDriver_Base.cc */; };
-		709D924C0A5D950D00D6A163 /* cMutationalNeighborhood.cc in Sources */ = {isa = PBXBuildFile; fileRef = 709D924B0A5D950D00D6A163 /* cMutationalNeighborhood.cc */; };
-		709D924D0A5D950E00D6A163 /* cMutationalNeighborhood.cc in Sources */ = {isa = PBXBuildFile; fileRef = 709D924B0A5D950D00D6A163 /* cMutationalNeighborhood.cc */; };
-		709D924E0A5D950E00D6A163 /* cMutationalNeighborhood.cc in Sources */ = {isa = PBXBuildFile; fileRef = 709D924B0A5D950D00D6A163 /* cMutationalNeighborhood.cc */; };
 		70AA941A09D486CA006A24C8 /* system-alloc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCF50209CFB0B400924128 /* system-alloc.cc */; };
 		70AA941B09D486CB006A24C8 /* tcmalloc-logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCF57F09CFBD3D00924128 /* tcmalloc-logging.cc */; };
 		70AA941C09D486CD006A24C8 /* tcmalloc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCF56309CFBB9500924128 /* tcmalloc.cc */; };
-		70B0865908F4974300FC65FE /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
-		70B0865C08F4974300FC65FE /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
-		70B0865E08F4974300FC65FE /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
-		70B0865F08F4974300FC65FE /* cMutationRates.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865708F4974300FC65FE /* cMutationRates.cc */; };
-		70B0866108F4974300FC65FE /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
-		70B0866408F4974300FC65FE /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
-		70B0866608F4974300FC65FE /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
-		70B0866708F4974300FC65FE /* cMutationRates.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865708F4974300FC65FE /* cMutationRates.cc */; };
-		70B0866808F4974300FC65FE /* cMxCodeArray.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865808F4974300FC65FE /* cMxCodeArray.cc */; };
-		70B0868B08F49EA800FC65FE /* cOrganism.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868708F49EA800FC65FE /* cOrganism.cc */; };
-		70B0868D08F49EA800FC65FE /* cPopulation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868908F49EA800FC65FE /* cPopulation.cc */; };
-		70B0868E08F49EA800FC65FE /* cPopulationCell.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868A08F49EA800FC65FE /* cPopulationCell.cc */; };
-		70B0868F08F49EA800FC65FE /* cOrganism.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868708F49EA800FC65FE /* cOrganism.cc */; };
-		70B0869108F49EA800FC65FE /* cPopulation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868908F49EA800FC65FE /* cPopulation.cc */; };
-		70B0869208F49EA800FC65FE /* cPopulationCell.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868A08F49EA800FC65FE /* cPopulationCell.cc */; };
-		70B0869D08F49F4800FC65FE /* cPhenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0869C08F49F4800FC65FE /* cPhenotype.cc */; };
-		70B0869E08F49F4800FC65FE /* cPhenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0869C08F49F4800FC65FE /* cPhenotype.cc */; };
-		70B0872E08F5E82D00FC65FE /* cReaction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871E08F5E82D00FC65FE /* cReaction.cc */; };
-		70B0872F08F5E82D00FC65FE /* cReactionLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871F08F5E82D00FC65FE /* cReactionLib.cc */; };
-		70B0873208F5E82D00FC65FE /* cReactionResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872208F5E82D00FC65FE /* cReactionResult.cc */; };
-		70B0873308F5E82D00FC65FE /* cResource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872308F5E82D00FC65FE /* cResource.cc */; };
-		70B0873408F5E82D00FC65FE /* cResourceCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872408F5E82D00FC65FE /* cResourceCount.cc */; };
-		70B0873508F5E82D00FC65FE /* cResourceLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872508F5E82D00FC65FE /* cResourceLib.cc */; };
-		70B0873608F5E82D00FC65FE /* cSpatialCountElem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872608F5E82D00FC65FE /* cSpatialCountElem.cc */; };
-		70B0873708F5E82D00FC65FE /* cSpatialResCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872708F5E82D00FC65FE /* cSpatialResCount.cc */; };
-		70B0873B08F5E82D00FC65FE /* cStats.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872B08F5E82D00FC65FE /* cStats.cc */; };
-		70B0873D08F5E82D00FC65FE /* cTaskLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872D08F5E82D00FC65FE /* cTaskLib.cc */; };
-		70B0873E08F5E82D00FC65FE /* cReaction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871E08F5E82D00FC65FE /* cReaction.cc */; };
-		70B0873F08F5E82D00FC65FE /* cReactionLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871F08F5E82D00FC65FE /* cReactionLib.cc */; };
-		70B0874208F5E82D00FC65FE /* cReactionResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872208F5E82D00FC65FE /* cReactionResult.cc */; };
-		70B0874308F5E82D00FC65FE /* cResource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872308F5E82D00FC65FE /* cResource.cc */; };
-		70B0874408F5E82D00FC65FE /* cResourceCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872408F5E82D00FC65FE /* cResourceCount.cc */; };
-		70B0874508F5E82D00FC65FE /* cResourceLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872508F5E82D00FC65FE /* cResourceLib.cc */; };
-		70B0874608F5E82D00FC65FE /* cSpatialCountElem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872608F5E82D00FC65FE /* cSpatialCountElem.cc */; };
-		70B0874708F5E82D00FC65FE /* cSpatialResCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872708F5E82D00FC65FE /* cSpatialResCount.cc */; };
-		70B0874B08F5E82D00FC65FE /* cStats.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872B08F5E82D00FC65FE /* cStats.cc */; };
-		70B0874D08F5E82D00FC65FE /* cTaskLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872D08F5E82D00FC65FE /* cTaskLib.cc */; };
-		70B087E208F5F4BA00FC65FE /* cChangeList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087DF08F5F4BA00FC65FE /* cChangeList.cc */; };
-		70B087E308F5F4BA00FC65FE /* cConstSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E008F5F4BA00FC65FE /* cConstSchedule.cc */; };
-		70B087E508F5F4BA00FC65FE /* cChangeList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087DF08F5F4BA00FC65FE /* cChangeList.cc */; };
-		70B087E608F5F4BA00FC65FE /* cConstSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E008F5F4BA00FC65FE /* cConstSchedule.cc */; };
-		70B0885508F5FE5800FC65FE /* cDataFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0884F08F5FE5800FC65FE /* cDataFile.cc */; };
-		70B0885608F5FE5800FC65FE /* cDataFileManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885008F5FE5800FC65FE /* cDataFileManager.cc */; };
-		70B0885708F5FE5800FC65FE /* cDataManager_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885108F5FE5800FC65FE /* cDataManager_Base.cc */; };
-		70B0885808F5FE5800FC65FE /* cDefaultMessageDisplay.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885208F5FE5800FC65FE /* cDefaultMessageDisplay.cc */; };
-		70B0885908F5FE5800FC65FE /* cDoubleSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885308F5FE5800FC65FE /* cDoubleSum.cc */; };
-		70B0885B08F5FE5800FC65FE /* cDataFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0884F08F5FE5800FC65FE /* cDataFile.cc */; };
-		70B0885C08F5FE5800FC65FE /* cDataFileManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885008F5FE5800FC65FE /* cDataFileManager.cc */; };
-		70B0885D08F5FE5800FC65FE /* cDataManager_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885108F5FE5800FC65FE /* cDataManager_Base.cc */; };
-		70B0885E08F5FE5800FC65FE /* cDefaultMessageDisplay.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885208F5FE5800FC65FE /* cDefaultMessageDisplay.cc */; };
-		70B0885F08F5FE5800FC65FE /* cDoubleSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885308F5FE5800FC65FE /* cDoubleSum.cc */; };
-		70B0888508F603D400FC65FE /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
-		70B0888708F603D400FC65FE /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
-		70B0892708F7630100FC65FE /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
-		70B0892808F7630100FC65FE /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
-		70B0892908F7630100FC65FE /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
-		70B0892A08F7630100FC65FE /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
-		70B0892B08F7630100FC65FE /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
-		70B0892C08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
-		70B0892D08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
-		70B0892E08F7630100FC65FE /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
-		70B0892F08F7630100FC65FE /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
-		70B0893008F7630100FC65FE /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
-		70B0893108F7630100FC65FE /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
-		70B0893208F7630100FC65FE /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
-		70B0893308F7630100FC65FE /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
-		70B0893408F7630100FC65FE /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
-		70B0893508F7630100FC65FE /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
-		70B0893608F7630100FC65FE /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
-		70B0893708F7630100FC65FE /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
-		70B0893808F7630100FC65FE /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
-		70B0893908F7630100FC65FE /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
-		70B0893A08F7630100FC65FE /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
-		70B0893B08F7630100FC65FE /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
-		70B0893C08F7630100FC65FE /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
-		70B0893D08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
-		70B0893E08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
-		70B0893F08F7630100FC65FE /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
-		70B0894008F7630100FC65FE /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
-		70B0894108F7630100FC65FE /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
-		70B0894208F7630100FC65FE /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
-		70B0894308F7630100FC65FE /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
-		70B0894408F7630100FC65FE /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
-		70B0894508F7630100FC65FE /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
-		70B0894608F7630100FC65FE /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
-		70B0894708F7630100FC65FE /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
-		70B0894808F7630100FC65FE /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
-		70B08B9208FB2E6B00FC65FE /* cTools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9008FB2E6B00FC65FE /* cTools.cc */; };
-		70B08B9308FB2E6B00FC65FE /* cWeightedIndex.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9108FB2E6B00FC65FE /* cWeightedIndex.cc */; };
-		70B08B9408FB2E6B00FC65FE /* cTools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9008FB2E6B00FC65FE /* cTools.cc */; };
-		70B08B9508FB2E6B00FC65FE /* cWeightedIndex.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9108FB2E6B00FC65FE /* cWeightedIndex.cc */; };
-		70B1A6500B7E237F00067486 /* cHardwareExperimental.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B1A64F0B7E237F00067486 /* cHardwareExperimental.cc */; };
-		70B1A6510B7E237F00067486 /* cHardwareExperimental.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B1A64F0B7E237F00067486 /* cHardwareExperimental.cc */; };
-		70B1A6520B7E237F00067486 /* cHardwareExperimental.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B1A64F0B7E237F00067486 /* cHardwareExperimental.cc */; };
 		70B1A7430B7E3FFD00067486 /* instset-experimental.cfg in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B1A7420B7E3FFD00067486 /* instset-experimental.cfg */; };
 		70B1A75A0B7E431F00067486 /* experimental.org in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B1A7590B7E431F00067486 /* experimental.org */; };
 		70B6514F0BEA6FCC002472ED /* main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701EF27E0BEA5D2300DAE168 /* main.cc */; };
 		70B651B70BEA9AEC002472ED /* unit-tests in CopyFiles */ = {isa = PBXBuildFile; fileRef = 70B6514C0BEA6FAD002472ED /* unit-tests */; };
-		70BCB22E0AB7B23D003FF331 /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
-		70BCB2350AB7B26B003FF331 /* cArgContainer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70BCB21C0AB7ADA6003FF331 /* cArgContainer.cc */; };
-		70C054ED0A4F6FD2002703C1 /* PopulationActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C054C90A4F6E19002703C1 /* PopulationActions.cc */; };
-		70C054F80A4F704D002703C1 /* PopulationActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C054C90A4F6E19002703C1 /* PopulationActions.cc */; };
-		70C054F90A4F704E002703C1 /* SaveLoadActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051A80A1F65FE00CBB8B6 /* SaveLoadActions.cc */; };
-		70C054FA0A4F7053002703C1 /* PopulationActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C054C90A4F6E19002703C1 /* PopulationActions.cc */; };
-		70C1EF4808C393BA00F50912 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
-		70C1EF4A08C393BA00F50912 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
-		70C1EF5908C3948C00F50912 /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
-		70C1EF5A08C3948C00F50912 /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
-		70C1EF6208C3954700F50912 /* cCPUStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF6108C3954700F50912 /* cCPUStack.cc */; };
-		70C1EF6308C3954700F50912 /* cCPUStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF6108C3954700F50912 /* cCPUStack.cc */; };
-		70C1EF7208C3968700F50912 /* cCPUTestInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF7108C3968700F50912 /* cCPUTestInfo.cc */; };
-		70C1EF7308C3968700F50912 /* cCPUTestInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF7108C3968700F50912 /* cCPUTestInfo.cc */; };
-		70C1EFA808C39F2100F50912 /* cHardwareBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA308C39F2100F50912 /* cHardwareBase.cc */; };
-		70C1EFAA08C39F2100F50912 /* cHardwareCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA508C39F2100F50912 /* cHardwareCPU.cc */; };
-		70C1EFAD08C39F2100F50912 /* cHardwareBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA308C39F2100F50912 /* cHardwareBase.cc */; };
-		70C1EFAF08C39F2100F50912 /* cHardwareCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA508C39F2100F50912 /* cHardwareCPU.cc */; };
-		70C1F02B08C3C71300F50912 /* cHardwareSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02308C3C71300F50912 /* cHardwareSMT.cc */; };
-		70C1F02C08C3C71300F50912 /* cHardwareStatusPrinter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02408C3C71300F50912 /* cHardwareStatusPrinter.cc */; };
-		70C1F02E08C3C71300F50912 /* cHeadCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02608C3C71300F50912 /* cHeadCPU.cc */; };
-		70C1F03008C3C71300F50912 /* cTestCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02808C3C71300F50912 /* cTestCPU.cc */; };
-		70C1F03308C3C71300F50912 /* cHardwareSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02308C3C71300F50912 /* cHardwareSMT.cc */; };
-		70C1F03408C3C71300F50912 /* cHardwareStatusPrinter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02408C3C71300F50912 /* cHardwareStatusPrinter.cc */; };
-		70C1F03608C3C71300F50912 /* cHeadCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02608C3C71300F50912 /* cHeadCPU.cc */; };
-		70C1F03808C3C71300F50912 /* cTestCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02808C3C71300F50912 /* cTestCPU.cc */; };
-		70C5BC6509059A970028A785 /* cWorld.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BC6309059A970028A785 /* cWorld.cc */; };
-		70C5BC6709059A970028A785 /* cWorld.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BC6309059A970028A785 /* cWorld.cc */; };
-		70C5BD6B0905CE5F0028A785 /* cHardwareManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BD690905CE5F0028A785 /* cHardwareManager.cc */; };
-		70C5BD6D0905CE5F0028A785 /* cHardwareManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BD690905CE5F0028A785 /* cHardwareManager.cc */; };
-		70CA6EC408DB7F8200068AC2 /* cGenome.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB408DB7F8200068AC2 /* cGenome.cc */; };
-		70CA6EC508DB7F8200068AC2 /* cGenomeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB508DB7F8200068AC2 /* cGenomeUtil.cc */; };
-		70CA6ECF08DB7F8200068AC2 /* cInstruction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EBF08DB7F8200068AC2 /* cInstruction.cc */; };
-		70CA6ED208DB7F8200068AC2 /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
-		70CA6ED408DB7F8200068AC2 /* cGenome.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB408DB7F8200068AC2 /* cGenome.cc */; };
-		70CA6ED508DB7F8200068AC2 /* cGenomeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB508DB7F8200068AC2 /* cGenomeUtil.cc */; };
-		70CA6EDF08DB7F8200068AC2 /* cInstruction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EBF08DB7F8200068AC2 /* cInstruction.cc */; };
-		70DCAC7A097AF731002F8733 /* cBarScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC59097AF730002F8733 /* cBarScreen.cc */; };
-		70DCAC7D097AF731002F8733 /* cEnvironmentScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5C097AF730002F8733 /* cEnvironmentScreen.cc */; };
-		70DCAC7F097AF731002F8733 /* cHistScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC5E097AF730002F8733 /* cHistScreen.cc */; };
-		70DCAC82097AF731002F8733 /* cMapScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC61097AF730002F8733 /* cMapScreen.cc */; };
-		70DCAC84097AF731002F8733 /* cMenuWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC63097AF730002F8733 /* cMenuWindow.cc */; };
-		70DCAC86097AF731002F8733 /* cOptionsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC65097AF730002F8733 /* cOptionsScreen.cc */; };
-		70DCAC88097AF731002F8733 /* cScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC67097AF730002F8733 /* cScreen.cc */; };
-		70DCAC8A097AF731002F8733 /* cStatsScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC69097AF730002F8733 /* cStatsScreen.cc */; };
-		70DCAC8C097AF731002F8733 /* cSymbolUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6B097AF730002F8733 /* cSymbolUtil.cc */; };
-		70DCAC90097AF731002F8733 /* cTextWindow.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6F097AF730002F8733 /* cTextWindow.cc */; };
-		70DCAC92097AF731002F8733 /* cView.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC71097AF730002F8733 /* cView.cc */; };
-		70DCAC94097AF731002F8733 /* cViewInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC73097AF730002F8733 /* cViewInfo.cc */; };
-		70DCAC96097AF731002F8733 /* cZoomScreen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC75097AF730002F8733 /* cZoomScreen.cc */; };
-		70DCAC99097AF731002F8733 /* viewer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC78097AF730002F8733 /* viewer.cc */; };
-		70DCAC9A097AF754002F8733 /* cTextViewerDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC6D097AF730002F8733 /* cTextViewerDriver.cc */; };
 		70DCAC9C097AF7C0002F8733 /* primitive.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC9B097AF7C0002F8733 /* primitive.cc */; };
-		70DCACA0097AF7CC002F8733 /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
-		70DCACA4097AF7CC002F8733 /* cCodeLabel.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF4608C393BA00F50912 /* cCodeLabel.cc */; };
-		70DCACA5097AF7CC002F8733 /* cCPUMemory.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF5808C3948C00F50912 /* cCPUMemory.cc */; };
-		70DCACA6097AF7CC002F8733 /* cCPUStack.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF6108C3954700F50912 /* cCPUStack.cc */; };
-		70DCACA7097AF7CC002F8733 /* cCPUTestInfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EF7108C3968700F50912 /* cCPUTestInfo.cc */; };
-		70DCACAA097AF7CC002F8733 /* cHardwareBase.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA308C39F2100F50912 /* cHardwareBase.cc */; };
-		70DCACAC097AF7CC002F8733 /* cHardwareCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1EFA508C39F2100F50912 /* cHardwareCPU.cc */; };
-		70DCACAE097AF7CC002F8733 /* cHardwareSMT.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02308C3C71300F50912 /* cHardwareSMT.cc */; };
-		70DCACAF097AF7CC002F8733 /* cHardwareStatusPrinter.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02408C3C71300F50912 /* cHardwareStatusPrinter.cc */; };
-		70DCACB0097AF7CC002F8733 /* cHeadCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02608C3C71300F50912 /* cHeadCPU.cc */; };
-		70DCACB2097AF7CC002F8733 /* cTestCPU.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C1F02808C3C71300F50912 /* cTestCPU.cc */; };
-		70DCACB6097AF7CC002F8733 /* cEnvironment.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFC08DA5341007BA469 /* cEnvironment.cc */; };
-		70DCACB7097AF7CC002F8733 /* cPopulationInterface.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4EFD08DA5341007BA469 /* cPopulationInterface.cc */; };
-		70DCACB8097AF7CC002F8733 /* cBirthChamber.cc in Sources */ = {isa = PBXBuildFile; fileRef = 702D4F3F08DA61FE007BA469 /* cBirthChamber.cc */; };
-		70DCACB9097AF7CC002F8733 /* cGenome.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB408DB7F8200068AC2 /* cGenome.cc */; };
-		70DCACBA097AF7CC002F8733 /* cGenomeUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB508DB7F8200068AC2 /* cGenomeUtil.cc */; };
-		70DCACBB097AF7CC002F8733 /* cInstruction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EBF08DB7F8200068AC2 /* cInstruction.cc */; };
-		70DCACBE097AF7CC002F8733 /* cLandscape.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865108F4974300FC65FE /* cLandscape.cc */; };
-		70DCACBF097AF7CC002F8733 /* cLocalMutations.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865408F4974300FC65FE /* cLocalMutations.cc */; };
-		70DCACC0097AF7CC002F8733 /* cMutationLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865608F4974300FC65FE /* cMutationLib.cc */; };
-		70DCACC1097AF7CC002F8733 /* cMutationRates.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865708F4974300FC65FE /* cMutationRates.cc */; };
-		70DCACC2097AF7CC002F8733 /* cOrganism.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868708F49EA800FC65FE /* cOrganism.cc */; };
-		70DCACC4097AF7CC002F8733 /* cPopulation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868908F49EA800FC65FE /* cPopulation.cc */; };
-		70DCACC5097AF7CC002F8733 /* cPopulationCell.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0868A08F49EA800FC65FE /* cPopulationCell.cc */; };
-		70DCACC6097AF7CC002F8733 /* cPhenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0869C08F49F4800FC65FE /* cPhenotype.cc */; };
-		70DCACC7097AF7CC002F8733 /* cReaction.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871E08F5E82D00FC65FE /* cReaction.cc */; };
-		70DCACC8097AF7CC002F8733 /* cReactionLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0871F08F5E82D00FC65FE /* cReactionLib.cc */; };
-		70DCACC9097AF7CC002F8733 /* cReactionResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872208F5E82D00FC65FE /* cReactionResult.cc */; };
-		70DCACCA097AF7CC002F8733 /* cResource.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872308F5E82D00FC65FE /* cResource.cc */; };
-		70DCACCB097AF7CC002F8733 /* cResourceCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872408F5E82D00FC65FE /* cResourceCount.cc */; };
-		70DCACCC097AF7CC002F8733 /* cResourceLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872508F5E82D00FC65FE /* cResourceLib.cc */; };
-		70DCACCD097AF7CC002F8733 /* cSpatialCountElem.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872608F5E82D00FC65FE /* cSpatialCountElem.cc */; };
-		70DCACCE097AF7CC002F8733 /* cSpatialResCount.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872708F5E82D00FC65FE /* cSpatialResCount.cc */; };
-		70DCACCF097AF7CC002F8733 /* cStats.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872B08F5E82D00FC65FE /* cStats.cc */; };
-		70DCACD0097AF7CC002F8733 /* cTaskLib.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0872D08F5E82D00FC65FE /* cTaskLib.cc */; };
-		70DCACD1097AF7CC002F8733 /* cChangeList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087DF08F5F4BA00FC65FE /* cChangeList.cc */; };
-		70DCACD2097AF7CC002F8733 /* cConstSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B087E008F5F4BA00FC65FE /* cConstSchedule.cc */; };
-		70DCACD4097AF7CC002F8733 /* cDataFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0884F08F5FE5800FC65FE /* cDataFile.cc */; };
-		70DCACD5097AF7CC002F8733 /* cDataFileManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885008F5FE5800FC65FE /* cDataFileManager.cc */; };
-		70DCACD6097AF7CC002F8733 /* cDataManager_Base.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885108F5FE5800FC65FE /* cDataManager_Base.cc */; };
-		70DCACD7097AF7CC002F8733 /* cDefaultMessageDisplay.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885208F5FE5800FC65FE /* cDefaultMessageDisplay.cc */; };
-		70DCACD8097AF7CC002F8733 /* cDoubleSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0885308F5FE5800FC65FE /* cDoubleSum.cc */; };
-		70DCACD9097AF7CC002F8733 /* cFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0888308F603D400FC65FE /* cFile.cc */; };
-		70DCACDB097AF7CC002F8733 /* cHelpAlias.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891608F7630100FC65FE /* cHelpAlias.cc */; };
-		70DCACDC097AF7CC002F8733 /* cHelpManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891708F7630100FC65FE /* cHelpManager.cc */; };
-		70DCACDD097AF7CC002F8733 /* cHelpType.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891808F7630100FC65FE /* cHelpType.cc */; };
-		70DCACDE097AF7CC002F8733 /* cHistogram.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891908F7630100FC65FE /* cHistogram.cc */; };
-		70DCACDF097AF7CC002F8733 /* cInitFile.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891A08F7630100FC65FE /* cInitFile.cc */; };
-		70DCACE0097AF7CC002F8733 /* cIntegratedSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891B08F7630100FC65FE /* cIntegratedSchedule.cc */; };
-		70DCACE1097AF7CC002F8733 /* cIntegratedScheduleNode.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891C08F7630100FC65FE /* cIntegratedScheduleNode.cc */; };
-		70DCACE2097AF7CC002F8733 /* cIntSum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891D08F7630100FC65FE /* cIntSum.cc */; };
-		70DCACE3097AF7CC002F8733 /* cMerit.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891E08F7630100FC65FE /* cMerit.cc */; };
-		70DCACE4097AF7CC002F8733 /* cProbSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0891F08F7630100FC65FE /* cProbSchedule.cc */; };
-		70DCACE5097AF7CC002F8733 /* cRandom.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892008F7630100FC65FE /* cRandom.cc */; };
-		70DCACE6097AF7CC002F8733 /* cRunningAverage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892108F7630100FC65FE /* cRunningAverage.cc */; };
-		70DCACE7097AF7CC002F8733 /* cSchedule.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892208F7630100FC65FE /* cSchedule.cc */; };
-		70DCACE8097AF7CC002F8733 /* cString.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892308F7630100FC65FE /* cString.cc */; };
-		70DCACE9097AF7CC002F8733 /* cStringIterator.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892408F7630100FC65FE /* cStringIterator.cc */; };
-		70DCACEA097AF7CC002F8733 /* cStringList.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892508F7630100FC65FE /* cStringList.cc */; };
-		70DCACEB097AF7CC002F8733 /* cStringUtil.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0892608F7630100FC65FE /* cStringUtil.cc */; };
-		70DCACEC097AF7CC002F8733 /* cTools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9008FB2E6B00FC65FE /* cTools.cc */; };
-		70DCACED097AF7CC002F8733 /* cWeightedIndex.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B08B9108FB2E6B00FC65FE /* cWeightedIndex.cc */; };
-		70DCACEE097AF7CC002F8733 /* cAvidaConfig.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7013846009028B3E0087ED2E /* cAvidaConfig.cc */; };
-		70DCACEF097AF7CC002F8733 /* cWorld.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BC6309059A970028A785 /* cWorld.cc */; };
-		70DCACF0097AF7CC002F8733 /* cHardwareManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70C5BD690905CE5F0028A785 /* cHardwareManager.cc */; };
-		70DCACF2097AF7CC002F8733 /* cMxCodeArray.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70B0865808F4974300FC65FE /* cMxCodeArray.cc */; };
-		70DCACF3097AF7CC002F8733 /* cAnalyze.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A1C091B141000A5E67F /* cAnalyze.cc */; };
-		70DCACF4097AF7CC002F8733 /* cAnalyzeGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70422A24091B141000A5E67F /* cAnalyzeGenotype.cc */; };
-		70DCACF6097AF7CC002F8733 /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
-		70DCACF7097AF7CC002F8733 /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
-		70DCACF8097AF7CC002F8733 /* cGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DC9E09293E6F009E311D /* cGenotype.cc */; };
-		70DCACF9097AF7CC002F8733 /* cGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6809296613009E311D /* cGenotypeControl.cc */; };
-		70DCACFA097AF7CC002F8733 /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
-		70DCACFB097AF7CC002F8733 /* cGenotype_BirthData.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE700929678E009E311D /* cGenotype_BirthData.cc */; };
-		70DCACFC097AF7CC002F8733 /* cSpecies.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705332480929764A006BD186 /* cSpecies.cc */; };
-		70DCACFD097AF7CC002F8733 /* cSpeciesQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7053324A0929764A006BD186 /* cSpeciesQueue.cc */; };
-		70DCACFE097AF7CC002F8733 /* cInjectGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533364092A3DF4006BD186 /* cInjectGenotype.cc */; };
-		70DCACFF097AF7CC002F8733 /* cInjectGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533366092A3DF4006BD186 /* cInjectGenotypeControl.cc */; };
-		70DCAD00097AF7CC002F8733 /* cInjectGenotypeQueue.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70533369092A3DF4006BD186 /* cInjectGenotypeQueue.cc */; };
-		70DCAD01097AF7CC002F8733 /* cLineage.cc in Sources */ = {isa = PBXBuildFile; fileRef = 705333E5092A4B7C006BD186 /* cLineage.cc */; };
-		70DCAD02097AF7CC002F8733 /* cFallbackWorldDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D915C094B864A008B845F /* cFallbackWorldDriver.cc */; };
-		70DCAD03097AF7CC002F8733 /* cDefaultRunDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D930C094CAD6B008B845F /* cDefaultRunDriver.cc */; };
-		70DCAD04097AF7CC002F8733 /* cDriverManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D9382094CBA69008B845F /* cDriverManager.cc */; };
-		70DCAD05097AF7CC002F8733 /* cDefaultAnalyzeDriver.cc in Sources */ = {isa = PBXBuildFile; fileRef = 701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */; };
-		70DCAD25097AF81A002F8733 /* cLexer.l in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAD21097AF81A002F8733 /* cLexer.l */; };
-		70DCAD2F097AF8BC002F8733 /* main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70DCAC57097AF730002F8733 /* main.cc */; };
 		70DCF66C09D4DE6500924128 /* libtcmalloc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 70AA941909D486AE006A24C8 /* libtcmalloc.a */; };
-		70F7D8CE09254787009E311D /* cFitnessMatrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70CA6EB208DB7F8200068AC2 /* cFitnessMatrix.cc */; };
-		70F7DAF409290468009E311D /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
-		70F7DCA009293E76009E311D /* cClassificationManager.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DAF009290468009E311D /* cClassificationManager.cc */; };
-		70F7DCA109293E77009E311D /* cGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DC9E09293E6F009E311D /* cGenotype.cc */; };
-		70F7DCA309293E87009E311D /* cGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DC9E09293E6F009E311D /* cGenotype.cc */; };
-		70F7DE6C09296615009E311D /* cGenotypeControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6809296613009E311D /* cGenotypeControl.cc */; };
-		70F7DE6D09296616009E311D /* cSpeciesControl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE6A09296613009E311D /* cSpeciesControl.cc */; };
-		70F7DE7409296794009E311D /* cGenotype_BirthData.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70F7DE700929678E009E311D /* cGenotype_BirthData.cc */; };
-		70FC02800BC835E700991121 /* cHardwareGX.cc in Sources */ = {isa = PBXBuildFile; fileRef = 423335880BC067E3000DF681 /* cHardwareGX.cc */; };
-		DCC3166107628531008F7A48 /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
-		E626209E0A372C2A00C07685 /* SaveLoadActions.cc in Sources */ = {isa = PBXBuildFile; fileRef = 708051A80A1F65FE00CBB8B6 /* SaveLoadActions.cc */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXBuildRule section */
@@ -386,6 +199,62 @@
 /* End PBXBuildRule section */
 
 /* Begin PBXContainerItemProxy section */
+		7023ECA60C0A436000362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 7023EC320C0A426900362B9C /* avida-core */;
+			remoteInfo = "avida-core";
+		};
+		7023ECCF0C0A445800362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 7023EC320C0A426900362B9C /* avida-core */;
+			remoteInfo = "avida-core";
+		};
+		7023ECD10C0A445B00362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 70AA941809D486AE006A24C8 /* tcmalloc */;
+			remoteInfo = tcmalloc;
+		};
+		7023ECE00C0A44DE00362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 70AA941809D486AE006A24C8 /* tcmalloc */;
+			remoteInfo = tcmalloc;
+		};
+		7023ECE20C0A44E000362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 7023EC320C0A426900362B9C /* avida-core */;
+			remoteInfo = "avida-core";
+		};
+		7023ED530C0A590B00362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = DCC3164C07626CF3008F7A48 /* avida */;
+			remoteInfo = avida;
+		};
+		7023ED550C0A590F00362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 700E2AF3085DE50C00CF158A /* avida-viewer */;
+			remoteInfo = "avida-viewer";
+		};
+		7023ED570C0A591100362B9C /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 70B6514B0BEA6FAD002472ED /* unit-tests */;
+			remoteInfo = "unit-tests";
+		};
 		70DCF67509D4E10500924128 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = DCC30C4D0762532C008F7A48 /* Project object */;
@@ -486,6 +355,7 @@
 		701D93E6094CBF71008B845F /* cDefaultAnalyzeDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cDefaultAnalyzeDriver.h; sourceTree = "<group>"; };
 		701D93E7094CBF71008B845F /* cDefaultAnalyzeDriver.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cDefaultAnalyzeDriver.cc; sourceTree = "<group>"; };
 		701EF27E0BEA5D2300DAE168 /* main.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cc; sourceTree = "<group>"; };
+		7023EC330C0A426900362B9C /* libavida-core.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libavida-core.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 		7027621909D73E5900741717 /* cOrgSourceMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cOrgSourceMessage.h; sourceTree = "<group>"; };
 		7027621A09D73E7700741717 /* cOrgSinkMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cOrgSinkMessage.h; sourceTree = "<group>"; };
 		702D4EF508DA5328007BA469 /* cEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cEnvironment.h; sourceTree = "<group>"; };
@@ -935,9 +805,18 @@
 			buildActionMask = 2147483647;
 			files = (
 				70658C5A085DF67D00486BED /* libncurses.5.4.dylib in Frameworks */,
+				7023ECD30C0A447700362B9C /* libavida-core.a in Frameworks */,
+				7023ECD40C0A447800362B9C /* libtcmalloc.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		7023EC310C0A426900362B9C /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		70AA941709D486AE006A24C8 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -956,6 +835,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				7023ECDE0C0A44D800362B9C /* libavida-core.a in Frameworks */,
+				7023ECDF0C0A44D900362B9C /* libtcmalloc.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -964,6 +845,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				70DCF66C09D4DE6500924128 /* libtcmalloc.a in Frameworks */,
+				7023ECA80C0A437200362B9C /* libavida-core.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1650,6 +1532,7 @@
 				70DCAD1C097AF7CC002F8733 /* avida-s */,
 				70AA941909D486AE006A24C8 /* libtcmalloc.a */,
 				70B6514C0BEA6FAD002472ED /* unit-tests */,
+				7023EC330C0A426900362B9C /* libavida-core.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -1657,6 +1540,13 @@
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
+		7023EC2F0C0A426900362B9C /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		70AA941509D486AE006A24C8 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
@@ -1671,7 +1561,6 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 700E2B7E085DE50C00CF158A /* Build configuration list for PBXNativeTarget "avida-viewer" */;
 			buildPhases = (
-				704EAD9808FF3C1F005D5C24 /* ShellScript */,
 				700E2AF4085DE50C00CF158A /* Sources */,
 				700E2B6C085DE50C00CF158A /* Frameworks */,
 				700E2B6D085DE50C00CF158A /* CopyFiles */,
@@ -1679,12 +1568,32 @@
 			buildRules = (
 			);
 			dependencies = (
+				7023ECD00C0A445800362B9C /* PBXTargetDependency */,
+				7023ECD20C0A445B00362B9C /* PBXTargetDependency */,
 			);
 			name = "avida-viewer";
 			productName = primitive;
 			productReference = 700E2B83085DE50C00CF158A /* avida-viewer */;
 			productType = "com.apple.product-type.tool";
 		};
+		7023EC320C0A426900362B9C /* avida-core */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7023EC340C0A42BC00362B9C /* Build configuration list for PBXNativeTarget "avida-core" */;
+			buildPhases = (
+				7023ECA40C0A435400362B9C /* ShellScript */,
+				7023EC2F0C0A426900362B9C /* Headers */,
+				7023EC300C0A426900362B9C /* Sources */,
+				7023EC310C0A426900362B9C /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "avida-core";
+			productName = "avida-core";
+			productReference = 7023EC330C0A426900362B9C /* libavida-core.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		70AA941809D486AE006A24C8 /* tcmalloc */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 70AA942509D48715006A24C8 /* Build configuration list for PBXNativeTarget "tcmalloc" */;
@@ -1723,7 +1632,6 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */;
 			buildPhases = (
-				70DCAC9E097AF7CC002F8733 /* ShellScript */,
 				70DCAC9F097AF7CC002F8733 /* Sources */,
 				70DCAD07097AF7CC002F8733 /* Frameworks */,
 				70DCAD08097AF7CC002F8733 /* CopyFiles */,
@@ -1732,6 +1640,8 @@
 				70DCAD2A097AF865002F8733 /* PBXBuildRule */,
 			);
 			dependencies = (
+				7023ECE30C0A44E000362B9C /* PBXTargetDependency */,
+				7023ECE10C0A44DE00362B9C /* PBXTargetDependency */,
 			);
 			name = "avida-s";
 			productName = primitive;
@@ -1742,7 +1652,6 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "avida" */;
 			buildPhases = (
-				704EAD8208FF2C0B005D5C24 /* ShellScript */,
 				DCC3164A07626CF3008F7A48 /* Sources */,
 				DCC3164B07626CF3008F7A48 /* Frameworks */,
 				70486B9508267145009328F0 /* CopyFiles */,
@@ -1750,6 +1659,7 @@
 			buildRules = (
 			);
 			dependencies = (
+				7023ECA70C0A436000362B9C /* PBXTargetDependency */,
 				70DCF67609D4E10500924128 /* PBXTargetDependency */,
 			);
 			name = avida;
@@ -1768,9 +1678,11 @@
 			productRefGroup = DCC3164E07626CF3008F7A48 /* Products */;
 			projectDirPath = "";
 			targets = (
+				7023ED520C0A590200362B9C /* full-suite */,
 				DCC3164C07626CF3008F7A48 /* avida */,
 				70DCAC9D097AF7CC002F8733 /* avida-s */,
 				700E2AF3085DE50C00CF158A /* avida-viewer */,
+				7023EC320C0A426900362B9C /* avida-core */,
 				70AA941809D486AE006A24C8 /* tcmalloc */,
 				70B6514B0BEA6FAD002472ED /* unit-tests */,
 			);
@@ -1778,7 +1690,7 @@
 /* End PBXProject section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		704EAD8208FF2C0B005D5C24 /* ShellScript */ = {
+		7023ECA40C0A435400362B9C /* ShellScript */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
@@ -1788,165 +1700,146 @@
 			outputPaths = (
 			);
 			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/bash;
+			shellPath = /bin/sh;
 			shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svnversion)\nthen svncmd=/usr/bin/svnversion\nelif (test -x /usr/local/bin/svnversion)\nthen svncmd=/usr/local/bin/svnversion\nelif (test -x /usr/local/svn/bin/svnversion)\nthen svncmd=/usr/local/svn/bin/svnversion\nelse\n  echo \"Warning: 'svn' not found, please install subversion\"\n  if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n  then\n    echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n    echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n  fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\necho \\#define REVISION \\\"`$svncmd`\\\" >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n  revdiff=`diff $DERIVED_FILE_DIR/revision.h /tmp/newrev.tmp`\nelse\n!
   revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n  echo \"New revision.h Generated\"\n  cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n  touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
 		};
-		704EAD9808FF3C1F005D5C24 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		700E2AF4085DE50C00CF158A /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				7023ECBA0C0A441300362B9C /* cEnvironmentScreen.cc in Sources */,
+				7023ECBB0C0A441500362B9C /* cBarScreen.cc in Sources */,
+				7023ECBC0C0A441800362B9C /* cAnalyzeView.cc in Sources */,
+				7023ECBD0C0A441900362B9C /* cAnalyzeScreen.cc in Sources */,
+				7023ECBE0C0A441C00362B9C /* cHistScreen.cc in Sources */,
+				7023ECBF0C0A441D00362B9C /* cMapScreen.cc in Sources */,
+				7023ECC10C0A442200362B9C /* cMenuWindow.cc in Sources */,
+				7023ECC30C0A442400362B9C /* cOptionsScreen.cc in Sources */,
+				7023ECC40C0A442700362B9C /* cScreen.cc in Sources */,
+				7023ECC50C0A442D00362B9C /* cStatsScreen.cc in Sources */,
+				7023ECC60C0A443000362B9C /* cSymbolUtil.cc in Sources */,
+				7023ECC70C0A443500362B9C /* cTextViewerAnalyzeDriver.cc in Sources */,
+				7023ECC80C0A443800362B9C /* cTextViewerDriver.cc in Sources */,
+				7023ECC90C0A443A00362B9C /* cTextViewerDriver_Base.cc in Sources */,
+				7023ECCA0C0A443C00362B9C /* cTextWindow.cc in Sources */,
+				7023ECCB0C0A443F00362B9C /* cView.cc in Sources */,
+				7023ECCC0C0A444200362B9C /* cViewInfo.cc in Sources */,
+				7023ECCD0C0A444600362B9C /* cZoomScreen.cc in Sources */,
+				7023ECCE0C0A444800362B9C /* viewer.cc in Sources */,
 			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
 			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/bash;
-			shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svnversion)\nthen svncmd=/usr/bin/svnversion\nelif (test -x /usr/local/bin/svnversion)\nthen svncmd=/usr/local/bin/svnversion\nelif (test -x /usr/local/svn/bin/svnversion)\nthen svncmd=/usr/local/svn/bin/svnversion\nelse\n  echo \"Warning: 'svn' not found, please install subversion\"\n  if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n  then\n    echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n    echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n  fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\necho \\#define REVISION \\\"`$svncmd`\\\" >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n  revdiff=`diff $DERIVED_FILE_DIR/revision.h /tmp/newrev.tmp`\nelse\n!
   revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n  echo \"New revision.h Generated\"\n  cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n  touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
 		};
-		70DCAC9E097AF7CC002F8733 /* ShellScript */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/bash;
-			shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svnversion)\nthen svncmd=/usr/bin/svnversion\nelif (test -x /usr/local/bin/svnversion)\nthen svncmd=/usr/local/bin/svnversion\nelif (test -x /usr/local/svn/bin/svnversion)\nthen svncmd=/usr/local/svn/bin/svnversion\nelse\n  echo \"Warning: 'svn' not found, please install subversion\"\n  if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n  then\n    echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n    echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n    echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n  fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\necho \\#define REVISION \\\"`$svncmd`\\\" >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n  revdiff=`diff $DERIVED_FILE_DIR/revision.h /tmp/newrev.tmp`\nelse\n!
   revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n  echo \"New revision.h Generated\"\n  cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n  touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
-		};
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		700E2AF4085DE50C00CF158A /* Sources */ = {
+		7023EC300C0A426900362B9C /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				700E2AF8085DE50C00CF158A /* avida.cc in Sources */,
-				70C1EF4A08C393BA00F50912 /* cCodeLabel.cc in Sources */,
-				70C1EF5A08C3948C00F50912 /* cCPUMemory.cc in Sources */,
-				70C1EF6308C3954700F50912 /* cCPUStack.cc in Sources */,
-				70C1EF7308C3968700F50912 /* cCPUTestInfo.cc in Sources */,
-				70C1EFAD08C39F2100F50912 /* cHardwareBase.cc in Sources */,
-				70C1EFAF08C39F2100F50912 /* cHardwareCPU.cc in Sources */,
-				70C1F03308C3C71300F50912 /* cHardwareSMT.cc in Sources */,
-				70C1F03408C3C71300F50912 /* cHardwareStatusPrinter.cc in Sources */,
-				70C1F03608C3C71300F50912 /* cHeadCPU.cc in Sources */,
-				70C1F03808C3C71300F50912 /* cTestCPU.cc in Sources */,
-				702D4F0608DA5341007BA469 /* cEnvironment.cc in Sources */,
-				702D4F0708DA5341007BA469 /* cPopulationInterface.cc in Sources */,
-				702D4F4B08DA61FE007BA469 /* cBirthChamber.cc in Sources */,
-				70CA6ED208DB7F8200068AC2 /* cFitnessMatrix.cc in Sources */,
-				70CA6ED408DB7F8200068AC2 /* cGenome.cc in Sources */,
-				70CA6ED508DB7F8200068AC2 /* cGenomeUtil.cc in Sources */,
-				70CA6EDF08DB7F8200068AC2 /* cInstruction.cc in Sources */,
-				70B0866108F4974300FC65FE /* cLandscape.cc in Sources */,
-				70B0866408F4974300FC65FE /* cLocalMutations.cc in Sources */,
-				70B0866608F4974300FC65FE /* cMutationLib.cc in Sources */,
-				70B0866708F4974300FC65FE /* cMutationRates.cc in Sources */,
-				70B0866808F4974300FC65FE /* cMxCodeArray.cc in Sources */,
-				70B0868F08F49EA800FC65FE /* cOrganism.cc in Sources */,
-				70B0869108F49EA800FC65FE /* cPopulation.cc in Sources */,
-				70B0869208F49EA800FC65FE /* cPopulationCell.cc in Sources */,
-				70B0869E08F49F4800FC65FE /* cPhenotype.cc in Sources */,
-				70B0873E08F5E82D00FC65FE /* cReaction.cc in Sources */,
-				70B0873F08F5E82D00FC65FE /* cReactionLib.cc in Sources */,
-				70B0874208F5E82D00FC65FE /* cReactionResult.cc in Sources */,
-				70B0874308F5E82D00FC65FE /* cResource.cc in Sources */,
-				70B0874408F5E82D00FC65FE /* cResourceCount.cc in Sources */,
-				70B0874508F5E82D00FC65FE /* cResourceLib.cc in Sources */,
-				70B0874608F5E82D00FC65FE /* cSpatialCountElem.cc in Sources */,
-				70B0874708F5E82D00FC65FE /* cSpatialResCount.cc in Sources */,
-				70B0874B08F5E82D00FC65FE /* cStats.cc in Sources */,
-				70B0874D08F5E82D00FC65FE /* cTaskLib.cc in Sources */,
-				70B087E508F5F4BA00FC65FE /* cChangeList.cc in Sources */,
-				70B087E608F5F4BA00FC65FE /* cConstSchedule.cc in Sources */,
-				70B0885B08F5FE5800FC65FE /* cDataFile.cc in Sources */,
-				70B0885C08F5FE5800FC65FE /* cDataFileManager.cc in Sources */,
-				70B0885D08F5FE5800FC65FE /* cDataManager_Base.cc in Sources */,
-				70B0885E08F5FE5800FC65FE /* cDefaultMessageDisplay.cc in Sources */,
-				70B0885F08F5FE5800FC65FE /* cDoubleSum.cc in Sources */,
-				70B0888708F603D400FC65FE /* cFile.cc in Sources */,
-				70B0893808F7630100FC65FE /* cHelpAlias.cc in Sources */,
-				70B0893908F7630100FC65FE /* cHelpManager.cc in Sources */,
-				70B0893A08F7630100FC65FE /* cHelpType.cc in Sources */,
-				70B0893B08F7630100FC65FE /* cHistogram.cc in Sources */,
-				70B0893C08F7630100FC65FE /* cInitFile.cc in Sources */,
-				70B0893D08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */,
-				70B0893E08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */,
-				70B0893F08F7630100FC65FE /* cIntSum.cc in Sources */,
-				70B0894008F7630100FC65FE /* cMerit.cc in Sources */,
-				70B0894108F7630100FC65FE /* cProbSchedule.cc in Sources */,
-				70B0894208F7630100FC65FE /* cRandom.cc in Sources */,
-				70B0894308F7630100FC65FE /* cRunningAverage.cc in Sources */,
-				70B0894408F7630100FC65FE /* cSchedule.cc in Sources */,
-				70B0894508F7630100FC65FE /* cString.cc in Sources */,
-				70B0894608F7630100FC65FE /* cStringIterator.cc in Sources */,
-				70B0894708F7630100FC65FE /* cStringList.cc in Sources */,
-				70B0894808F7630100FC65FE /* cStringUtil.cc in Sources */,
-				70B08B9208FB2E6B00FC65FE /* cTools.cc in Sources */,
-				70B08B9308FB2E6B00FC65FE /* cWeightedIndex.cc in Sources */,
-				7013846209028B3E0087ED2E /* cAvidaConfig.cc in Sources */,
-				70C5BC6709059A970028A785 /* cWorld.cc in Sources */,
-				70C5BD6D0905CE5F0028A785 /* cHardwareManager.cc in Sources */,
-				70422A28091B141000A5E67F /* cAnalyze.cc in Sources */,
-				70422A30091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */,
-				70F7DCA009293E76009E311D /* cClassificationManager.cc in Sources */,
-				70F7DCA109293E77009E311D /* cGenotype.cc in Sources */,
-				70533479092A4F4D006BD186 /* cGenotype_BirthData.cc in Sources */,
-				7053347B092A4F50006BD186 /* cGenotypeControl.cc in Sources */,
-				7053347C092A4F52006BD186 /* cInjectGenotype.cc in Sources */,
-				7053347E092A4F55006BD186 /* cInjectGenotypeControl.cc in Sources */,
-				70533480092A4F59006BD186 /* cInjectGenotypeQueue.cc in Sources */,
-				70533481092A4F5B006BD186 /* cLineage.cc in Sources */,
-				70533482092A4F5D006BD186 /* cSpecies.cc in Sources */,
-				70533483092A4F5F006BD186 /* cSpeciesControl.cc in Sources */,
-				70533484092A4F60006BD186 /* cSpeciesQueue.cc in Sources */,
-				701D915E094B864A008B845F /* cFallbackWorldDriver.cc in Sources */,
-				701D9310094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */,
-				701D9384094CBA69008B845F /* cDriverManager.cc in Sources */,
-				701D93EB094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */,
-				70DCAC7A097AF731002F8733 /* cBarScreen.cc in Sources */,
-				70DCAC7D097AF731002F8733 /* cEnvironmentScreen.cc in Sources */,
-				70DCAC7F097AF731002F8733 /* cHistScreen.cc in Sources */,
-				70DCAC82097AF731002F8733 /* cMapScreen.cc in Sources */,
-				70DCAC84097AF731002F8733 /* cMenuWindow.cc in Sources */,
-				70DCAC86097AF731002F8733 /* cOptionsScreen.cc in Sources */,
-				70DCAC88097AF731002F8733 /* cScreen.cc in Sources */,
-				70DCAC8A097AF731002F8733 /* cStatsScreen.cc in Sources */,
-				70DCAC8C097AF731002F8733 /* cSymbolUtil.cc in Sources */,
-				70DCAC90097AF731002F8733 /* cTextWindow.cc in Sources */,
-				70DCAC92097AF731002F8733 /* cView.cc in Sources */,
-				70DCAC94097AF731002F8733 /* cViewInfo.cc in Sources */,
-				70DCAC96097AF731002F8733 /* cZoomScreen.cc in Sources */,
-				70DCAC99097AF731002F8733 /* viewer.cc in Sources */,
-				70DCAC9A097AF754002F8733 /* cTextViewerDriver.cc in Sources */,
-				7054A12309A7BEFC00038658 /* cThread.cc in Sources */,
-				7054A17309A8014600038658 /* cAnalyzeJobQueue.cc in Sources */,
-				7054A1B809A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */,
-				7005A70609BA0FA90007E16E /* cTestCPUInterface.cc in Sources */,
-				707AF0B409EAC805001AEA89 /* LandscapeActions.cc in Sources */,
-				705ACD630A1403A5002D5BA0 /* PrintActions.cc in Sources */,
-				708051BD0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */,
-				E626209E0A372C2A00C07685 /* SaveLoadActions.cc in Sources */,
-				70C054FA0A4F7053002703C1 /* PopulationActions.cc in Sources */,
-				709D924E0A5D950E00D6A163 /* cMutationalNeighborhood.cc in Sources */,
-				7049F2DB0A66859F00640512 /* cHardwareTransSMT.cc in Sources */,
-				704ADBC80A6EEFC300666970 /* DriverActions.cc in Sources */,
-				705ABB3E0A8A6B4400A6A80E /* EnvironmentActions.cc in Sources */,
-				708BF3000AB65DC700A923BF /* cEventList.cc in Sources */,
-				70BCB2350AB7B26B003FF331 /* cArgContainer.cc in Sources */,
-				703D4D700ABA374A0032C8A0 /* cArgSchema.cc in Sources */,
-				109746430AE9606E00929ED6 /* cDeme.cc in Sources */,
-				7099EF510B2FBC85001269F6 /* cAnalyzeScreen.cc in Sources */,
-				7099EF530B2FBC85001269F6 /* cAnalyzeView.cc in Sources */,
-				7099EF560B2FBC86001269F6 /* cTextViewerAnalyzeDriver.cc in Sources */,
-				7099EF580B2FBC86001269F6 /* cTextViewerDriver_Base.cc in Sources */,
-				70B1A6520B7E237F00067486 /* cHardwareExperimental.cc in Sources */,
-				706C70010B83F265003174C1 /* cInstSet.cc in Sources */,
-				707045F00BCEA0D9000F9B9A /* cHardwareGX.cc in Sources */,
+				7023EC3A0C0A431B00362B9C /* avida.cc in Sources */,
+				7023EC3B0C0A431B00362B9C /* cActionLibrary.cc in Sources */,
+				7023EC3C0C0A431B00362B9C /* cAnalyze.cc in Sources */,
+				7023EC3D0C0A431B00362B9C /* cAnalyzeGenotype.cc in Sources */,
+				7023EC3E0C0A431B00362B9C /* cAnalyzeJobQueue.cc in Sources */,
+				7023EC3F0C0A431B00362B9C /* cAnalyzeJobWorker.cc in Sources */,
+				7023EC400C0A431B00362B9C /* cArgContainer.cc in Sources */,
+				7023EC410C0A431B00362B9C /* cArgSchema.cc in Sources */,
+				7023EC420C0A431B00362B9C /* cAvidaConfig.cc in Sources */,
+				7023EC430C0A431B00362B9C /* cBirthChamber.cc in Sources */,
+				7023EC440C0A431B00362B9C /* cChangeList.cc in Sources */,
+				7023EC450C0A431B00362B9C /* cClassificationManager.cc in Sources */,
+				7023EC460C0A431B00362B9C /* cCodeLabel.cc in Sources */,
+				7023EC470C0A431B00362B9C /* cConstSchedule.cc in Sources */,
+				7023EC480C0A431B00362B9C /* cCPUMemory.cc in Sources */,
+				7023EC490C0A431B00362B9C /* cCPUStack.cc in Sources */,
+				7023EC4A0C0A431B00362B9C /* cCPUTestInfo.cc in Sources */,
+				7023EC4B0C0A431B00362B9C /* cDataFile.cc in Sources */,
+				7023EC4C0C0A431B00362B9C /* cDataFileManager.cc in Sources */,
+				7023EC4D0C0A431B00362B9C /* cDataManager_Base.cc in Sources */,
+				7023EC4E0C0A431B00362B9C /* cDefaultAnalyzeDriver.cc in Sources */,
+				7023EC4F0C0A431B00362B9C /* cDefaultMessageDisplay.cc in Sources */,
+				7023EC500C0A431B00362B9C /* cDefaultRunDriver.cc in Sources */,
+				7023EC510C0A431B00362B9C /* cDeme.cc in Sources */,
+				7023EC520C0A431B00362B9C /* cDoubleSum.cc in Sources */,
+				7023EC530C0A431B00362B9C /* cDriverManager.cc in Sources */,
+				7023EC540C0A431B00362B9C /* cEnvironment.cc in Sources */,
+				7023EC550C0A431B00362B9C /* cEventList.cc in Sources */,
+				7023EC560C0A431B00362B9C /* cFallbackWorldDriver.cc in Sources */,
+				7023EC570C0A431B00362B9C /* cFile.cc in Sources */,
+				7023EC580C0A431B00362B9C /* cFitnessMatrix.cc in Sources */,
+				7023EC590C0A431B00362B9C /* cGenome.cc in Sources */,
+				7023EC5A0C0A431B00362B9C /* cGenomeUtil.cc in Sources */,
+				7023EC5B0C0A431B00362B9C /* cGenotype.cc in Sources */,
+				7023EC5C0C0A431B00362B9C /* cGenotype_BirthData.cc in Sources */,
+				7023EC5D0C0A431B00362B9C /* cGenotypeControl.cc in Sources */,
+				7023EC5E0C0A431B00362B9C /* cHardwareBase.cc in Sources */,
+				7023EC5F0C0A431B00362B9C /* cHardwareCPU.cc in Sources */,
+				7023EC600C0A431B00362B9C /* cHardwareExperimental.cc in Sources */,
+				7023EC610C0A431B00362B9C /* cHardwareGX.cc in Sources */,
+				7023EC620C0A431B00362B9C /* cHardwareManager.cc in Sources */,
+				7023EC630C0A431B00362B9C /* cHardwareSMT.cc in Sources */,
+				7023EC640C0A431B00362B9C /* cHardwareStatusPrinter.cc in Sources */,
+				7023EC650C0A431B00362B9C /* cHardwareTransSMT.cc in Sources */,
+				7023EC660C0A431B00362B9C /* cHeadCPU.cc in Sources */,
+				7023EC670C0A431B00362B9C /* cHelpAlias.cc in Sources */,
+				7023EC680C0A431B00362B9C /* cHelpManager.cc in Sources */,
+				7023EC690C0A431B00362B9C /* cHelpType.cc in Sources */,
+				7023EC6A0C0A431B00362B9C /* cHistogram.cc in Sources */,
+				7023EC6B0C0A431B00362B9C /* cInitFile.cc in Sources */,
+				7023EC6C0C0A431B00362B9C /* cInjectGenotype.cc in Sources */,
+				7023EC6D0C0A431B00362B9C /* cInjectGenotypeControl.cc in Sources */,
+				7023EC6E0C0A431B00362B9C /* cInjectGenotypeQueue.cc in Sources */,
+				7023EC6F0C0A431B00362B9C /* cInstruction.cc in Sources */,
+				7023EC700C0A431B00362B9C /* cInstSet.cc in Sources */,
+				7023EC710C0A431B00362B9C /* cIntegratedSchedule.cc in Sources */,
+				7023EC720C0A431B00362B9C /* cIntegratedScheduleNode.cc in Sources */,
+				7023EC730C0A431B00362B9C /* cIntSum.cc in Sources */,
+				7023EC740C0A431B00362B9C /* cLandscape.cc in Sources */,
+				7023EC750C0A431B00362B9C /* cLineage.cc in Sources */,
+				7023EC760C0A431B00362B9C /* cLocalMutations.cc in Sources */,
+				7023EC770C0A431B00362B9C /* cMerit.cc in Sources */,
+				7023EC780C0A431B00362B9C /* cMutationalNeighborhood.cc in Sources */,
+				7023EC790C0A431B00362B9C /* cMutationLib.cc in Sources */,
+				7023EC7A0C0A431B00362B9C /* cMutationRates.cc in Sources */,
+				7023EC7B0C0A431B00362B9C /* cMxCodeArray.cc in Sources */,
+				7023EC7C0C0A431B00362B9C /* cOrganism.cc in Sources */,
+				7023EC7D0C0A431B00362B9C /* cPhenotype.cc in Sources */,
+				7023EC7E0C0A431B00362B9C /* cPopulation.cc in Sources */,
+				7023EC7F0C0A431B00362B9C /* cPopulationCell.cc in Sources */,
+				7023EC800C0A431B00362B9C /* cPopulationInterface.cc in Sources */,
+				7023EC810C0A431B00362B9C /* cProbSchedule.cc in Sources */,
+				7023EC820C0A431B00362B9C /* cRandom.cc in Sources */,
+				7023EC830C0A431B00362B9C /* cReaction.cc in Sources */,
+				7023EC840C0A431B00362B9C /* cReactionLib.cc in Sources */,
+				7023EC850C0A431B00362B9C /* cReactionResult.cc in Sources */,
+				7023EC860C0A431B00362B9C /* cResource.cc in Sources */,
+				7023EC870C0A431B00362B9C /* cResourceCount.cc in Sources */,
+				7023EC880C0A431B00362B9C /* cResourceLib.cc in Sources */,
+				7023EC890C0A431B00362B9C /* cRunningAverage.cc in Sources */,
+				7023EC8A0C0A431B00362B9C /* cSchedule.cc in Sources */,
+				7023EC8B0C0A431B00362B9C /* cSpatialCountElem.cc in Sources */,
+				7023EC8C0C0A431B00362B9C /* cSpatialResCount.cc in Sources */,
+				7023EC8D0C0A431B00362B9C /* cSpecies.cc in Sources */,
+				7023EC8E0C0A431B00362B9C /* cSpeciesControl.cc in Sources */,
+				7023EC8F0C0A431B00362B9C /* cSpeciesQueue.cc in Sources */,
+				7023EC900C0A431B00362B9C /* cStats.cc in Sources */,
+				7023EC910C0A431B00362B9C /* cString.cc in Sources */,
+				7023EC920C0A431B00362B9C /* cStringIterator.cc in Sources */,
+				7023EC930C0A431B00362B9C /* cStringList.cc in Sources */,
+				7023EC940C0A431B00362B9C /* cStringUtil.cc in Sources */,
+				7023EC950C0A431B00362B9C /* cTaskLib.cc in Sources */,
+				7023EC960C0A431B00362B9C /* cTestCPU.cc in Sources */,
+				7023EC970C0A431B00362B9C /* cTestCPUInterface.cc in Sources */,
+				7023EC980C0A431B00362B9C /* cThread.cc in Sources */,
+				7023EC990C0A431B00362B9C /* cTools.cc in Sources */,
+				7023EC9A0C0A431B00362B9C /* cWeightedIndex.cc in Sources */,
+				7023EC9B0C0A431B00362B9C /* cWorld.cc in Sources */,
+				7023EC9C0C0A431B00362B9C /* DriverActions.cc in Sources */,
+				7023EC9D0C0A431B00362B9C /* EnvironmentActions.cc in Sources */,
+				7023EC9E0C0A431B00362B9C /* LandscapeActions.cc in Sources */,
+				7023EC9F0C0A431B00362B9C /* PopulationActions.cc in Sources */,
+				7023ECA00C0A431B00362B9C /* PrintActions.cc in Sources */,
+				7023ECA10C0A431B00362B9C /* SaveLoadActions.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1972,117 +1865,13 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				70DCACA0097AF7CC002F8733 /* avida.cc in Sources */,
-				70DCACA4097AF7CC002F8733 /* cCodeLabel.cc in Sources */,
-				70DCACA5097AF7CC002F8733 /* cCPUMemory.cc in Sources */,
-				70DCACA6097AF7CC002F8733 /* cCPUStack.cc in Sources */,
-				70DCACA7097AF7CC002F8733 /* cCPUTestInfo.cc in Sources */,
-				70DCACAA097AF7CC002F8733 /* cHardwareBase.cc in Sources */,
-				70DCACAC097AF7CC002F8733 /* cHardwareCPU.cc in Sources */,
-				70DCACAE097AF7CC002F8733 /* cHardwareSMT.cc in Sources */,
-				70DCACAF097AF7CC002F8733 /* cHardwareStatusPrinter.cc in Sources */,
-				70DCACB0097AF7CC002F8733 /* cHeadCPU.cc in Sources */,
-				70DCACB2097AF7CC002F8733 /* cTestCPU.cc in Sources */,
-				70DCACB6097AF7CC002F8733 /* cEnvironment.cc in Sources */,
-				70DCACB7097AF7CC002F8733 /* cPopulationInterface.cc in Sources */,
-				70DCACB8097AF7CC002F8733 /* cBirthChamber.cc in Sources */,
-				70DCACB9097AF7CC002F8733 /* cGenome.cc in Sources */,
-				70DCACBA097AF7CC002F8733 /* cGenomeUtil.cc in Sources */,
-				70DCACBB097AF7CC002F8733 /* cInstruction.cc in Sources */,
-				70DCACBE097AF7CC002F8733 /* cLandscape.cc in Sources */,
-				70DCACBF097AF7CC002F8733 /* cLocalMutations.cc in Sources */,
-				70DCACC0097AF7CC002F8733 /* cMutationLib.cc in Sources */,
-				70DCACC1097AF7CC002F8733 /* cMutationRates.cc in Sources */,
-				70DCACC2097AF7CC002F8733 /* cOrganism.cc in Sources */,
-				70DCACC4097AF7CC002F8733 /* cPopulation.cc in Sources */,
-				70DCACC5097AF7CC002F8733 /* cPopulationCell.cc in Sources */,
-				70DCACC6097AF7CC002F8733 /* cPhenotype.cc in Sources */,
-				70DCACC7097AF7CC002F8733 /* cReaction.cc in Sources */,
-				70DCACC8097AF7CC002F8733 /* cReactionLib.cc in Sources */,
-				70DCACC9097AF7CC002F8733 /* cReactionResult.cc in Sources */,
-				70DCACCA097AF7CC002F8733 /* cResource.cc in Sources */,
-				70DCACCB097AF7CC002F8733 /* cResourceCount.cc in Sources */,
-				70DCACCC097AF7CC002F8733 /* cResourceLib.cc in Sources */,
-				70DCACCD097AF7CC002F8733 /* cSpatialCountElem.cc in Sources */,
-				70DCACCE097AF7CC002F8733 /* cSpatialResCount.cc in Sources */,
-				70DCACCF097AF7CC002F8733 /* cStats.cc in Sources */,
-				70DCACD0097AF7CC002F8733 /* cTaskLib.cc in Sources */,
-				70DCACD1097AF7CC002F8733 /* cChangeList.cc in Sources */,
-				70DCACD2097AF7CC002F8733 /* cConstSchedule.cc in Sources */,
-				70DCACD4097AF7CC002F8733 /* cDataFile.cc in Sources */,
-				70DCACD5097AF7CC002F8733 /* cDataFileManager.cc in Sources */,
-				70DCACD6097AF7CC002F8733 /* cDataManager_Base.cc in Sources */,
-				70DCACD7097AF7CC002F8733 /* cDefaultMessageDisplay.cc in Sources */,
-				70DCACD8097AF7CC002F8733 /* cDoubleSum.cc in Sources */,
-				70DCACD9097AF7CC002F8733 /* cFile.cc in Sources */,
-				70DCACDB097AF7CC002F8733 /* cHelpAlias.cc in Sources */,
-				70DCACDC097AF7CC002F8733 /* cHelpManager.cc in Sources */,
-				70DCACDD097AF7CC002F8733 /* cHelpType.cc in Sources */,
-				70DCACDE097AF7CC002F8733 /* cHistogram.cc in Sources */,
-				70DCACDF097AF7CC002F8733 /* cInitFile.cc in Sources */,
-				70DCACE0097AF7CC002F8733 /* cIntegratedSchedule.cc in Sources */,
-				70DCACE1097AF7CC002F8733 /* cIntegratedScheduleNode.cc in Sources */,
-				70DCACE2097AF7CC002F8733 /* cIntSum.cc in Sources */,
-				70DCACE3097AF7CC002F8733 /* cMerit.cc in Sources */,
-				70DCACE4097AF7CC002F8733 /* cProbSchedule.cc in Sources */,
-				70DCACE5097AF7CC002F8733 /* cRandom.cc in Sources */,
-				70DCACE6097AF7CC002F8733 /* cRunningAverage.cc in Sources */,
-				70DCACE7097AF7CC002F8733 /* cSchedule.cc in Sources */,
-				70DCACE8097AF7CC002F8733 /* cString.cc in Sources */,
-				70DCACE9097AF7CC002F8733 /* cStringIterator.cc in Sources */,
-				70DCACEA097AF7CC002F8733 /* cStringList.cc in Sources */,
-				70DCACEB097AF7CC002F8733 /* cStringUtil.cc in Sources */,
-				70DCACEC097AF7CC002F8733 /* cTools.cc in Sources */,
-				70DCACED097AF7CC002F8733 /* cWeightedIndex.cc in Sources */,
-				70DCACEE097AF7CC002F8733 /* cAvidaConfig.cc in Sources */,
-				70DCACEF097AF7CC002F8733 /* cWorld.cc in Sources */,
-				70DCACF0097AF7CC002F8733 /* cHardwareManager.cc in Sources */,
-				70DCACF2097AF7CC002F8733 /* cMxCodeArray.cc in Sources */,
-				70DCACF3097AF7CC002F8733 /* cAnalyze.cc in Sources */,
-				70DCACF4097AF7CC002F8733 /* cAnalyzeGenotype.cc in Sources */,
-				70DCACF6097AF7CC002F8733 /* cFitnessMatrix.cc in Sources */,
-				70DCACF7097AF7CC002F8733 /* cClassificationManager.cc in Sources */,
-				70DCACF8097AF7CC002F8733 /* cGenotype.cc in Sources */,
-				70DCACF9097AF7CC002F8733 /* cGenotypeControl.cc in Sources */,
-				70DCACFA097AF7CC002F8733 /* cSpeciesControl.cc in Sources */,
-				70DCACFB097AF7CC002F8733 /* cGenotype_BirthData.cc in Sources */,
-				70DCACFC097AF7CC002F8733 /* cSpecies.cc in Sources */,
-				70DCACFD097AF7CC002F8733 /* cSpeciesQueue.cc in Sources */,
-				70DCACFE097AF7CC002F8733 /* cInjectGenotype.cc in Sources */,
-				70DCACFF097AF7CC002F8733 /* cInjectGenotypeControl.cc in Sources */,
-				70DCAD00097AF7CC002F8733 /* cInjectGenotypeQueue.cc in Sources */,
-				70DCAD01097AF7CC002F8733 /* cLineage.cc in Sources */,
-				70DCAD02097AF7CC002F8733 /* cFallbackWorldDriver.cc in Sources */,
-				70DCAD03097AF7CC002F8733 /* cDefaultRunDriver.cc in Sources */,
-				70DCAD04097AF7CC002F8733 /* cDriverManager.cc in Sources */,
-				70DCAD05097AF7CC002F8733 /* cDefaultAnalyzeDriver.cc in Sources */,
-				70DCAD25097AF81A002F8733 /* cLexer.l in Sources */,
-				70DCAD2F097AF8BC002F8733 /* main.cc in Sources */,
-				7073165D097C6C8F00815164 /* cParser.cc in Sources */,
-				70731665097C6DF500815164 /* cASLibrary.cc in Sources */,
-				7073166B097C6E0C00815164 /* cASSymbol.cc in Sources */,
-				702F52AA0992F8F600B2B507 /* cSymbolTable.cc in Sources */,
-				702F52E10992FD8000B2B507 /* cScriptObject.cc in Sources */,
-				7054A12109A7BEFC00038658 /* cThread.cc in Sources */,
-				7054A17109A8014600038658 /* cAnalyzeJobQueue.cc in Sources */,
-				7054A1B609A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */,
-				7005A70409BA0FA90007E16E /* cTestCPUInterface.cc in Sources */,
-				707AF0B309EAC801001AEA89 /* LandscapeActions.cc in Sources */,
-				705ACD640A1403AA002D5BA0 /* PrintActions.cc in Sources */,
-				708051BC0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */,
-				70C054F80A4F704D002703C1 /* PopulationActions.cc in Sources */,
-				70C054F90A4F704E002703C1 /* SaveLoadActions.cc in Sources */,
-				709D924D0A5D950E00D6A163 /* cMutationalNeighborhood.cc in Sources */,
-				7049F2DA0A66859B00640512 /* cHardwareTransSMT.cc in Sources */,
-				704ADBC60A6EEFC300666970 /* DriverActions.cc in Sources */,
-				705ABB3D0A8A6B4100A6A80E /* EnvironmentActions.cc in Sources */,
-				708BF2FF0AB65DC700A923BF /* cEventList.cc in Sources */,
-				703D4D6F0ABA374A0032C8A0 /* cArgSchema.cc in Sources */,
-				703D4E2E0ABCAC4A0032C8A0 /* cArgContainer.cc in Sources */,
-				109746410AE9606E00929ED6 /* cDeme.cc in Sources */,
-				70B1A6510B7E237F00067486 /* cHardwareExperimental.cc in Sources */,
-				706C70000B83F265003174C1 /* cInstSet.cc in Sources */,
-				70FC02800BC835E700991121 /* cHardwareGX.cc in Sources */,
+				7023ECD70C0A44BF00362B9C /* main.cc in Sources */,
+				7023ECD80C0A44C400362B9C /* cASLibrary.cc in Sources */,
+				7023ECD90C0A44C600362B9C /* cASSymbol.cc in Sources */,
+				7023ECDA0C0A44C900362B9C /* cLexer.l in Sources */,
+				7023ECDB0C0A44CA00362B9C /* cParser.cc in Sources */,
+				7023ECDC0C0A44CC00362B9C /* cScriptObject.cc in Sources */,
+				7023ECDD0C0A44CE00362B9C /* cSymbolTable.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2090,117 +1879,53 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				DCC3166107628531008F7A48 /* avida.cc in Sources */,
-				70C1EF4808C393BA00F50912 /* cCodeLabel.cc in Sources */,
-				70C1EF5908C3948C00F50912 /* cCPUMemory.cc in Sources */,
-				70C1EF6208C3954700F50912 /* cCPUStack.cc in Sources */,
-				70C1EF7208C3968700F50912 /* cCPUTestInfo.cc in Sources */,
-				70C1EFA808C39F2100F50912 /* cHardwareBase.cc in Sources */,
-				70C1EFAA08C39F2100F50912 /* cHardwareCPU.cc in Sources */,
-				70C1F02B08C3C71300F50912 /* cHardwareSMT.cc in Sources */,
-				70C1F02C08C3C71300F50912 /* cHardwareStatusPrinter.cc in Sources */,
-				70C1F02E08C3C71300F50912 /* cHeadCPU.cc in Sources */,
-				70C1F03008C3C71300F50912 /* cTestCPU.cc in Sources */,
-				702D4F0108DA5341007BA469 /* cEnvironment.cc in Sources */,
-				702D4F0208DA5341007BA469 /* cPopulationInterface.cc in Sources */,
-				702D4F4508DA61FE007BA469 /* cBirthChamber.cc in Sources */,
-				70CA6EC408DB7F8200068AC2 /* cGenome.cc in Sources */,
-				70CA6EC508DB7F8200068AC2 /* cGenomeUtil.cc in Sources */,
-				70CA6ECF08DB7F8200068AC2 /* cInstruction.cc in Sources */,
-				70B0865908F4974300FC65FE /* cLandscape.cc in Sources */,
-				70B0865C08F4974300FC65FE /* cLocalMutations.cc in Sources */,
-				70B0865E08F4974300FC65FE /* cMutationLib.cc in Sources */,
-				70B0865F08F4974300FC65FE /* cMutationRates.cc in Sources */,
-				70B0868B08F49EA800FC65FE /* cOrganism.cc in Sources */,
-				70B0868D08F49EA800FC65FE /* cPopulation.cc in Sources */,
-				70B0868E08F49EA800FC65FE /* cPopulationCell.cc in Sources */,
-				70B0869D08F49F4800FC65FE /* cPhenotype.cc in Sources */,
-				70B0872E08F5E82D00FC65FE /* cReaction.cc in Sources */,
-				70B0872F08F5E82D00FC65FE /* cReactionLib.cc in Sources */,
-				70B0873208F5E82D00FC65FE /* cReactionResult.cc in Sources */,
-				70B0873308F5E82D00FC65FE /* cResource.cc in Sources */,
-				70B0873408F5E82D00FC65FE /* cResourceCount.cc in Sources */,
-				70B0873508F5E82D00FC65FE /* cResourceLib.cc in Sources */,
-				70B0873608F5E82D00FC65FE /* cSpatialCountElem.cc in Sources */,
-				70B0873708F5E82D00FC65FE /* cSpatialResCount.cc in Sources */,
-				70B0873B08F5E82D00FC65FE /* cStats.cc in Sources */,
-				70B0873D08F5E82D00FC65FE /* cTaskLib.cc in Sources */,
-				70B087E208F5F4BA00FC65FE /* cChangeList.cc in Sources */,
-				70B087E308F5F4BA00FC65FE /* cConstSchedule.cc in Sources */,
-				70B0885508F5FE5800FC65FE /* cDataFile.cc in Sources */,
-				70B0885608F5FE5800FC65FE /* cDataFileManager.cc in Sources */,
-				70B0885708F5FE5800FC65FE /* cDataManager_Base.cc in Sources */,
-				70B0885808F5FE5800FC65FE /* cDefaultMessageDisplay.cc in Sources */,
-				70B0885908F5FE5800FC65FE /* cDoubleSum.cc in Sources */,
-				70B0888508F603D400FC65FE /* cFile.cc in Sources */,
-				70B0892708F7630100FC65FE /* cHelpAlias.cc in Sources */,
-				70B0892808F7630100FC65FE /* cHelpManager.cc in Sources */,
-				70B0892908F7630100FC65FE /* cHelpType.cc in Sources */,
-				70B0892A08F7630100FC65FE /* cHistogram.cc in Sources */,
-				70B0892B08F7630100FC65FE /* cInitFile.cc in Sources */,
-				70B0892C08F7630100FC65FE /* cIntegratedSchedule.cc in Sources */,
-				70B0892D08F7630100FC65FE /* cIntegratedScheduleNode.cc in Sources */,
-				70B0892E08F7630100FC65FE /* cIntSum.cc in Sources */,
-				70B0892F08F7630100FC65FE /* cMerit.cc in Sources */,
-				70B0893008F7630100FC65FE /* cProbSchedule.cc in Sources */,
-				70B0893108F7630100FC65FE /* cRandom.cc in Sources */,
-				70B0893208F7630100FC65FE /* cRunningAverage.cc in Sources */,
-				70B0893308F7630100FC65FE /* cSchedule.cc in Sources */,
-				70B0893408F7630100FC65FE /* cString.cc in Sources */,
-				70B0893508F7630100FC65FE /* cStringIterator.cc in Sources */,
-				70B0893608F7630100FC65FE /* cStringList.cc in Sources */,
-				70B0893708F7630100FC65FE /* cStringUtil.cc in Sources */,
-				70B08B9408FB2E6B00FC65FE /* cTools.cc in Sources */,
-				70B08B9508FB2E6B00FC65FE /* cWeightedIndex.cc in Sources */,
-				7013846409028B3E0087ED2E /* cAvidaConfig.cc in Sources */,
-				70C5BC6509059A970028A785 /* cWorld.cc in Sources */,
-				70C5BD6B0905CE5F0028A785 /* cHardwareManager.cc in Sources */,
-				7040D3A6090964D100AA820F /* cMxCodeArray.cc in Sources */,
-				70422A34091B141000A5E67F /* cAnalyze.cc in Sources */,
-				70422A3C091B141000A5E67F /* cAnalyzeGenotype.cc in Sources */,
-				70F7D8CE09254787009E311D /* cFitnessMatrix.cc in Sources */,
-				70F7DAF409290468009E311D /* cClassificationManager.cc in Sources */,
-				70F7DCA309293E87009E311D /* cGenotype.cc in Sources */,
-				70F7DE6C09296615009E311D /* cGenotypeControl.cc in Sources */,
-				70F7DE6D09296616009E311D /* cSpeciesControl.cc in Sources */,
-				70F7DE7409296794009E311D /* cGenotype_BirthData.cc in Sources */,
-				7053324C0929764C006BD186 /* cSpecies.cc in Sources */,
-				7053324D0929764E006BD186 /* cSpeciesQueue.cc in Sources */,
-				7053336D092A3DF9006BD186 /* cInjectGenotype.cc in Sources */,
-				7053336F092A3DFC006BD186 /* cInjectGenotypeControl.cc in Sources */,
-				70533371092A3E00006BD186 /* cInjectGenotypeQueue.cc in Sources */,
-				705333E7092A4B7F006BD186 /* cLineage.cc in Sources */,
-				701D915D094B864A008B845F /* cFallbackWorldDriver.cc in Sources */,
-				701D930E094CAD6B008B845F /* cDefaultRunDriver.cc in Sources */,
-				701D9383094CBA69008B845F /* cDriverManager.cc in Sources */,
-				701D93E9094CBF71008B845F /* cDefaultAnalyzeDriver.cc in Sources */,
 				70DCAC9C097AF7C0002F8733 /* primitive.cc in Sources */,
-				7054A12509A7BEFC00038658 /* cThread.cc in Sources */,
-				7054A17509A8014600038658 /* cAnalyzeJobQueue.cc in Sources */,
-				7054A1BA09A810CB00038658 /* cAnalyzeJobWorker.cc in Sources */,
-				7005A70809BA0FA90007E16E /* cTestCPUInterface.cc in Sources */,
-				707AF0B209EAC7FD001AEA89 /* LandscapeActions.cc in Sources */,
-				705ACD4F0A13FED5002D5BA0 /* PrintActions.cc in Sources */,
-				708051B20A1F663100CBB8B6 /* SaveLoadActions.cc in Sources */,
-				708051BB0A1F66B400CBB8B6 /* cActionLibrary.cc in Sources */,
-				70C054ED0A4F6FD2002703C1 /* PopulationActions.cc in Sources */,
-				709D924C0A5D950D00D6A163 /* cMutationalNeighborhood.cc in Sources */,
-				7049F2D90A66859700640512 /* cHardwareTransSMT.cc in Sources */,
-				704ADBF90A6EF3A300666970 /* DriverActions.cc in Sources */,
-				705ABB3C0A8A6B3D00A6A80E /* EnvironmentActions.cc in Sources */,
-				708BF2FE0AB65DC700A923BF /* cEventList.cc in Sources */,
-				70BCB22E0AB7B23D003FF331 /* cArgContainer.cc in Sources */,
-				703D4D6E0ABA374A0032C8A0 /* cArgSchema.cc in Sources */,
-				1097463F0AE9606E00929ED6 /* cDeme.cc in Sources */,
-				70B1A6500B7E237F00067486 /* cHardwareExperimental.cc in Sources */,
-				706C6FFF0B83F265003174C1 /* cInstSet.cc in Sources */,
-				4233358A0BC067E3000DF681 /* cHardwareGX.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		7023ECA70C0A436000362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 7023EC320C0A426900362B9C /* avida-core */;
+			targetProxy = 7023ECA60C0A436000362B9C /* PBXContainerItemProxy */;
+		};
+		7023ECD00C0A445800362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 7023EC320C0A426900362B9C /* avida-core */;
+			targetProxy = 7023ECCF0C0A445800362B9C /* PBXContainerItemProxy */;
+		};
+		7023ECD20C0A445B00362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 70AA941809D486AE006A24C8 /* tcmalloc */;
+			targetProxy = 7023ECD10C0A445B00362B9C /* PBXContainerItemProxy */;
+		};
+		7023ECE10C0A44DE00362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 70AA941809D486AE006A24C8 /* tcmalloc */;
+			targetProxy = 7023ECE00C0A44DE00362B9C /* PBXContainerItemProxy */;
+		};
+		7023ECE30C0A44E000362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 7023EC320C0A426900362B9C /* avida-core */;
+			targetProxy = 7023ECE20C0A44E000362B9C /* PBXContainerItemProxy */;
+		};
+		7023ED540C0A590B00362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = DCC3164C07626CF3008F7A48 /* avida */;
+			targetProxy = 7023ED530C0A590B00362B9C /* PBXContainerItemProxy */;
+		};
+		7023ED560C0A590F00362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 700E2AF3085DE50C00CF158A /* avida-viewer */;
+			targetProxy = 7023ED550C0A590F00362B9C /* PBXContainerItemProxy */;
+		};
+		7023ED580C0A591100362B9C /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 70B6514B0BEA6FAD002472ED /* unit-tests */;
+			targetProxy = 7023ED570C0A591100362B9C /* PBXContainerItemProxy */;
+		};
 		70DCF67609D4E10500924128 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 70AA941809D486AE006A24C8 /* tcmalloc */;
@@ -2216,7 +1941,7 @@
 			};
 			name = Development;
 		};
-		700E2B80085DE50C00CF158A /* Deployment-G4 */ = {
+		700E2B80085DE50C00CF158A /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_ALTIVEC_EXTENSIONS = YES;
@@ -2236,8 +1961,86 @@
 					"-Wno-unknown-pragmas",
 				);
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
+		7023EC350C0A42BC00362B9C /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "avida-core";
+			};
+			name = Development;
+		};
+		7023EC360C0A42BC00362B9C /* Deployment */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "avida-core";
+			};
+			name = Deployment;
+		};
+		7023EC370C0A42BC00362B9C /* Deployment-G5 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "avida-core";
+			};
+			name = "Deployment-G5";
+		};
+		7023EC380C0A42BC00362B9C /* Deployment-Universal */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "avida-core";
+			};
+			name = "Deployment-Universal";
+		};
+		7023EC390C0A42BC00362B9C /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "avida-core";
+			};
+			name = Profile;
+		};
+		7023ED5A0C0A594300362B9C /* Development */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				PRODUCT_NAME = "full-suite";
+			};
+			name = Development;
+		};
+		7023ED5B0C0A594300362B9C /* Deployment */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				PRODUCT_NAME = "full-suite";
+				ZERO_LINK = NO;
+			};
+			name = Deployment;
+		};
+		7023ED5C0C0A594300362B9C /* Deployment-G5 */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "full-suite";
+			};
+			name = "Deployment-G5";
+		};
+		7023ED5D0C0A594300362B9C /* Deployment-Universal */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "full-suite";
+			};
+			name = "Deployment-Universal";
+		};
+		7023ED5E0C0A594300362B9C /* Profile */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "full-suite";
+			};
+			name = Profile;
+		};
 		702442D30859E0B00059BD9B /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -2251,7 +2054,7 @@
 			};
 			name = Development;
 		};
-		702442D40859E0B00059BD9B /* Deployment-G4 */ = {
+		702442D40859E0B00059BD9B /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_MODEL_CPU = G4;
@@ -2261,24 +2064,20 @@
 				);
 				PRODUCT_NAME = avida;
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
 		702442D80859E0B00059BD9B /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_ALTIVEC_EXTENSIONS = YES;
-				GCC_AUTO_VECTORIZATION = YES;
 				GCC_DEBUGGING_SYMBOLS = full;
-				GCC_DYNAMIC_NO_PIC = YES;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_FAST_MATH = YES;
+				GCC_ENABLE_CPP_RTTI = NO;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					DEBUG,
 					REVISION_SUPPORT,
 				);
-				GCC_STRICT_ALIASING = YES;
-				GCC_UNROLL_LOOPS = YES;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
 				PREBINDING = NO;
 				WARNING_CFLAGS = (
@@ -2290,13 +2089,15 @@
 			};
 			name = Development;
 		};
-		702442D90859E0B00059BD9B /* Deployment-G4 */ = {
+		702442D90859E0B00059BD9B /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				DEPLOYMENT_POSTPROCESSING = YES;
 				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_DYNAMIC_NO_PIC = YES;
+				GCC_ENABLE_CPP_RTTI = NO;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_FAST_MATH = YES;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -2305,7 +2106,9 @@
 				);
 				GCC_STRICT_ALIASING = YES;
 				GCC_UNROLL_LOOPS = YES;
-				PREBINDING = NO;
+				PER_ARCH_CFLAGS_i386 = "-DCOMPILE_ARCH=\\\"Intel\\\"";
+				PER_ARCH_CFLAGS_ppc = "-DCOMPILE_ARCH=\\\"G4-G5\\\" -mpowerpc-gpopt -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -falign-loops=16 -falign-jumps=16 -falign-functions=16 -ftree-loop-linear -fsched-interblock -fgcse-sm";
+				SEPARATE_STRIP = YES;
 				WARNING_CFLAGS = (
 					"-Wextra",
 					"-Wno-four-char-constants",
@@ -2313,46 +2116,28 @@
 					"-Wconversion",
 				);
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
 		70AA942609D48715006A24C8 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				COPY_PHASE_STRIP = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_CPP_EXCEPTIONS = YES;
-				GCC_ENABLE_CPP_RTTI = NO;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_THREADSAFE_STATICS = NO;
-				INSTALL_PATH = /usr/local/lib;
-				PREBINDING = NO;
 				PRODUCT_NAME = tcmalloc;
-				ZERO_LINK = YES;
 			};
 			name = Development;
 		};
-		70AA942709D48715006A24C8 /* Deployment-G4 */ = {
+		70AA942709D48715006A24C8 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_CPP_RTTI = NO;
-				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
-				GCC_MODEL_TUNING = G4;
-				GCC_THREADSAFE_STATICS = NO;
 				PRODUCT_NAME = tcmalloc;
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
 		70AA942809D48715006A24C8 /* Deployment-G5 */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_CPP_RTTI = NO;
-				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_THREADSAFE_STATICS = NO;
 				PRODUCT_NAME = tcmalloc;
 			};
 			name = "Deployment-G5";
@@ -2361,9 +2146,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_CPP_RTTI = NO;
-				GCC_MODEL_TUNING = G5;
-				GCC_THREADSAFE_STATICS = NO;
 				PRODUCT_NAME = tcmalloc;
 			};
 			name = Profile;
@@ -2439,11 +2221,15 @@
 		70B393E00944CA6F0018F09D /* Deployment-G5 */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = ppc;
 				DEPLOYMENT_POSTPROCESSING = YES;
 				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_DYNAMIC_NO_PIC = YES;
+				GCC_ENABLE_CPP_RTTI = NO;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_FAST_MATH = YES;
+				GCC_MODEL_PPC64 = YES;
 				GCC_MODEL_TUNING = G5;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -2452,7 +2238,21 @@
 				);
 				GCC_STRICT_ALIASING = YES;
 				GCC_UNROLL_LOOPS = YES;
+				OTHER_CFLAGS = (
+					"$(OTHER_CFLAGS_QUOTED_1)",
+					"-mpowerpc-gpopt",
+					"-falign-loops-max-skip=15",
+					"-falign-jumps-max-skip=15",
+					"-falign-loops=16",
+					"-falign-jumps=16",
+					"-falign-functions=16",
+					"-ftree-loop-linear",
+					"-fsched-interblock",
+					"-fgcse-sm",
+				);
+				OTHER_CFLAGS_QUOTED_1 = "-DCOMPILE_ARCH=\\\"G5\\\"";
 				PREBINDING = NO;
+				SEPARATE_STRIP = YES;
 				WARNING_CFLAGS = (
 					"-Wextra",
 					"-Wno-four-char-constants",
@@ -2469,6 +2269,8 @@
 				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_DYNAMIC_NO_PIC = YES;
+				GCC_ENABLE_CPP_RTTI = NO;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_FAST_MATH = YES;
 				GCC_MODEL_TUNING = G5;
 				GCC_OPTIMIZATION_LEVEL = 3;
@@ -2479,6 +2281,8 @@
 				GCC_STRICT_ALIASING = YES;
 				GCC_UNROLL_LOOPS = YES;
 				OTHER_CFLAGS = "-falign-loops=16";
+				PER_ARCH_CFLAGS_i386 = "-DCOMPILE_ARCH=\\\"Intel\\\"";
+				PER_ARCH_CFLAGS_ppc = "-DCOMPILE_ARCH=\\\"G4-G5\\\"";
 				PREBINDING = NO;
 				WARNING_CFLAGS = (
 					"-Wextra",
@@ -2505,7 +2309,7 @@
 			};
 			name = Development;
 		};
-		70B651590BEA700B002472ED /* Deployment-G4 */ = {
+		70B651590BEA700B002472ED /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_ENABLE_FIX_AND_CONTINUE = YES;
@@ -2515,7 +2319,7 @@
 				PRODUCT_NAME = "unit-tests";
 				ZERO_LINK = YES;
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
 		70B6515A0BEA700B002472ED /* Deployment-G5 */ = {
 			isa = XCBuildConfiguration;
@@ -2561,13 +2365,13 @@
 			};
 			name = Development;
 		};
-		70DCAD19097AF7CC002F8733 /* Deployment-G4 */ = {
+		70DCAD19097AF7CC002F8733 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_MODEL_CPU = G4;
 				PRODUCT_NAME = "avida-s";
 			};
-			name = "Deployment-G4";
+			name = Deployment;
 		};
 		70DCAD1A097AF7CC002F8733 /* Deployment-G5 */ = {
 			isa = XCBuildConfiguration;
@@ -2589,10 +2393,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_CPP_RTTI = NO;
-				GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_THREADSAFE_STATICS = NO;
 				PRODUCT_NAME = tcmalloc;
 			};
 			name = "Deployment-Universal";
@@ -2647,10 +2447,12 @@
 					i386,
 				);
 				DEPLOYMENT_POSTPROCESSING = YES;
+				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_DYNAMIC_NO_PIC = YES;
+				GCC_ENABLE_CPP_RTTI = NO;
+				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_FAST_MATH = YES;
-				GCC_MODEL_TUNING = G5;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					NDEBUG,
@@ -2658,8 +2460,11 @@
 				);
 				GCC_STRICT_ALIASING = YES;
 				GCC_UNROLL_LOOPS = YES;
+				PER_ARCH_CFLAGS_i386 = "-DCOMPILE_ARCH=\\\"Intel\\\"";
+				PER_ARCH_CFLAGS_ppc = "-DCOMPILE_ARCH=\\\"G4-G5\\\" -mpowerpc-gpopt -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -falign-loops=16 -falign-jumps=16 -falign-functions=16 -ftree-loop-linear -fsched-interblock -fgcse-sm";
 				PREBINDING = NO;
 				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+				SEPARATE_STRIP = YES;
 				WARNING_CFLAGS = (
 					"-Wextra",
 					"-Wno-four-char-constants",
@@ -2676,73 +2481,97 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				700E2B7F085DE50C00CF158A /* Development */,
-				700E2B80085DE50C00CF158A /* Deployment-G4 */,
+				700E2B80085DE50C00CF158A /* Deployment */,
 				70B393DE0944CA6F0018F09D /* Deployment-G5 */,
 				E626209C0A372B9900C07685 /* Deployment-Universal */,
 				70B393DF0944CA6F0018F09D /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
+		7023EC340C0A42BC00362B9C /* Build configuration list for PBXNativeTarget "avida-core" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7023EC350C0A42BC00362B9C /* Development */,
+				7023EC360C0A42BC00362B9C /* Deployment */,
+				7023EC370C0A42BC00362B9C /* Deployment-G5 */,
+				7023EC380C0A42BC00362B9C /* Deployment-Universal */,
+				7023EC390C0A42BC00362B9C /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Deployment;
+		};
+		7023ED590C0A594300362B9C /* Build configuration list for PBXAggregateTarget "full-suite" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7023ED5A0C0A594300362B9C /* Development */,
+				7023ED5B0C0A594300362B9C /* Deployment */,
+				7023ED5C0C0A594300362B9C /* Deployment-G5 */,
+				7023ED5D0C0A594300362B9C /* Deployment-Universal */,
+				7023ED5E0C0A594300362B9C /* Profile */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Deployment;
+		};
 		702442D20859E0B00059BD9B /* Build configuration list for PBXNativeTarget "avida" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				702442D30859E0B00059BD9B /* Development */,
-				702442D40859E0B00059BD9B /* Deployment-G4 */,
+				702442D40859E0B00059BD9B /* Deployment */,
 				70B393DC0944CA6F0018F09D /* Deployment-G5 */,
 				E626209A0A372B9900C07685 /* Deployment-Universal */,
 				70B393DD0944CA6F0018F09D /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
 		702442D70859E0B00059BD9B /* Build configuration list for PBXProject "Avida" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				702442D80859E0B00059BD9B /* Development */,
-				702442D90859E0B00059BD9B /* Deployment-G4 */,
+				702442D90859E0B00059BD9B /* Deployment */,
 				70B393E00944CA6F0018F09D /* Deployment-G5 */,
 				E626209D0A372B9900C07685 /* Deployment-Universal */,
 				70B393E10944CA6F0018F09D /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
 		70AA942509D48715006A24C8 /* Build configuration list for PBXNativeTarget "tcmalloc" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				70AA942609D48715006A24C8 /* Development */,
-				70AA942709D48715006A24C8 /* Deployment-G4 */,
+				70AA942709D48715006A24C8 /* Deployment */,
 				70AA942809D48715006A24C8 /* Deployment-G5 */,
 				E62620990A372B9900C07685 /* Deployment-Universal */,
 				70AA942909D48715006A24C8 /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
 		70B651570BEA700B002472ED /* Build configuration list for PBXNativeTarget "unit-tests" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				70B651580BEA700B002472ED /* Development */,
-				70B651590BEA700B002472ED /* Deployment-G4 */,
+				70B651590BEA700B002472ED /* Deployment */,
 				70B6515A0BEA700B002472ED /* Deployment-G5 */,
 				70B6515B0BEA700B002472ED /* Deployment-Universal */,
 				70B6515C0BEA700B002472ED /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
 		70DCAD17097AF7CC002F8733 /* Build configuration list for PBXNativeTarget "avida-s" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				70DCAD18097AF7CC002F8733 /* Development */,
-				70DCAD19097AF7CC002F8733 /* Deployment-G4 */,
+				70DCAD19097AF7CC002F8733 /* Deployment */,
 				70DCAD1A097AF7CC002F8733 /* Deployment-G5 */,
 				E626209B0A372B9900C07685 /* Deployment-Universal */,
 				70DCAD1B097AF7CC002F8733 /* Profile */,
 			);
 			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = "Deployment-G4";
+			defaultConfigurationName = Deployment;
 		};
 /* End XCConfigurationList section */
 	};

Modified: branches/collect/documentation/actions.html
===================================================================
--- branches/collect/documentation/actions.html	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/documentation/actions.html	2007-05-29 18:12:46 UTC (rev 1624)
@@ -1210,8 +1210,9 @@
 </pre></p>
 
 	<li><p>Define the private data members, constructor, description string in GetDescription, and the Process function.  Any arguments that you specify after the action name in the events configuration will be passed to your new class via the args argument in the constructor.</p></li>
-	<li><p>Register the new action with the action library.  At the bottom of each action definitions file, there are the commands that register the individual actions with the action library.  To register our example action "MyAction", we'd write<p>
-<p><pre>action_lib->Register<cActionMyAction>("MyAction");</pre><p>
+	<li><p>Register the new action with the action library.  At the bottom of each action definitions file, there are the commands that register the individual actions with the action library.  In the PrintActions.cc file, for instance, this function is called RegisterPrintActions.
+	<p>  To register our example action "MyAction", we'd write:<p>
+<p><pre>action_lib->Register&lt;cActionMyAction&gt;("MyAction");</pre><p>
 	<li><p>Test your action.</p></li>
 </ol>
 </p>

Modified: branches/collect/source/actions/PrintActions.cc
===================================================================
--- branches/collect/source/actions/PrintActions.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/actions/PrintActions.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -49,6 +49,7 @@
 #include "tVector.h"
 #include <cmath>
 #include <cerrno>
+#include <map>
 
 
 #define STATS_OUT_FILE(METHOD, DEFAULT)                                                   /*  1 */ \
@@ -80,7 +81,7 @@
 STATS_OUT_FILE(PrintTimeData,               time.dat            );
 STATS_OUT_FILE(PrintMutationRateData,       mutation_rates.dat  );
 STATS_OUT_FILE(PrintDivideMutData,          divide_mut.dat      );
-STATS_OUT_FILE(PrintDominantParaData,       parasite.dat        );
+STATS_OUT_FILE(PrintParasiteData,           parasite.dat        );
 STATS_OUT_FILE(PrintInstructionData,        instruction.dat     );
 STATS_OUT_FILE(PrintGenotypeMap,            genotype_map.m      );
 STATS_OUT_FILE(PrintMarketData,             market.dat          );
@@ -773,7 +774,7 @@
 
 
 /*
- @MRR March 2007
+ @MRR May 2007 [UNTESTED]
  This function prints out fitness data. The main point is that it
  calculates the average fitness from info from the testCPU + the actual
  merit of the organisms, and assigns zero fitness to those organisms
@@ -784,12 +785,15 @@
  
  This version of the DetailedFitnessData prints the information as a log histogram.
  
+ THIS FUNCTION CONTAINS STATIC METHODS USED IN OTHER PRINT ACTION CLASSES.
+ MOVEMENT OF THIS FUNCTION TO A LOWER POINT IN THE FILE MAY CAUSE CONFLICTS.
+ 
  Parameters:
  filename   (cString)     Where the fitness histogram should be written.
  fit_mode   (cString)     Either {Current, Actual, TestCPU}, where
-															   Current is the current value in the grid.  [Default]
-                                 Actual uses the current merit, but the true gestation time.
-                                 TestCPU determined.
+ Current is the current value in the grid.  [Default]
+ Actual uses the current merit, but the true gestation time.
+ TestCPU determined.
  hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: -3]
  hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 12]
  hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 0.5]
@@ -797,11 +801,11 @@
 class cActionPrintLogFitnessHistogram : public cAction
 {
 private:
-
+	
   double m_hist_fmin;
   double m_hist_fstep;
 	double m_hist_fmax;
-	string m_mode;
+	cString m_mode;
   cString m_filename;
 	
 public:
@@ -816,14 +820,93 @@
 			m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
 	}
   
-  static const cString GetDescription() { return  "Parameters:\n\tfilename   (cString) [fitness_log_hist.dat]    Where the fitness histogram should be written.\n\tfit_mode   (cString)     Either {Current, Actual, TestCPU}, where\n\t\t Current is the current value in the grid.  [Default]\n\tActual uses the current merit, but the true gestation time.\n\tTestCPU determined.\n\thist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: -3]\n\thist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 12]\n\thist_fstep (double)      The width of the individual bins in the histogram.    [Default: 0.5]\n\n";}
+  static const cString GetDescription() { return  "Parameters: <filename> <mode> <min> <step> <max>";}
   
+	//Given a min:step:max and bin number, return a string reprsenting the range of fitness values.
+	//This function may be called from other classes.
+	static cString GetHistogramBinLabel(int k, double min, double step, double max)
+	{
+		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+		cString retval; 
+		
+		if (k == 0)
+			retval = "Inviable";
+		else if (k == 1)
+			retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
+		else if (k < num_bins - 1)
+			retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
+				+ cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
+				+ cString("]");
+		else
+			retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
+		return retval;
+	}
+	
+		
+	//This function may get called by outside classes to generate a histogram of log10 fitnesses;
+	//max may be updated by this function if the range is not evenly divisible by the step
+	static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
+																	 double min, double step, double& max, const cString& mode, cWorld* world,
+																	 cAvidaContext& ctx)
+	{
+		//Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
+		//If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
+		//All bins are [min, max)
+    tArray<int> histogram;
+		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+		max  = min + (num_bins - 3) * step;
+		histogram.Resize(num_bins, 0);
+		cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
+		
+		
+		// We calculate the fitness based on the current merit,
+		// but with the true gestation time. Also, we set the fitness
+		// to zero if the creature is not viable.
+		tArray<cGenotype*>::const_iterator git;
+		tArray<cOrganism*>::const_iterator oit;
+		for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
+			cCPUTestInfo test_info;
+			double fitness = 0.0;
+			if (mode == "TEST_CPU" || mode == "ACTUAL"){
+				testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
+			}
+			
+			if (mode == "TEST_CPU"){
+				fitness = test_info.GetColonyFitness();
+			}
+			else if (mode == "CURRENT"){
+				fitness = (*oit)->GetPhenotype().GetFitness();
+			}
+			else if (mode == "ACTUAL"){
+				fitness = (test_info.IsViable()) ? 
+				(*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
+			}
+			else
+				world->GetDriver().RaiseFatalException(1, "PrintLogFitnessHistogram::MakeHistogram: Invalid fitness mode requested.");
+			
+			//Update the histogram
+			const double log_fitness = log10(fitness);
+			int update_bin = (errno == ERANGE) ? 0 :       //If we have a log of zero, this will be true.
+				static_cast<int>((log_fitness - min) / step);
+			
+			if (update_bin < 0)  //Non-zero bins
+				update_bin = 1;    //Below range
+			else if (update_bin >= num_bins - 3)
+				update_bin = num_bins - 1;  //Above range
+			else
+				update_bin = update_bin + 2;  //Within range
+			
+			histogram[update_bin]++;
+		}
+		delete testcpu;
+		return histogram;
+	}
+	
   void Process(cAvidaContext& ctx)
   {
-		
 		//Verify input parameters
 		if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
-				m_hist_fmin > m_hist_fmax)
+				 m_hist_fmin > m_hist_fmax)
 		{
 			cerr << "cActionPrintFitnessHistogram: Please check arguments.  Abort.\n";
 			cerr << "Parameters: " << m_filename << ", " << m_mode << ", " << m_hist_fmin << ":" << m_hist_fstep << ":" << m_hist_fmax << endl;
@@ -834,72 +917,28 @@
     cPopulation& pop        = m_world->GetPopulation();
     const int    update     = m_world->GetStats().GetUpdate();
     const double generation = m_world->GetStats().SumGeneration().Average();
-    
-    //Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
-		//If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
-		//All bins are [min, max)
-    tArray<int> histogram;
-		int num_bins = static_cast<int>(ceil( (m_hist_fmax - m_hist_fmin) / m_hist_fstep)) + 3;
-		m_hist_fmax  = m_hist_fmin + (num_bins - 3) * m_hist_fstep;
-		histogram.Resize(num_bins, 0);
+		tArray<cOrganism*> orgs;
+		tArray<cGenotype*> gens;
 		
-    
-    cTestCPU* testcpu = m_world->GetHardwareManager().CreateTestCPU();
-		
     for (int i = 0; i < pop.GetSize(); i++)
 		{
       if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
-      
       cOrganism* organism = pop.GetCell(i).GetOrganism();
       cGenotype* genotype = organism->GetGenotype();
-      
-      cCPUTestInfo test_info;
-      testcpu->TestGenome(ctx, test_info, genotype->GetGenome());
-			
-      // We calculate the fitness based on the current merit,
-      // but with the true gestation time. Also, we set the fitness
-      // to zero if the creature is not viable.
-      const double fitness = (m_mode == "CURRENT") ? organism->GetPhenotype().GetFitness() :
-				                     (m_mode == "ACUTAL")  ? 
-																((test_info.IsViable()) ? 
-																 organism->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0) :
-				                     test_info.GetColonyFitness();
+			orgs.Push(organism);
+			gens.Push(genotype);
+		}
 		
-			//Update the histogram
-			const double log_fitness = log10(fitness);
-			
-			int update_bin = (errno == ERANGE) ? 0 :       //If we have a log of zero, this will be true.
-				static_cast<int>((log_fitness - m_hist_fmin) / m_hist_fstep);
-			if (update_bin < 0)
-				update_bin = 1;
-			else if (update_bin >= num_bins - 3)
-				update_bin = num_bins - 1;
-			else
-				update_bin = update_bin + 2;
+		tArray<int> histogram = MakeHistogram(orgs, gens, m_hist_fmin, m_hist_fstep, m_hist_fstep, m_mode, m_world, ctx);
 		
-			histogram[update_bin]++;
-		}
-			
-		delete testcpu;
-    
+		
 		//Output histogram
 		cDataFile& hdf = m_world->GetDataFile(m_filename);
 		hdf.Write(update, "Update");
 		hdf.Write(generation, "Generation");
 		
 		for (int k = 0; k < histogram.GetSize(); k++)
-		{ 
-			if (k == 0)
-				hdf.Write(histogram[k], "Inviable");
-			else if (k == 1)
-				hdf.Write(histogram[k], cString("< ") + cStringUtil::Convert(m_hist_fmin));
-			else if (k < histogram.GetSize() - 1)
-				hdf.Write(histogram[k], cString("(") + cStringUtil::Convert(m_hist_fmin+m_hist_fstep*(k-2)) 
-																+ cString(", ") + cStringUtil::Convert(m_hist_fmin+m_hist_fstep*(k-1)) +
-																+ cString("]"));
-			else
-				hdf.Write(histogram[k], cString("> ") + cStringUtil::Convert(m_hist_fmax));
-		}
+			hdf.Write(histogram[k], GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax));
 		hdf.Endl();
 	}
 };
@@ -907,7 +946,386 @@
 
 
 /*
- @MRR March 2007
+ @MRR May 2007  [INCOMPLETE]
+ 
+ This function requires Avida be in run mode.
+ 
+ This function will print histograms of the relative fitness of
+ organisms as compared to the parent.
+
+ STATIC METHODS IN THIS CLASS ARE CALLED BY OTHER ACTIONS.
+ MOVING THIS CLASS MAY BREAK DEPENDENCIES.
+ 
+ Parameters:
+ filename	(cString)				Name of the output file
+ fit_mode (cString)				Either {Current, Actual, TestCPU}, where
+															 Current is the current value in the grid. [Default]
+															 Actual uses the current merit, but the true gestation time.
+															 that have reproduced.
+															 TestCPU determined.
+ hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: 0.50]
+ hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 0.02]
+ hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 1.50]
+ 
+ The file will be formatted:
+	<update>  [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max)
+*/
+class cActionPrintRelativeFitnessHistogram : public cAction
+{
+private:
+	double m_hist_fmin;
+	double m_hist_fstep;
+	double m_hist_fmax;
+	cString m_mode;
+	cString m_filename;
+	bool    first_run;
+	
+public:
+	cActionPrintRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
+	{ 
+		cString largs(args);
+		m_filename   = (largs.GetSize()) ? largs.PopWord()           : "rel_fitness.dat";
+		m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+		m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
+		m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.1;
+		m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2;
+	}
+	
+	static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+	
+	
+	static cString GetHistogramBinLabel(int k, double min, double step, double max)
+	{
+		int num_bins = static_cast<int>(ceil( (max - min) / step)) + 2;
+		cString retval; 
+		
+		if (k == 0)
+			retval = "Inviable";
+		else if (k == 1)
+			retval = cString("[<") + cStringUtil::Convert(min) + ", " + cStringUtil::Convert(min) + cString(")");
+		else if (k < num_bins - 1)
+			retval = cString("(") + cStringUtil::Convert(min+step*(k-2)) 
+				+ cString(", ") + cStringUtil::Convert(min+step*(k-1)) +
+				+ cString("]");
+		else
+			retval = cString("[>") + cStringUtil::Convert(max) + cString("]");
+		
+		return retval;
+	}
+	
+		static tArray<int> MakeHistogram(const tArray<cOrganism*>& orgs, const tArray<cGenotype*>& gens, 
+																		 double min, double step, double& max, const cString& mode, cWorld* world,
+																		 cAvidaContext& ctx)
+	{
+			//Set up histogram; extra columns prepended (non-viable, < m_hist_fmin) and appended ( > f_hist_fmax)
+			//If the bin size is not a multiple of the step size, the last bin is expanded to make it a multiple.
+			//All bins are [min, max)
+			tArray<int> histogram;
+			int num_bins = static_cast<int>(ceil( (max - min) / step)) + 3;
+			max  = min + (num_bins - 3) * step;
+			histogram.Resize(num_bins, 0);
+			cTestCPU* testcpu = world->GetHardwareManager().CreateTestCPU();
+			
+			
+			// We calculate the fitness based on the current merit,
+			// but with the true gestation time. Also, we set the fitness
+			// to zero if the creature is not viable.
+			tArray<cGenotype*>::const_iterator git;
+			tArray<cOrganism*>::const_iterator oit;
+			for (git = gens.begin(), oit = orgs.begin(); git != gens.end(); git++, oit++){
+				cCPUTestInfo test_info;
+				double fitness = 0.0;
+				double parent_fitness = (*git)->GetParentGenotype()->GetFitness();
+				if (mode == "TEST_CPU" || mode == "ACTUAL"){
+					testcpu->TestGenome(ctx, test_info, (*git)->GetGenome());
+				}
+				
+				if (mode == "TEST_CPU"){
+					fitness = test_info.GetColonyFitness();
+				}
+				else if (mode == "CURRENT"){
+					fitness = (*oit)->GetPhenotype().GetFitness();
+				}
+				else if (mode == "ACTUAL"){
+					fitness = (test_info.IsViable()) ? 
+					(*oit)->GetPhenotype().GetMerit().CalcFitness(test_info.GetTestPhenotype().GetGestationTime()) : 0.0;
+				}
+				else
+					world->GetDriver().RaiseFatalException(1, "MakeHistogram: Invalid fitness mode requested.");
+				
+				//Update the histogram
+				if (parent_fitness <= 0.0)
+					world->GetDriver().RaiseFatalException(1, "PrintRelativeFitness::MakeHistogram: Parent fitness is zero.");
+				
+				double rfitness = fitness/parent_fitness;
+				int update_bin = (rfitness == 0) ? 0 :       
+					static_cast<int>( ((fitness/parent_fitness) - min) / step);
+				
+				if (update_bin < 0  && fitness > 0)  //Non-zero bins
+					update_bin = 1;    //Below range
+				else if (update_bin >= num_bins - 3)
+					update_bin = num_bins - 1;  //Above range
+				else
+					update_bin = update_bin + 2;  //Within range
+				
+				histogram[update_bin]++;
+			}
+			delete testcpu;
+			return histogram;
+	}
+	
+	
+	
+	void Process(cAvidaContext& ctx)
+	{
+		//Handle possible errors
+		if (ctx.GetAnalyzeMode())
+			m_world->GetDriver().RaiseFatalException(1, "PrintRelativeFitnessHistogram requires avida to be in run mode.");
+	}
+};
+
+
+
+/*
+ @MRR May 2007 [UNTESTED]
+ This function requires CCLADE_TRACKING to be enabled and avida
+ operating non-analyze mode.
+ 
+ This function will print histograms of log10 fitness of each of the
+ tagged clades.
+ 
+ Parameters:
+ filename	(cString)				Name of the output file
+ fit_mode (cString)				Either {Current, Actual, ActualRepro, TestCPU}, where
+																Current is the current value in the grid. [Default]
+																Actual uses the current merit, but the true gestation time.
+																CurrentRepro is the same as current, but counts only those orgs
+                                              that have reproduced.
+																TestCPU determined.
+ hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: -3]
+ hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 12]
+ hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 0.5]
+
+ The file will be formatted:
+	<update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
+	where [...] will be [ <min, min, min+step, ..., max-step, max, > max], each bin (min,max]
+ */
+class cActionPrintCCladeFitnessHistogram : public cAction
+{
+	private:
+		double m_hist_fmin;
+		double m_hist_fstep;
+		double m_hist_fmax;
+		cString m_mode;
+		cString m_filename;
+		bool    first_run;
+		
+	public:
+		cActionPrintCCladeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args)
+		{
+			cString largs(args);
+		  m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_fitness.dat";
+			m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+			m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): -3.0;
+			m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.5;
+			m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 12;
+			first_run = true; 
+		}
+		
+		static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+		
+		void Process(cAvidaContext& ctx)
+		{
+			//Handle possible errors
+			if (ctx.GetAnalyzeMode())
+				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires avida to be in run mode.");
+			
+			if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
+				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram requires coalescence clade tracking to be enabled.");				
+			
+			//Verify input parameters
+			if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
+					 m_hist_fmin > m_hist_fmax)
+				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Check parameters.");
+			
+			//Gather data objects
+			cPopulation& pop        = m_world->GetPopulation();
+			const int    update     = m_world->GetStats().GetUpdate();
+			const double generation = m_world->GetStats().SumGeneration().Average();
+			map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
+			map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
+			
+			//Collect clade information
+			for (int i = 0; i < pop.GetSize(); i++){
+				if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+				cOrganism* organism = pop.GetCell(i).GetOrganism();
+				cGenotype* genotype = organism->GetGenotype();
+				int cladeID = organism->GetCCladeLabel();
+				
+				map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
+				map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
+				if (oit == org_map.end()){ //The clade is new
+					org_map[cladeID] = tArray<cOrganism*>(1, organism);
+					gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
+				}
+				else{  //The clade is known
+					oit->second.Push(organism);
+					git->second.Push(genotype);
+				}
+			}
+			
+			//Create and print the histograms; this calls a static method in another action
+			ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
+			if (!fp.is_open())
+				m_world->GetDriver().RaiseFatalException(1, "PrintCCladeFitnessHistogram: Unable to open output file.");
+			map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
+			map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
+			for(; oit != org_map.end(); oit++, git++){
+				tArray<int> hist = cActionPrintLogFitnessHistogram::MakeHistogram( (oit->second), (git->second),
+																																				m_hist_fmin, m_hist_fstep, m_hist_fmax,
+																																				m_mode, m_world, ctx );
+				if (first_run){  //Print header information if first time through
+					first_run = false;
+					fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
+					for (int k = 0; k < hist.GetSize(); k++)
+						fp << " " <<  cActionPrintLogFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
+					fp << endl << endl;
+				}
+				if (oit == org_map.begin()) //Print update and clade count if first clade
+					fp << update << " " << org_map.size();
+				fp << oit->first << " [";
+				for (int k = 0; k < hist.GetSize(); k++)
+					fp << " " << hist[k];
+				fp << " ]" << endl;
+			}
+		}
+};
+
+
+ 
+/*
+ @MRR May 2007  [INCOMPLETE]
+ This function requires CCLADE_TRACKING to be enabled and Avida
+ operating non-analyze mode.
+ 
+ This function will print histograms of the relative fitness of
+ clade members as compared to the parent.
+ 
+ Parameters:
+ filename	(cString)				Name of the output file
+ fit_mode (cString)				Either {Current, Actual, ActualRepro, TestCPU}, where
+															 Current is the current value in the grid. [Default]
+															 Actual uses the current merit, but the true gestation time.
+															 CurrentRepro is the same as current, but counts only those orgs
+															 that have reproduced.
+															 TestCPU determined.
+ hist_fmin  (double)      The minimum fitness value for the fitness histogram.  [Default: 0.50]
+ hist_fmax  (double)      The maximum fitness value for the fitness histogram.  [Default: 0.02]
+ hist_fstep (double)      The width of the individual bins in the histogram.    [Default: 1.50]
+ 
+ The file will be formatted:
+	<update> <cclade_count> <cclade_id> [...] <cclade_id> [...] ...
+	where [...] will be [ <min, min, min+step, ..., max-step, max, >max], each bin [min,max}
+ */
+class cActionPrintCCladeRelativeFitnessHistogram : public cAction
+{
+private:
+	double m_hist_fmin;
+  double m_hist_fstep;
+	double m_hist_fmax;
+	cString m_mode;
+  cString m_filename;
+	bool first_run;
+		
+public:
+	cActionPrintCCladeRelativeFitnessHistogram(cWorld* world, const cString& args) : cAction(world, args) 
+	{
+		cString largs(args);
+		m_filename   = (largs.GetSize()) ? largs.PopWord()           : "cclade_rel_fitness.dat";
+		m_mode       = (largs.GetSize()) ? largs.PopWord().ToUpper() : "CURRENT";
+		m_hist_fmin  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0;
+		m_hist_fstep = (largs.GetSize()) ? largs.PopWord().AsDouble(): 0.2;
+		m_hist_fmax  = (largs.GetSize()) ? largs.PopWord().AsDouble(): 2.0;
+		first_run = true;
+	}
+	
+	static const cString GetDescription() { return "Arguments: [filename] [fit_mode] [hist_min] [hist_step] [hist_max]"; }
+	
+	void Process(cAvidaContext& ctx)
+	{
+		//Handle possible errors
+		if (ctx.GetAnalyzeMode())
+			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires avida to be in run mode.");
+		
+		if (m_world->GetConfig().TRACK_CCLADES.Get() == 0)
+			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram requires coalescence clade tracking to be enabled.");
+		
+		//Verify input parameters
+		if ( (m_mode != "ACTUAL" && m_mode != "CURRENT" && m_mode != "TESTCPU") ||
+				 m_hist_fmin > m_hist_fmax)
+			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitness: check parameters");
+		
+		///Gather data objects
+		cPopulation& pop        = m_world->GetPopulation();
+		const int    update     = m_world->GetStats().GetUpdate();
+		const double generation = m_world->GetStats().SumGeneration().Average();
+		map< int, tArray<cOrganism*> > org_map;  //Map of ccladeID to array of organism IDs
+		map< int, tArray<cGenotype*> > gen_map;  //Map of ccladeID to array of genotype IDs 
+		
+		//Collect clade information
+		for (int i = 0; i < pop.GetSize(); i++){
+			if (pop.GetCell(i).IsOccupied() == false) continue;  //Skip unoccupied cells
+			cOrganism* organism = pop.GetCell(i).GetOrganism();
+			cGenotype* genotype = organism->GetGenotype();
+			int cladeID = organism->GetCCladeLabel();
+			
+			map< int, tArray<cOrganism*> >::iterator oit = org_map.find(cladeID);
+			map< int, tArray<cGenotype*> >::iterator git = gen_map.find(cladeID);
+			if (oit == org_map.end()){ //The clade is new
+				org_map[cladeID] = tArray<cOrganism*>(1, organism);
+				gen_map[cladeID] = tArray<cGenotype*>(1, genotype);
+			}
+			else{  //The clade is known
+				oit->second.Push(organism);
+				git->second.Push(genotype);
+			}
+		}
+		
+		//Create and print the histograms; this calls a static method in another action
+		ofstream& fp = m_world->GetDataFileManager().GetOFStream(m_filename);
+		if (!fp.is_open())
+			m_world->GetDriver().RaiseFatalException(1, "PrintCCladeRelativeFitnessHistogram: Unable to open output file.");
+		map< int, tArray<cOrganism*> >::iterator oit = org_map.begin();
+		map< int, tArray<cGenotype*> >::iterator git = gen_map.begin();
+		for(; oit != org_map.end(); oit++, git++){
+			tArray<int> hist = cActionPrintRelativeFitnessHistogram::MakeHistogram( (oit->second), (git->second),
+																																				 m_hist_fmin, m_hist_fstep, m_hist_fmax,
+																																				 m_mode, m_world, ctx );
+			if (first_run){  //Print header information if first time through
+				first_run = false;
+				fp << "# PrintCCladeFitnessHistogram" << endl << "# Bins: ";
+				for (int k = 0; k < hist.GetSize(); k++)
+					fp << " " <<  cActionPrintRelativeFitnessHistogram::GetHistogramBinLabel(k, m_hist_fmin, m_hist_fstep, m_hist_fmax);
+				fp << endl << endl;
+			}
+			if (oit == org_map.begin()) //Print update and clade count if first clade
+				fp << update << " " << org_map.size();
+			fp << oit->first << " [";
+			for (int k = 0; k < hist.GetSize(); k++)
+				fp << " " << hist[k];
+			fp << " ]" << endl;
+		}
+		
+	}
+};
+
+
+
+
+
+
+/*
+ @MRR March 2007 [UNTESTED]
  This function will take the initial genotype for each organism in the
  population/batch, align them, and calculate the per-site entropy of the
  aligned sequences.  Please note that there may be a variable number
@@ -923,17 +1341,14 @@
 		bool    m_use_gap;
 	
 	public:
-		cActionPrintGenomicSiteEntropy(cWorld* world, const cString& args) : cAction(world, args)
-		{
+		cActionPrintGenomicSiteEntropy(cWorld* world, const cString& args) : cAction(world, args){
 			cString largs = args;
 			m_filename = (largs.GetSize()) ? largs.PopWord() : "GenomicSiteEntropy.dat";
 		}
 
 		static const cString GetDescription() { return "Arguments: [filename = \"GenomicSiteEntropyData\"] [use_gap = false]";}
 		
-		void Process(cAvidaContext& ctx)
-		{
-			
+		void Process(cAvidaContext& ctx){
 			const int        update     = m_world->GetStats().GetUpdate();
 			const double     generation = m_world->GetStats().SumGeneration().Average();
 			const int        num_insts  = m_world->GetNumInstructions();
@@ -1808,6 +2223,19 @@
 };
 
 
+class cActionPrintDonationStats : public cAction
+{
+public:
+  cActionPrintDonationStats(cWorld* world, const cString& args) : cAction(world, args) { ; }
+  
+  static const cString GetDescription() { return "No Arguments"; }
+  
+  void Process(cAvidaContext& ctx)
+  {
+    m_world->GetPopulation().PrintDonationStats();
+  }
+};
+
 class cActionPrintDemeStats : public cAction
 {
 public:
@@ -1885,7 +2313,7 @@
   action_lib->Register<cActionPrintTimeData>("PrintTimeData");
   action_lib->Register<cActionPrintMutationRateData>("PrintMutationRateData");
   action_lib->Register<cActionPrintDivideMutData>("PrintDivideMutData");
-  action_lib->Register<cActionPrintDominantParaData>("PrintDominantParaData");
+  action_lib->Register<cActionPrintParasiteData>("PrintParasiteData");
   action_lib->Register<cActionPrintInstructionData>("PrintInstructionData");
   action_lib->Register<cActionPrintGenotypeMap>("PrintGenotypeMap");
   action_lib->Register<cActionPrintMarketData>("PrintMarketData");
@@ -1898,8 +2326,12 @@
   action_lib->Register<cActionPrintPhenotypeData>("PrintPhenotypeData");
   action_lib->Register<cActionPrintPhenotypeStatus>("PrintPhenotypeStatus");
   action_lib->Register<cActionPrintDemeStats>("PrintDemeStats");
+	
+	//Coalescence Clade Actions
 	action_lib->Register<cActionPrintCCladeCounts>("PrintCCladeCounts");
-
+  action_lib->Register<cActionPrintCCladeFitnessHistogram>("PrintCCladeFitnessHistogram");
+	action_lib->Register<cActionPrintCCladeRelativeFitnessHistogram>("PrintCCladeRelativeFitnessHistogram");
+	
   
   // Processed Data
   action_lib->Register<cActionPrintData>("PrintData");
@@ -1914,6 +2346,7 @@
   action_lib->Register<cActionPrintDominantParasiteGenotype>("PrintDominantParasiteGenotype");
   action_lib->Register<cActionPrintDetailedFitnessData>("PrintDetailedFitnessData");
 	action_lib->Register<cActionPrintLogFitnessHistogram>("PrintLogFitnessHistogram");
+	action_lib->Register<cActionPrintRelativeFitnessHistogram>("PrintRelativeFitnessHistogram");
   action_lib->Register<cActionPrintGeneticDistanceData>("PrintGeneticDistanceData");
   action_lib->Register<cActionPrintPopulationDistanceData>("PrintPopulationDistanceData");
   action_lib->Register<cActionPrintDebug>("PrintDebug");
@@ -1957,13 +2390,13 @@
   action_lib->Register<cActionPrintTimeData>("print_time_data");
   action_lib->Register<cActionPrintMutationRateData>("print_mutation_rate_data");
   action_lib->Register<cActionPrintDivideMutData>("print_divide_mut_data");
-  action_lib->Register<cActionPrintDominantParaData>("print_dom_parasite_data");
   action_lib->Register<cActionPrintInstructionData>("print_instruction_data");
   action_lib->Register<cActionPrintGenotypeMap>("print_genotype_map");
   action_lib->Register<cActionPrintMarketData>("print_market_data");
   
   action_lib->Register<cActionPrintPhenotypeData>("print_number_phenotypes");
   action_lib->Register<cActionPrintPhenotypeStatus>("print_phenotype_status");
+  action_lib->Register<cActionPrintDonationStats>("print_donation_stats");
   action_lib->Register<cActionPrintDemeStats>("print_deme_stats");
   
   action_lib->Register<cActionPrintData>("print_data");

Modified: branches/collect/source/cpu/cHardwareGX.cc
===================================================================
--- branches/collect/source/cpu/cHardwareGX.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/cpu/cHardwareGX.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -25,6 +25,7 @@
 #include "cHardwareGX.h"
 #include "cAvidaContext.h"
 #include "cCPUTestInfo.h"
+#include "cEnvironment.h"
 #include "functions.h"
 #include "cGenomeUtil.h"
 #include "cGenotype.h"
@@ -52,6 +53,8 @@
 
 
 tInstLib<cHardwareGX::tMethod>* cHardwareGX::s_inst_slib = cHardwareGX::initInstLib();
+const double cHardwareGX::EXECUTABLE_COPY_PROCESSIVITY = 0.97;
+const double cHardwareGX::READABLE_COPY_PROCESSIVITY = 1.0;
 
 tInstLib<cHardwareGX::tMethod>* cHardwareGX::initInstLib(void)
 {
@@ -261,6 +264,9 @@
     tInstLibEntry<tMethod>("if-bind", &cHardwareGX::Inst_IfBind),
     tInstLibEntry<tMethod>("if-bind2", &cHardwareGX::Inst_IfBind2),
     tInstLibEntry<tMethod>("num-sites", &cHardwareGX::Inst_NumSites),
+    
+    tInstLibEntry<tMethod>("p-get", &cHardwareGX::Inst_ProgramidGet),
+    tInstLibEntry<tMethod>("p-put", &cHardwareGX::Inst_ProgramidPut),
 
     // These are dummy instructions used for making mutiple programids
     // look like one genome (for purposes of passing to offspring and printing).
@@ -398,15 +404,36 @@
       const cInstruction& cur_inst = IP().GetInst();
       
       m_advance_ip = true;
+      m_reset_inputs = false;
+      m_reset_heads = false;
       SingleProcess_ExecuteInst(ctx, cur_inst);
       
       // Break out if we just divided b/c the number of programids 
       // will have changed and it won't be obvious how to continue
       if (m_just_divided) break;
+      
       if (m_advance_ip == true) { 
         IP().Advance();
       }
       
+      if (m_reset_inputs) {
+        // Re-randomize the inputs
+        organism->GetOrgInterface().ResetInputs(ctx); 
+        // And clear the current input buffer
+        m_current->m_inputBuffer.Clear();     
+      }
+     
+      if (m_reset_heads)
+      {
+        // Set the read and write heads back to ourself
+        cHeadProgramid& write = GetHead(nHardware::HEAD_WRITE);
+        cHeadProgramid& read = GetHead(nHardware::HEAD_READ);      
+        read.GetProgramid()->RemoveContactingHead(read);
+        read.Set(0, m_current->m_id);     
+        write.GetProgramid()->RemoveContactingHead(write);
+        write.Set(0, m_current->m_id);                                      
+      }
+      
       // Update this programid stat
       m_current->IncCPUCyclesUsed();  
     }
@@ -2143,7 +2170,8 @@
 {
   // Randomize the inputs so they can't save numbers
   organism->GetOrgInterface().ResetInputs(ctx);   // Now re-randomize the inputs this organism sees
-  organism->ClearInput();                         // Also clear their input buffers, or they can still claim
+  m_current->m_inputBuffer.Clear();
+  //organism->ClearInput();                         // Also clear their input buffers, or they can still claim
                                                   // rewards for numbers no longer in their environment!
 
   const int reg_used_1 = FindModifiedRegister(REG_BX);
@@ -2192,7 +2220,7 @@
 {
   bool return_value = Inst_TaskPut(ctx);          // Do a normal put
   organism->GetOrgInterface().ResetInputs(ctx);   // Now re-randomize the inputs this organism sees
-  organism->ClearInput();                         // Also clear their input buffers, or they can still claim
+  m_current->m_inputBuffer.Clear();               // Also clear their input buffers, or they can still claim
                                                   // rewards for numbers no longer in their environment!
   return return_value;
 }
@@ -2203,7 +2231,7 @@
   
   // Do the "put" component
   const int value_out = GetRegister(reg_used);
-  organism->DoOutput(ctx, value_out);  // Check for tasks completed.
+  organism->DoOutput(ctx, m_current->m_inputBuffer, m_current->m_outputBuffer, value_out);  // Check for tasks completed.
   
   // Do the "get" component
   const int value_in = organism->GetNextInput();
@@ -2221,33 +2249,26 @@
   
   // Do the "put" component
   const int value_out = GetRegister(reg_used);
-  organism->DoOutput(ctx, value_out);  // Check for tasks completed.
-
+  organism->DoOutput(ctx, m_current->m_inputBuffer, m_current->m_outputBuffer, value_out);  // Check for tasks completed.
+  
   //check cur_merit after the output
   double postOutputBonus = organism->GetPhenotype().GetCurBonus(); 
   
-  
   //push the effect of the IO on merit (+,0,-) to the active stack
-
   if (preOutputBonus > postOutputBonus){
     StackPush(-1);
-    }
+  }
   else if (preOutputBonus == postOutputBonus){
     StackPush(0);
-    }
+  }
   else if (preOutputBonus < postOutputBonus){
     StackPush(1);
-    }
+  }
   else {
     assert(0);
     //Bollocks. There was an error.
-    }
-
-
+  }
   
-
-
-  
   // Do the "get" component
   const int value_in = organism->GetNextInput();
   GetRegister(reg_used) = value_in;
@@ -3238,6 +3259,8 @@
 */
 bool cHardwareGX::Inst_NewProgramid(cAvidaContext& ctx, bool executable, bool bindable, bool readable)
 {
+  m_reset_inputs = true;
+
   // Do some maintenance on the programid where the write head was previously.
   // (1) Adjust the number of heads on it; this could make it executable!
   // (2) \todo Delete if it has no instructions or is below a certain size?
@@ -3245,8 +3268,19 @@
   m_programids[write_head_contacted]->RemoveContactingHead(GetHead(nHardware::HEAD_WRITE));
   GetHead(nHardware::HEAD_WRITE).Set(0, m_current->m_id); // Immediately set the write head back to itself
   
-  // If we've reached the programid limit, then deal with that
-  if(m_programids.size() >= MAX_PROGRAMIDS) {
+  // If we've reached a programid limit, then deal with that
+  
+  // \todo Keep track of total programid length as it is allocated
+  // rather than adding it back up every time we hit this code
+  // Technically, this currently counts incorrectly (depending on your POV) because
+  // p-copy leaves a blank instruction in the spot where it is going to write next.
+  int used_length = 0;
+  for (unsigned int i=0; i<m_programids.size(); i++) {
+    used_length += m_programids[i]->GetMemory().GetSize();
+  }
+
+  if ( (m_programids.size() >= MAX_PROGRAMIDS) || (used_length > MAX_PROGRAMID_TOTAL_LENGTH) ) {
+  
     //Decide on a programid to destroy, currently highest number of cpu cycles executed
     //\todo more methods of choosing..
   
@@ -3311,6 +3345,8 @@
 */
 bool cHardwareGX::Inst_Bind(cAvidaContext& ctx) 
 {
+  m_reset_inputs = true;
+
   // Get the label that we're trying to match.
   // Do this first to advance IP past it.
   ReadLabel();
@@ -3359,6 +3395,8 @@
 */
 bool cHardwareGX::Inst_Bind2(cAvidaContext& ctx)
 {
+  m_reset_inputs = true;
+
   // Get the label we're searching for.
   ReadLabel();
   
@@ -3455,6 +3493,8 @@
 */
 bool cHardwareGX::Inst_ProgramidCopy(cAvidaContext& ctx)
 {
+  m_reset_inputs = true;
+
   cHeadProgramid& write = GetHead(nHardware::HEAD_WRITE);
   cHeadProgramid& read = GetHead(nHardware::HEAD_READ);
   read.Adjust(); // Strange things can happen (like we're reading from a programid that was being written).
@@ -3482,7 +3522,6 @@
   }
   
   // Allocate space for one additional instruction if the write head is at the end
-  // Otherwise the write head will improperly 
   if(write.GetMemory().GetSize() == write.GetPosition() + 1) {
     write.GetMemory().Resize(write.GetMemory().GetSize() + 1);
   }
@@ -3503,6 +3542,20 @@
     write++;
   }
   
+  // "Jump" Mutations
+  
+  if ( ctx.GetRandom().P(0.0000) )
+  {
+    // Set the read head to a random position
+    int new_read_pos = ctx.GetRandom().GetInt(read.GetMemory().GetSize());
+    read.Set(new_read_pos, read.GetMemSpace());
+  
+    // Reset any start/end labels that we might have been copying.
+    m_current->m_copying_site = false;
+    m_current->m_copying_label.Clear();
+  }
+  
+  
   // Peek at the next inst to see if it is a NOP
   // If it isn't, then we can compare the label and possibly fall off  
   if(m_current->m_copying_site) {
@@ -3528,7 +3581,12 @@
       return true;
     }
   }
-   
+  
+  // Check our processivity - read and write heads fall off with some probability
+  // What kind of programid are we writing?
+  double terminate_p =  1 - ((m_programids[read.GetMemSpace()]->GetReadable()) ? READABLE_COPY_PROCESSIVITY : EXECUTABLE_COPY_PROCESSIVITY);
+  if ( ctx.GetRandom().P(terminate_p) ) m_reset_heads = true;
+  
   return true;
 }
 
@@ -3539,6 +3597,9 @@
 */
 bool cHardwareGX::Inst_ProgramidDivide(cAvidaContext& ctx)
 {
+  // Even if unsuccessful, we reset task inputs
+  m_reset_inputs = true;
+
   //This stuff is usually set by Divide_CheckViable, leaving it zero causes problems
   cPhenotype& phenotype = organism->GetPhenotype();
   organism->GetPhenotype().SetLinesExecuted(1);
@@ -3619,7 +3680,7 @@
   bool daughter_has_executable = false;
   bool daughter_has_bindable = false;
   
-  // Calculate these conditions.
+  // Calculate these conditions for offspring.
   for(programid_list::iterator i=offspring.begin(); i!=offspring.end(); ++i) {
     ++num_daughter_programids;
     if((*i)->GetReadable()) {
@@ -3630,6 +3691,22 @@
   }
   assert(daughter_has_bindable); // We know this should be there...
   
+  int num_mother_programids = 0;
+  int mother_genome_length = 0;
+  bool mother_has_executable = false;
+  bool mother_has_bindable = false;
+  
+  // Calculate these conditions for parent.
+  for(programid_list::iterator i=parent.begin(); i!=parent.end(); ++i) {
+    ++num_mother_programids;
+    if((*i)->GetReadable()) {
+      mother_genome_length += (*i)->GetMemory().GetSize();
+    }
+    mother_has_executable = mother_has_executable || (*i)->GetExecutable();
+    mother_has_bindable = mother_has_bindable || (*i)->GetBindable();
+  }
+  assert(mother_has_bindable); // We know this should be there...
+  
   // And check them.  Note that if this check fails, we have *not* modified the
   // state of the calling programid.
   if((num_daughter_programids == 0) 
@@ -3638,6 +3715,12 @@
     // \todo link to original genome length
     return false;
   }
+  if((num_mother_programids == 0) 
+     || (!mother_has_executable) 
+     || (mother_genome_length < 50)) { 
+    // \todo link to original genome length
+    return false;
+  }
   
   // Ok, we're good to go.  We have to create the offspring's genome and delete the
   // offspring's programids from m_programids.
@@ -3672,7 +3755,20 @@
   return true;
 }
 
+bool cHardwareGX::Inst_ProgramidGet(cAvidaContext& ctx)
+{
+  m_reset_heads = true;
+  return Inst_TaskGet(ctx);
+}
 
+bool cHardwareGX::Inst_ProgramidPut(cAvidaContext& ctx)
+{
+  m_reset_inputs = true;
+  m_reset_heads = true;
+  return Inst_TaskPut(ctx);
+}
+
+
 //! Adds a new programid to the current cHardwareGX.
 void cHardwareGX::AddProgramid(programid_ptr programid) 
 { 
@@ -3742,6 +3838,8 @@
 , m_cpu_cycles_used(0)
 , m_gx_hardware(hardware)
 , m_unique_id(hardware->m_last_unique_id_assigned++)
+, m_inputBuffer(m_gx_hardware->m_world->GetEnvironment().GetInputSize())
+, m_outputBuffer(m_gx_hardware->m_world->GetEnvironment().GetOutputSize())
 {
   assert(m_gx_hardware!=0);
   for(int i=0; i<NUM_HEADS; ++i) {

Modified: branches/collect/source/cpu/cHardwareGX.h
===================================================================
--- branches/collect/source/cpu/cHardwareGX.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/cpu/cHardwareGX.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -60,15 +60,21 @@
 #include "tInstLib.h"
 #include "defs.h"
 #include "nHardware.h"
+#include "tBuffer.h"
 
-
 class cInjectGenotype;
 class cInstLib;
 class cInstSet;
 class cMutation;
 class cOrganism;
 
+/* The big TODO list
 
+1. Create a cGXOrganism class and remove all of the psudo-genome nonsense.
+   This will fix the artifact that programid ages get reset in the daughter.
+
+*/
+
 /*! Each organism may have a cHardwareGX structure that keeps track of the 
 * current status of simulated hardware.  This particular CPU architecture is
 * designed to explore the evolution of gene expression and also the effect
@@ -86,11 +92,14 @@
 
   //!< \todo JEB Make these config options
   static const unsigned int MAX_PROGRAMIDS = 32; //!< Number of cProgramids that an organism can allocate.
+  static const int MAX_PROGRAMID_TOTAL_LENGTH = 1000; // New programids cannot be created if above this cumulative length.
   static const int PROGRAMID_REPLACEMENT_METHOD = 0;
    //!< Controls what happens when we try to allocate a new cProgramid, but are up against the limit
   // 0 = Fail if no programids available
   // 1 = Replace the programid that has completed the most instructions
   static const int MAX_PROGRAMID_AGE = 2000; // Number of inst a cProgramid executes before ceasing to exist
+  static const double EXECUTABLE_COPY_PROCESSIVITY;
+  static const double READABLE_COPY_PROCESSIVITY;
 
   unsigned int m_last_unique_id_assigned; // Counter so programids can be assigned unique IDs for tracking
 
@@ -218,6 +227,9 @@
     cCPUStack m_stack; //!< This cProgramid's stack (no global stack).
     cHeadProgramid m_heads[NUM_HEADS]; //!< This cProgramid's heads.
     int m_regs[NUM_REGISTERS]; //!< This cProgramid's registers.
+    
+    tBuffer<int> m_inputBuffer; //!< This programid's input buffer.
+    tBuffer<int> m_outputBuffer; //!< This programid's output buffer.
   };
   
 protected:
@@ -235,6 +247,8 @@
   bool m_advance_ip;         // Should the IP advance after this instruction?
   bool m_executedmatchstrings;	// Have we already executed the match strings instruction?
   bool m_just_divided; // Did we just divide (in which case end execution of programids until next cycle).
+  bool m_reset_inputs; // Flag to make it easy for instructions to reset all inputs (force task modularity).
+  bool m_reset_heads;  // Flas to make it easy for instructions to reset heads back (force task modularity).
 
   // Instruction costs...
 #if INSTRUCTION_COSTS
@@ -553,6 +567,8 @@
   bool Inst_NumSites(cAvidaContext& ctx); //!< Count the number of corresponding binding sites
   bool Inst_ProgramidCopy(cAvidaContext& ctx); //!< Like h-copy, but fails if read/write heads not on other programids and will not write over
   bool Inst_ProgramidDivide(cAvidaContext& ctx); //!< Like h-divide, 
+  bool Inst_ProgramidGet(cAvidaContext& ctx); //!< Like get with head resets.
+  bool Inst_ProgramidPut(cAvidaContext& ctx); //!< Like put with head and input resets.
   
   //!< Add/Remove a new programid to/from the list and give it the proper index within the list so we keep track of memory spaces...
   void AddProgramid(programid_ptr programid);

Modified: branches/collect/source/cpu/cHardwareTransSMT.cc
===================================================================
--- branches/collect/source/cpu/cHardwareTransSMT.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/cpu/cHardwareTransSMT.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -181,6 +181,7 @@
   }
 #endif	
   
+  organism->ClearParasites();
   organism->NetReset();
 }
 
@@ -660,7 +661,6 @@
     return false; // (inject fails)
   }
   if (end_pos < MIN_INJECT_SIZE) {
-    m_mem_array[mem_space_used] = cGenome("a"); 
     organism->Fault(FAULT_LOC_INJECT, FAULT_TYPE_ERROR, "inject: new size too small");
     return false; // (inject fails)
   }  
@@ -676,8 +676,10 @@
   // reset the memory space that was injected
   m_mem_array[mem_space_used] = cGenome("a"); 
 	
-  for (int x = 0; x < nHardware::NUM_HEADS; x++) GetHead(x).Reset(this, IP().GetMemSpace());
-  for (int x = 0; x < NUM_LOCAL_STACKS; x++) Stack(x).Clear();
+  if (m_world->GetConfig().INJECT_METHOD.Get() == INJECT_METHOD_SPLIT) {
+    for (int x = 0; x < nHardware::NUM_HEADS; x++) GetHead(x).Reset(this, IP().GetMemSpace());
+    for (int x = 0; x < NUM_LOCAL_STACKS; x++) Stack(x).Clear();
+  }
   
   AdvanceIP() = false;
   
@@ -982,35 +984,27 @@
   //reset the memory of the memory space that has been divided off
   m_mem_array[mem_space_used] = cGenome("a"); 
 	
-  // 3 Division Methods:
-  // 1) DIVIDE_METHOD_OFFSPRING - Create a child, leave parent state untouched.
-  // 2) DIVIDE_METHOD_SPLIT - Create a child, completely reset state of parent.
-  // 3) DIVIDE_METHOD_BIRTH - Create a child, reset state of parent's current thread.
-  const int div_method = m_world->GetConfig().DIVIDE_METHOD.Get();
-  if (parent_alive && !(div_method == DIVIDE_METHOD_OFFSPRING))
-	{
-		
-		if (div_method == DIVIDE_METHOD_SPLIT)
-		{
-			//this will wipe out all parasites on a divide.
-			Reset();
-			
+  // Division Methods:
+  // 0 - DIVIDE_METHOD_OFFSPRING - Create a child, leave parent state untouched.
+  // 1 - DIVIDE_METHOD_SPLIT - Create a child, completely reset state of parent.
+  // 2 - DIVIDE_METHOD_BIRTH - Create a child, reset state of parent's current thread.
+  
+  if (parent_alive) { // If the parent is no longer alive, all of this is moot
+    switch (m_world->GetConfig().DIVIDE_METHOD.Get()) {
+      case DIVIDE_METHOD_SPLIT:
+        Reset();  // This will wipe out all parasites on a divide.
+        break;
+      
+      case DIVIDE_METHOD_BIRTH:
+        // Reset only the calling thread's state
+        for(int x = 0; x < nHardware::NUM_HEADS; x++) GetHead(x).Reset(this, 0);
+        for(int x = 0; x < NUM_LOCAL_STACKS; x++) Stack(x).Clear();
+        break;
+      
+      case DIVIDE_METHOD_OFFSPRING:
+      default:
+        break;
 		}
-		else if (div_method == DIVIDE_METHOD_BIRTH)
-		{
-			if((!organism->GetPhenotype().IsModified() && GetNumThreads() > 1) || GetNumThreads() > 2) {
-	      ThreadKill(m_cur_thread);
-	    } else {
-        //this will reset the current thread's heads and stacks.  It will 
-        //not touch any other threads or memory spaces (ie: parasites)
-	      for(int x = 0; x < nHardware::NUM_HEADS; x++) {
-					GetHead(x).Reset(this, 0);
-				}
-	      for(int x = 0; x < NUM_LOCAL_STACKS; x++) {
-					Stack(x).Clear();
-				}
-	    }
-		}
 		AdvanceIP() = false;
 	}
 	

Modified: branches/collect/source/defs.h
===================================================================
--- branches/collect/source/defs.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/defs.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -76,13 +76,13 @@
 const int MARKET_SIZE = 10000;
 
 
-enum tFileType
+enum eFileType
 {
   FILE_TYPE_TEXT,
   FILE_TYPE_HTML
 };
 
-enum tHARDWARE_TYPE
+enum eHARDWARE_TYPE
 {
 	HARDWARE_TYPE_CPU_ORIGINAL = 0,
 	HARDWARE_TYPE_CPU_SMT,
@@ -91,14 +91,14 @@
 	HARDWARE_TYPE_CPU_GX
 };
 
-enum tTIMESLICE
+enum eTIMESLICE
 {
   SLICE_CONSTANT = 0,
   SLICE_PROB_MERIT,
   SLICE_INTEGRATED_MERIT
 };
 
-enum tPOSITION_CHILD
+enum ePOSITION_CHILD
 {
   POSITION_CHILD_RANDOM = 0,
   POSITION_CHILD_AGE,
@@ -114,34 +114,40 @@
 };
 const int NUM_LOCAL_POSITION_CHILD = POSITION_CHILD_FULL_SOUP_RANDOM;
 
-enum tDEATH_METHOD
+enum eDEATH_METHOD
 {
   DEATH_METHOD_OFF = 0,
   DEATH_METHOD_CONST,
   DEATH_METHOD_MULTIPLE
 };
 
-enum tALLOC_METHOD
+enum eALLOC_METHOD
 {
   ALLOC_METHOD_DEFAULT = 0,
   ALLOC_METHOD_NECRO,
   ALLOC_METHOD_RANDOM
 };
 
-enum tDIVIDE_METHOD
+enum eDIVIDE_METHOD
 {
   DIVIDE_METHOD_OFFSPRING = 0,
   DIVIDE_METHOD_SPLIT,
   DIVIDE_METHOD_BIRTH
 };
 
-enum tGENERATION_INCREMENT
+enum eINJECT_METHOD
 {
+  INJECT_METHOD_OFFSPRING = 0,
+  INJECT_METHOD_SPLIT
+};
+
+enum eGENERATION_INCREMENT
+{
   GENERATION_INC_OFFSPRING = 0,
   GENERATION_INC_BOTH
 };
 
-enum tBASE_MERIT
+enum eBASE_MERIT
 {
   BASE_MERIT_CONST = 0,
   BASE_MERIT_COPIED_SIZE,

Modified: branches/collect/source/drivers/cDefaultRunDriver.cc
===================================================================
--- branches/collect/source/drivers/cDefaultRunDriver.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/drivers/cDefaultRunDriver.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -120,7 +120,9 @@
       cout << "UD: " << setw(6) << stats.GetUpdate() << "  "
         << "Gen: " << setw(9) << setprecision(7) << stats.SumGeneration().Average() << "  "
         << "Fit: " << setw(9) << setprecision(7) << stats.GetAveFitness() << "  "
-        << "Size: " << population.GetNumOrganisms()
+        << "Orgs: " << setw(6) << population.GetNumOrganisms() << "  "
+        << "Thrd: " << setw(6) << stats.GetNumThreads() << "  "
+        << "Para: " << stats.GetNumParasites()
         << endl;
     }
     

Modified: branches/collect/source/main/avida.cc
===================================================================
--- branches/collect/source/main/avida.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/avida.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -47,7 +47,11 @@
 #endif
   version += " (";
   version += VERSION_TAG;
-  version += ")";
+  version += ") ";
+  
+#ifdef COMPILE_ARCH
+  version += COMPILE_ARCH " ";
+#endif
 
 #ifdef DEBUG
   version += " debug";
@@ -80,12 +84,12 @@
 void printVersionBanner()
 {
   // output copyright message
+
+  cout << getAvidaVersion() << endl << endl;
   cout << "----------------------------------------------------------------------" << endl;
-  cout << getAvidaVersion() << endl << endl;
-
   cout << "by Charles Ofria" << endl << endl;
 
-  cout << "Lead Developers: David Bryson (Avida) and Kaben Nanlohy (Avida-ED)" << endl << endl;
+  cout << "Lead Developers: David M. Bryson (Avida) and Kaben Nanlohy (Avida-ED)" << endl << endl;
 
   cout << "Active contributors include:  Christoph Adami, Brian Baer, Jeffrey Barrick," << endl
        << "Benjamin Beckmann, Jeffrey Clune, Art Covert, Santiago Elena, Sherri Goings," << endl

Modified: branches/collect/source/main/cAvidaConfig.h
===================================================================
--- branches/collect/source/main/cAvidaConfig.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cAvidaConfig.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -228,6 +228,7 @@
   CONFIG_ADD_VAR(AGE_DEVIATION, int, 0, "Creates a distribution around AGE_LIMIT");
   CONFIG_ADD_VAR(ALLOC_METHOD, int, 0, "(Orignal CPU Only)\n0 = Allocated space is set to default instruction.\n1 = Set to section of dead genome (Necrophilia)\n2 = Allocated space is set to random instruction.");
   CONFIG_ADD_VAR(DIVIDE_METHOD, int, 1, "0 = Divide leaves state of mother untouched.\n1 = Divide resets state of mother\n    (after the divide, we have 2 children)\n2 = Divide resets state of current thread only\n    (does not touch possible parasite threads)");
+  CONFIG_ADD_VAR(INJECT_METHOD, int, 0, "0 = Leaves the parasite thread state untouched.\n1 = Resets the calling thread state on inject");
   CONFIG_ADD_VAR(GENERATION_INC_METHOD, int, 1, "0 = Only the generation of the child is\n    increased on divide.\n1 = Both the generation of the mother and child are\n    increased on divide (good with DIVIDE_METHOD 1).");
 
   CONFIG_ADD_GROUP(RECOMBINATION_GROUP, "Sexual Recombination and Modularity");
@@ -277,8 +278,8 @@
   CONFIG_ADD_VAR(STERILIZE_NEUTRAL, double, 0.0, "");
   CONFIG_ADD_VAR(STERILIZE_BENEFICIAL, double, 0.0, "");
   CONFIG_ADD_VAR(FAIL_IMPLICIT, int, 0, "Should copies that failed *not* due to mutations\nbe eliminated?");
-  CONFIG_ADD_VAR(NEUTRAL_MAX,double, 0.0, "The percent benifical change from parent fitness to be considered neutral.");
-  CONFIG_ADD_VAR(NEUTRAL_MIN,double, 0.0, "The percent deleterious change from parent fitness to be considered neutral.");
+  CONFIG_ADD_VAR(NEUTRAL_MAX,double, 0.0, "The percent benifical change from parent fitness\nto be considered neutral.");
+  CONFIG_ADD_VAR(NEUTRAL_MIN,double, 0.0, "The percent deleterious change from parent fitness\nto be considered neutral.");
   
   CONFIG_ADD_GROUP(TIME_GROUP, "Time Slicing");
   CONFIG_ADD_VAR(AVE_TIME_SLICE, int, 30, "Ave number of insts per org per update");
@@ -287,11 +288,11 @@
   CONFIG_ADD_VAR(BASE_CONST_MERIT, int, 100, "Base merit when BASE_MERIT_METHOD set to 0");
   CONFIG_ADD_VAR(DEFAULT_BONUS, double, 1.0, "Initial bonus before any tasks");
   CONFIG_ADD_VAR(MERIT_DEFAULT_BONUS, int, 0, "Scale the merit of an offspring by the default bonus\nrather than the accumulated bonus of the parent?"); 
-  CONFIG_ADD_VAR(MERIT_BONUS_INST, int, 0, "in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)"); 
-  CONFIG_ADD_VAR(MERIT_BONUS_EFFECT, int, 0, "in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)"); 
-  CONFIG_ADD_VAR(FITNESS_VALLEY, int, 0, "in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)"); 
-  CONFIG_ADD_VAR(FITNESS_VALLEY_START, int, 0, "if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)"); 
-  CONFIG_ADD_VAR(FITNESS_VALLEY_STOP, int, 0, "if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)"); 
+  CONFIG_ADD_VAR(MERIT_BONUS_INST, int, 0, "in BASE_MERIT_METHOD 6, this sets which instruction counts\n(-1 = none, 0 = First in INST_SET.)"); 
+  CONFIG_ADD_VAR(MERIT_BONUS_EFFECT, int, 0, "in BASE_MERIT_METHOD 6, this sets how much merit is earned\nper instruction (-1 = penalty, 0 = no effect.)"); 
+  CONFIG_ADD_VAR(FITNESS_VALLEY, int, 0, "in BASE_MERIT_METHOD 6, this creates valleys from\nFITNESS_VALLEY_START to FITNESS_VALLEY_STOP\n(0 = off, 1 = on)"); 
+  CONFIG_ADD_VAR(FITNESS_VALLEY_START, int, 0, "if FITNESS_VALLEY = 1, orgs with num_key_instructions\nfrom FITNESS_VALLEY_START to FITNESS_VALLEY_STOP\nget fitness 1 (lowest)"); 
+  CONFIG_ADD_VAR(FITNESS_VALLEY_STOP, int, 0, "if FITNESS_VALLEY = 1, orgs with num_key_instructions\nfrom FITNESS_VALLEY_START to FITNESS_VALLEY_STOP\nget fitness 1 (lowest)"); 
   CONFIG_ADD_VAR(MAX_CPU_THREADS, int, 1, "Number of Threads a CPU can spawn");
   CONFIG_ADD_VAR(THREAD_SLICING_METHOD, int, 0, "Formula for and organism's thread slicing\n  (num_threads-1) * THREAD_SLICING_METHOD + 1\n0 = One thread executed per time slice.\n1 = All threads executed each time slice.\n");
   CONFIG_ADD_VAR(MAX_LABEL_EXE_SIZE, int, 1, "Max nops marked as executed when labels are used");
@@ -299,7 +300,7 @@
   CONFIG_ADD_VAR(MERIT_RECEIVED, double, 0.0, "Multiplier of merit given with 'donate' command"); 
   CONFIG_ADD_VAR(MAX_DONATE_KIN_DIST, int, -1, "Limit on distance of relation for donate; -1=no max");
   CONFIG_ADD_VAR(MAX_DONATE_EDIT_DIST, int, -1, "Limit on genetic (edit) distance for donate; -1=no max");
-  CONFIG_ADD_VAR(MIN_GB_DONATE_THRESHOLD, int, -1, "threshold green beard donates only to orgs above this donation attempt threshold; -1=no thresh");
+  CONFIG_ADD_VAR(MIN_GB_DONATE_THRESHOLD, int, -1, "threshold green beard donates only to orgs above this\ndonation attempt threshold; -1=no thresh");
   CONFIG_ADD_VAR(DONATE_THRESH_QUANTA, int, 10, "The size of steps between quanta donate thresholds");
   CONFIG_ADD_VAR(MAX_DONATES, int, 1000000, "Limit on number of donates organisms are allowed.");
   

Modified: branches/collect/source/main/cOrganism.cc
===================================================================
--- branches/collect/source/main/cOrganism.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cOrganism.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -180,18 +180,35 @@
 
 void cOrganism::DoInput(const int value)
 {
-  m_input_buf.Add(value);
-  m_phenotype.TestInput(m_input_buf, m_output_buf);
+  DoInput(m_input_buf, m_output_buf, value);
 }
 
+
+void cOrganism::DoInput(tBuffer<int>& input_buffer, tBuffer<int>& output_buffer, const int value)
+{
+  input_buffer.Add(value);
+  m_phenotype.TestInput(input_buffer, output_buffer);
+}
+
+
+
 void cOrganism::DoOutput(cAvidaContext& ctx, const int value, const bool on_divide)
 {
-  assert(m_interface);
+  DoOutput(ctx, m_input_buf, m_output_buf, value, on_divide);
+}
+
+
+void cOrganism::DoOutput(cAvidaContext& ctx, 
+                         tBuffer<int>& input_buffer, 
+                         tBuffer<int>& output_buffer,
+                         const int value,
+                         const bool on_divide)
+{
   const tArray<double> & resource_count = m_interface->GetResources();
-
+  
   tList<tBuffer<int> > other_input_list;
   tList<tBuffer<int> > other_output_list;
-
+  
   // If tasks require us to consider neighbor inputs, collect them...
   if (m_world->GetEnvironment().UseNeighborInput()) {
     const int num_neighbors = m_interface->GetNumNeighbors();
@@ -199,11 +216,11 @@
       m_interface->Rotate();
       cOrganism * cur_neighbor = m_interface->GetNeighbor();
       if (cur_neighbor == NULL) continue;
-
+      
       other_input_list.Push( &(cur_neighbor->m_input_buf) );
     }
   }
-
+  
   // If tasks require us to consider neighbor outputs, collect them...
   if (m_world->GetEnvironment().UseNeighborOutput()) {
     const int num_neighbors = m_interface->GetNumNeighbors();
@@ -211,38 +228,39 @@
       m_interface->Rotate();
       cOrganism * cur_neighbor = m_interface->GetNeighbor();
       if (cur_neighbor == NULL) continue;
-
+      
       other_output_list.Push( &(cur_neighbor->m_output_buf) );
     }
   }
   
   bool net_valid = false;
   if (m_net) net_valid = NetValidate(ctx, value);
-
+  
   // Do the testing of tasks performed...
-
+  
   // if on IO add value to m_output_buf, if on divide don't need to
-  if (!on_divide) m_output_buf.Add(value);
+  if(!on_divide) output_buffer.Add(value);
   
   tArray<double> res_change(resource_count.GetSize());
   tArray<int> insts_triggered;
   bool clear_input = false;
-
+  
   tBuffer<int>* received_messages_point = &m_received_messages;
   if (!m_world->GetConfig().SAVE_RECEIVED.Get()) received_messages_point = NULL;
   
-  cTaskContext taskctx(m_interface, m_input_buf, m_output_buf, other_input_list, other_output_list, net_valid, 0, on_divide, received_messages_point);
+  cTaskContext taskctx(m_interface, input_buffer, output_buffer, other_input_list, 
+                       other_output_list, net_valid, 0, on_divide, received_messages_point);
 
   m_phenotype.TestOutput(ctx, taskctx, resource_count, m_rbins, res_change, insts_triggered);
 
   m_interface->UpdateResources(res_change);
-
+  
   for (int i = 0; i < insts_triggered.GetSize(); i++) {
     const int cur_inst = insts_triggered[i];
     m_hardware->ProcessBonusInst(ctx, cInstruction(cur_inst));
   }
   
-  if (clear_input) m_input_buf.Clear();
+  if(clear_input) input_buffer.Clear();  
 }
 
 
@@ -433,7 +451,13 @@
   return m_hardware->InjectHost(label, injected_code);
 }
 
+void cOrganism::ClearParasites()
+{
+  for (int i = 0; i < m_parasites.GetSize(); i++) m_parasites[i]->RemoveParasite();
+  m_parasites.Resize(0);
+}
 
+
 double cOrganism::CalcMeritRatio()
 {
   const double age = (double) m_phenotype.GetAge();

Modified: branches/collect/source/main/cOrganism.h
===================================================================
--- branches/collect/source/main/cOrganism.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cOrganism.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -208,7 +208,10 @@
 
   // --------  Input and Output Methods  --------
   void DoInput(const int value);
+  void DoInput(tBuffer<int>& input_buffer, tBuffer<int>& output_buffer, const int value);
   void DoOutput(cAvidaContext& ctx, const int value, const bool on_divide = false);
+  void DoOutput(cAvidaContext& ctx, tBuffer<int>& input_buffer, 
+                tBuffer<int>& output_buffer, const int value, const bool on_divide=false);
   void ClearInput() { m_input_buf.Clear(); }
   void AddOutput(int val) { m_output_buf.Add(val); }
 
@@ -233,8 +236,8 @@
   bool InjectHost(const cCodeLabel& in_label, const cGenome& genome);
   void AddParasite(cInjectGenotype* cur) { m_parasites.Push(cur); }
   cInjectGenotype& GetParasite(int x) { return *m_parasites[x]; }
-  int GetNumParasites() { return m_parasites.GetSize(); }
-  void ClearParasites() { m_parasites.Resize(0); }
+  int GetNumParasites() const { return m_parasites.GetSize(); }
+  void ClearParasites();
 		      
 
   // --------  Support Methods  --------

Modified: branches/collect/source/main/cPhenotype.cc
===================================================================
--- branches/collect/source/main/cPhenotype.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cPhenotype.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -191,7 +191,6 @@
 
   // Setup flags...
   is_injected   = false;
-  is_parasite   = false;
   is_donor_cur  = false;
   is_donor_last = parent_phenotype.is_donor_last;
   is_donor_rand = false;
@@ -321,7 +320,6 @@
 
   // Setup flags...
   is_injected   = true;
-  is_parasite   = false;
   is_donor_last = false;
   is_donor_cur  = false;
   is_donor_rand = false;
@@ -457,7 +455,6 @@
 
   // Leave flags alone...
   (void) is_injected;
-  (void) is_parasite;
   is_donor_last = is_donor_cur;
   is_donor_cur = false;
   is_donor_rand_last = is_donor_rand;
@@ -603,7 +600,6 @@
 
   // Leave flags alone...
   (void) is_injected;
-  (void) is_parasite;
   is_donor_last = is_donor_cur;
   is_donor_cur = false;
   is_donor_rand_last = is_donor_rand;
@@ -734,7 +730,6 @@
 
   // Setup flags...
   is_injected   = false;
-  is_parasite   = false;
   is_donor_last = clone_phenotype.is_donor_last;
   is_donor_cur  = clone_phenotype.is_donor_cur;
   is_receiver = false;
@@ -952,7 +947,6 @@
   fp << life_fitness        << " ";
 
   fp << is_injected         << " ";
-  fp << is_parasite         << " ";
   fp << is_donor_last       << " ";
   fp << is_donor_cur        << " ";
   fp << is_donor_rand_last       << " ";
@@ -1080,7 +1074,6 @@
   fp >> life_fitness;
 
   fp >> is_injected;
-  fp >> is_parasite;
   fp >> is_donor_last;
   fp >> is_donor_cur;
   fp >> is_donor_rand_last;

Modified: branches/collect/source/main/cPhenotype.h
===================================================================
--- branches/collect/source/main/cPhenotype.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cPhenotype.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -160,7 +160,6 @@
   bool to_die;		 // Has organism has triggered something fatal?
   bool to_delete;        // Should this organism be deleted when finished?
   bool is_injected;      // Was this organism injected into the population?
-  bool is_parasite;      // Has this organism ever executed outside code?
   bool is_donor_cur;     // Has this organism attempted to donate merit?  
   bool is_donor_last;    // Did this organism's parent attempt to donate merit? 
   bool is_donor_rand;    // Has this organism attempted a random donation?
@@ -335,7 +334,6 @@
 
 
   bool IsInjected() const { assert(initialized == true); return is_injected; }
-  bool IsParasite() const { assert(initialized == true); return is_parasite; }
   bool IsDonorCur() const { assert(initialized == true); return is_donor_cur; }
   bool IsDonorLast() const { assert(initialized == true); return is_donor_last; }
   bool IsDonorRand() const { assert(initialized == true); return is_donor_rand; }
@@ -446,7 +444,6 @@
   void IncDonates()   { assert(initialized == true); cur_num_donates++; }
   void IncSenseCount(const int i) { assert(initialized == true); cur_sense_count[i]++; }  
   bool& IsInjected() { assert(initialized == true); return is_injected; }
-  bool& IsParasite() { assert(initialized == true); return is_parasite; }
   bool& IsModifier() { assert(initialized == true); return is_modifier; }
   bool& IsModified() { assert(initialized == true); return is_modified; }
   bool& IsFertile()  { assert(initialized == true); return is_fertile; }

Modified: branches/collect/source/main/cPopulation.cc
===================================================================
--- branches/collect/source/main/cPopulation.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cPopulation.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -480,9 +480,7 @@
   }
   genotype->RemoveOrganism();
   
-  for (int i = 0; i < organism->GetNumParasites(); i++) {
-    organism->GetParasite(i).RemoveParasite();
-  }
+  organism->ClearParasites();
   
   // And clear it!
   in_cell.RemoveOrganism();
@@ -1614,6 +1612,7 @@
   int num_no_birth = 0;
   int num_multi_thread = 0;
   int num_single_thread = 0;
+  int num_threads = 0;
   int num_modified = 0;
   
   // Maximums...
@@ -1717,18 +1716,17 @@
     }
     
     // Increment the counts for all qualities the organism has...
+    num_parasites += organism->GetNumParasites();
     if (phenotype.ParentTrue()) num_breed_true++;
-    if (phenotype.IsParasite()) num_parasites++;
-    if( phenotype.GetNumDivides() == 0 ) num_no_birth++;
-    if(phenotype.IsMultiThread()) num_multi_thread++;
+    if (phenotype.GetNumDivides() == 0) num_no_birth++;
+    if (phenotype.IsMultiThread()) num_multi_thread++;
     else num_single_thread++;
+    
     if(phenotype.IsModified()) num_modified++;    
     
-    // Hardware specific collections...
-    if (organism->GetHardware().GetType() == HARDWARE_TYPE_CPU_ORIGINAL) {
-      cHardwareBase & hardware = organism->GetHardware();
-      stats.SumMemSize().Add(hardware.GetMemory().GetSize());
-    }
+    cHardwareBase& hardware = organism->GetHardware();
+    stats.SumMemSize().Add(hardware.GetMemory().GetSize());
+    num_threads += hardware.GetNumThreads();
     
     // Increment the age of this organism.
     organism->GetPhenotype().IncAge();
@@ -1739,6 +1737,7 @@
   stats.SetNumParasites(num_parasites);
   stats.SetNumSingleThreadCreatures(num_single_thread);
   stats.SetNumMultiThreadCreatures(num_multi_thread);
+  stats.SetNumThreads(num_threads);
   stats.SetNumModified(num_modified);
   
   stats.SetMaxMerit(max_merit.GetDouble());

Modified: branches/collect/source/main/cStats.cc
===================================================================
--- branches/collect/source/main/cStats.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cStats.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -93,6 +93,10 @@
   , num_executed(0)
   , num_parasites(0)
   , num_no_birth_creatures(0)
+  , num_single_thread_creatures(0)
+  , num_multi_thread_creatures(0)
+  , m_num_threads(0)
+  , num_modified(0)
   , num_genotypes_last(1)
   , tot_organisms(0)
   , tot_genotypes(0)
@@ -651,7 +655,7 @@
   df.Endl();
 }
 
-void cStats::PrintDominantParaData(const cString& filename)
+void cStats::PrintParasiteData(const cString& filename)
 {
   cDataFile& df = m_world->GetDataFile(filename);
 
@@ -659,6 +663,7 @@
   df.WriteTimeStamp();
 
   df.Write(m_update, "Update");
+  df.Write(num_parasites, "Number of Extant Parasites");
   df.Write(dom_inj_size, "Size of Dominant Parasite Genotype");
   df.Write(dom_inj_abundance, "Abundance of Dominant Parasite Genotype");
   df.Write(dom_inj_genotype_id, "Genotype ID of Dominant Parasite Genotype");
@@ -713,7 +718,6 @@
   df.Write(num_deaths,             "number of deaths in this update");
   df.Write(num_breed_true,         "number of breed true");
   df.Write(num_breed_true_creatures, "number of breed true organisms?");
-  //df.Write(num_parasites,            "number of parasites");
   df.Write(num_no_birth_creatures,   "number of no-birth organisms");
   df.Write(num_single_thread_creatures, "number of single-threaded organisms");
   df.Write(num_multi_thread_creatures, "number of multi-threaded organisms");

Modified: branches/collect/source/main/cStats.h
===================================================================
--- branches/collect/source/main/cStats.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cStats.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -195,6 +195,7 @@
   int num_no_birth_creatures;
   int num_single_thread_creatures;
   int num_multi_thread_creatures;
+  int m_num_threads;
   int num_modified;
 
   int num_genotypes_last;
@@ -344,6 +345,7 @@
   inline void SetNumNoBirthCreatures(int in_num_no_birth_creatures);
   inline void SetNumSingleThreadCreatures(int in_num_single_thread_creatures);
   inline void SetNumMultiThreadCreatures(int in_num_multi_thread_creatures);
+  inline void SetNumThreads(int in_num_threads) { m_num_threads = in_num_threads; }
   inline void SetNumModified(int in_num_modified);
 
   void SetMaxFitness(double in_max_fitness) { max_fitness = in_max_fitness; }
@@ -520,6 +522,7 @@
   int GetNumNoBirthCreatures() const{ return num_no_birth_creatures; }
   int GetNumSingleThreadCreatures() const { return num_single_thread_creatures; }
   int GetNumMultiThreadCreatures() const { return num_multi_thread_creatures; }
+  int GetNumThreads() const { return m_num_threads; }
   int GetNumModified() const { return num_modified;}
 
   int GetTotCreatures() const       { return tot_organisms; }
@@ -615,7 +618,7 @@
   void PrintErrorData(const cString& filename);
   void PrintVarianceData(const cString& filename);
   void PrintDominantData(const cString& filename);
-  void PrintDominantParaData(const cString& filename);
+  void PrintParasiteData(const cString& filename);
   void PrintStatsData(const cString& filename);
   void PrintCountData(const cString& filename);
   void PrintTotalsData(const cString& filename);

Modified: branches/collect/source/main/cTaskLib.cc
===================================================================
--- branches/collect/source/main/cTaskLib.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/main/cTaskLib.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -2166,7 +2166,7 @@
   const int function = ctx.GetTaskEntry()->GetArguments().GetInt(0);
 
    // always get x&y, at least for now, turn it into a double between 0 and 1
-  double y, x, Fx;
+  double y, x, Fx = 0.0;
 
   const cArgContainer& args = ctx.GetTaskEntry()->GetArguments();
   if (args.GetInt(1)) {

Modified: branches/collect/source/targets/avida-viewer/cSymbolUtil.cc
===================================================================
--- branches/collect/source/targets/avida-viewer/cSymbolUtil.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/targets/avida-viewer/cSymbolUtil.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -88,7 +88,7 @@
   if (cell.IsOccupied() == false) return ' ';
   const cOrganism & organism = *(cell.GetOrganism());
 
-  if (organism.GetPhenotype().IsParasite() == true) return '*';
+  if (organism.GetNumParasites()) return '*';
   return '-';
 }
 

Modified: branches/collect/source/targets/avida-viewer/cZoomScreen.cc
===================================================================
--- branches/collect/source/targets/avida-viewer/cZoomScreen.cc	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/targets/avida-viewer/cZoomScreen.cc	2007-05-29 18:12:46 UTC (rev 1624)
@@ -408,7 +408,8 @@
       info.GetActiveCell()->IsOccupied() == false) return;
   
   cGenotype* genotype = info.GetActiveGenotype();
-  cPhenotype& phenotype = info.GetActiveCell()->GetOrganism()->GetPhenotype();
+  cOrganism* organism = info.GetActiveCell()->GetOrganism();
+  cPhenotype& phenotype = organism->GetPhenotype();
   
   SetBoldColor(COLOR_CYAN);
   
@@ -454,7 +455,7 @@
   else SetColor(COLOR_CYAN);
   Print(CPU_FLAGS_Y + 3, CPU_FLAGS_X + 1, "Injected");
   
-  if (phenotype.IsParasite()) SetBoldColor(COLOR_CYAN);
+  if (organism->GetNumParasites()) SetBoldColor(COLOR_CYAN);
   else SetColor(COLOR_CYAN);
   Print(CPU_FLAGS_Y + 4, CPU_FLAGS_X + 1, "Parasite");
   
@@ -467,12 +468,13 @@
   Print(CPU_FLAGS_Y + 6, CPU_FLAGS_X + 1, "Modified");
   
   SetColor(COLOR_WHITE);
+
+//  @DMB - This needs to be reworked for current parasite implementation
+//  if (info.GetPauseLevel() && info.GetActiveCell() && phenotype.IsParasite()) {
+//    if (parasite_zoom == true) Print(17, 12, "[X] Host Code    ");
+//    else Print(17, 12, "[X] Parasite Code");
+//  }
   
-  if (info.GetPauseLevel() && info.GetActiveCell() && phenotype.IsParasite()) {
-    if (parasite_zoom == true) Print(17, 12, "[X] Host Code    ");
-    else Print(17, 12, "[X] Parasite Code");
-  }
-  
   // Place the task information onto the screen.
   SetColor(COLOR_CYAN);
   

Modified: branches/collect/source/tools/tArray.h
===================================================================
--- branches/collect/source/tools/tArray.h	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/source/tools/tArray.h	2007-05-29 18:12:46 UTC (rev 1624)
@@ -52,7 +52,7 @@
   typedef const T* const_iterator; //!< STL-compatible const_iterator.
 
   explicit tArray(const int size = 0) : m_data(NULL), m_size(0) { ResizeClear(size); }
-  //explicit tArray(const int size = 0, const T& init_val) : m_data(NULL), m_size(0) { Resize(size, init_val); }
+  tArray(const int size, const T& init_val) : m_data(NULL), m_size(0) { Resize(size, init_val); }
 	tArray(const tArray& rhs) : m_data(NULL), m_size(0) { this->operator=(rhs); }
 
   ~tArray() { delete [] m_data; }

Modified: branches/collect/support/config/avida.cfg
===================================================================
--- branches/collect/support/config/avida.cfg	2007-05-29 18:09:05 UTC (rev 1623)
+++ branches/collect/support/config/avida.cfg	2007-05-29 18:12:46 UTC (rev 1624)
@@ -81,6 +81,8 @@
                          #     (after the divide, we have 2 children)
                          # 2 = Divide resets state of current thread only
                          #     (does not touch possible parasite threads)
+INJECT_METHOD 0          # 0 = Leaves the parasite thread state untouched.
+                         # 1 = Resets the calling thread state on inject
 GENERATION_INC_METHOD 1  # 0 = Only the generation of the child is
                          #     increased on divide.
                          # 1 = Both the generation of the mother and child are
@@ -143,42 +145,55 @@
 STERILIZE_BENEFICIAL 0.0   # 
 FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
                            # be eliminated?
-NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness to be considered neutral.
-NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness to be considered neutral.
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness
+                           # to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness
+                           # to be considered neutral.
 
 ### TIME_GROUP ###
 # Time Slicing
-AVE_TIME_SLICE 30        # Ave number of insts per org per update
-SLICING_METHOD 1         # 0 = CONSTANT: all organisms get default...
-                         # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
-                         # 2 = INTEGRATED: Perfectly integrated deterministic.
-BASE_MERIT_METHOD 4      # 0 = Constant (merit independent of size)
-                         # 1 = Merit proportional to copied size
-                         # 2 = Merit prop. to executed size
-                         # 3 = Merit prop. to full size
-                         # 4 = Merit prop. to min of executed or copied size
-                         # 5 = Merit prop. to sqrt of the minimum size
-                         # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
-BASE_CONST_MERIT 100     # Base merit when BASE_MERIT_METHOD set to 0
-DEFAULT_BONUS 1.0        # Initial bonus before any tasks
-MERIT_DEFAULT_BONUS 0    # Scale the merit of an offspring by the default bonus
-                         # rather than the accumulated bonus of the parent?
-MERIT_BONUS_INST 0       # in BASE_MERIT_METHOD 6, this sets which instruction counts (-1=none, 0= 1st in INST_SET.)
-MERIT_BONUS_EFFECT 0     # in BASE_MERIT_METHOD 6, this sets how much merit is earned per INST (-1=penalty, 0= no effect.)
-FITNESS_VALLEY 0         # in BASE_MERIT_METHOD 6, this creates valleys from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP (0= off, 1=on)
-FITNESS_VALLEY_START 0   # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
-FITNESS_VALLEY_STOP 0    # if FITNESS_VALLEY =1, orgs with num_key_instructions from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP get fitness 1 (lowest)
-MAX_CPU_THREADS 1        # Number of Threads a CPU can spawn
-THREAD_SLICING_METHOD 0  # Formula for and organism's thread slicing
-                         #   (num_threads-1) * THREAD_SLICING_METHOD + 1
-                         # 0 = One thread executed per time slice.
-                         # 1 = All threads executed each time slice.
-MAX_LABEL_EXE_SIZE 1     # Max nops marked as executed when labels are used
-DONATE_SIZE 5.0          # Amount of merit donated with 'donate' command
-DONATE_MULT 10.0         # Multiple of merit given that the target receives.
-MAX_DONATE_KIN_DIST -1   # Limit on distance of relation for donate; -1=no max
-MAX_DONATE_EDIT_DIST -1  # Limit on edit distance for donate; -1=no max
-MAX_DONATES 1000000      # Limit on number of donates organisms are allowed.
+AVE_TIME_SLICE 30           # Ave number of insts per org per update
+SLICING_METHOD 1            # 0 = CONSTANT: all organisms get default...
+                            # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                            # 2 = INTEGRATED: Perfectly integrated deterministic.
+BASE_MERIT_METHOD 4         # 0 = Constant (merit independent of size)
+                            # 1 = Merit proportional to copied size
+                            # 2 = Merit prop. to executed size
+                            # 3 = Merit prop. to full size
+                            # 4 = Merit prop. to min of executed or copied size
+                            # 5 = Merit prop. to sqrt of the minimum size
+                            # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100        # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0           # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0       # Scale the merit of an offspring by the default bonus
+                            # rather than the accumulated bonus of the parent?
+MERIT_BONUS_INST 0          # in BASE_MERIT_METHOD 6, this sets which instruction counts
+                            # (-1 = none, 0 = First in INST_SET.)
+MERIT_BONUS_EFFECT 0        # in BASE_MERIT_METHOD 6, this sets how much merit is earned
+                            # per instruction (-1 = penalty, 0 = no effect.)
+FITNESS_VALLEY 0            # in BASE_MERIT_METHOD 6, this creates valleys from
+                            # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # (0 = off, 1 = on)
+FITNESS_VALLEY_START 0      # if FITNESS_VALLEY = 1, orgs with num_key_instructions
+                            # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0       # if FITNESS_VALLEY = 1, orgs with num_key_instructions
+                            # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # get fitness 1 (lowest)
+MAX_CPU_THREADS 1           # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0     # Formula for and organism's thread slicing
+                            #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                            # 0 = One thread executed per time slice.
+                            # 1 = All threads executed each time slice.
+MAX_LABEL_EXE_SIZE 1        # Max nops marked as executed when labels are used
+MERIT_GIVEN 0.0             # Fraction of merit donated with 'donate' command
+MERIT_RECEIVED 0.0          # Multiplier of merit given with 'donate' command
+MAX_DONATE_KIN_DIST -1      # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1     # Limit on genetic (edit) distance for donate; -1=no max
+MIN_GB_DONATE_THRESHOLD -1  # threshold green beard donates only to orgs above this
+                            # donation attempt threshold; -1=no thresh
+DONATE_THRESH_QUANTA 10     # The size of steps between quanta donate thresholds
+MAX_DONATES 1000000         # Limit on number of donates organisms are allowed.
 
 ### PROMOTER_GROUP ###
 # Promoters




More information about the Avida-cvs mailing list