Index: /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp	(revision 2184)
+++ /GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp	(revision 2206)
@@ -1910,5 +1910,5 @@
 												bool includeOverlays)
 {
-	if (0 && mNormalExecution)
+	if (1 && mNormalExecution)
 	{
 		TerrainSceneManager::_renderScene(camera, vp, includeOverlays);
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.vcproj
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.vcproj	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.vcproj	(revision 2206)
@@ -199,5 +199,6 @@
 				OptimizeForWindowsApplication="TRUE"
 				AdditionalIncludeDirectories="..\include;..\..\..\..\..\..\NonGTP\Boost;..\src;..\..\..\..\..\..\NonGTP\Devil\include;..\..\..\..\..\..\NonGTP\Zlib\include;..\..\..\..\..\..\NonGTP\Xerces;&quot;$(QTDIR)\include\QtOpenGl&quot;;&quot;$(QTDIR)\include\Qt&quot;;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;QtInterface;..\src\sparsehash\src\;..\src\ootl\src\include\ootl;..\src\ootl\src\include\ootl\sandbox;$(NOINHERIT)"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;GTP_INTERNAL;USE_QT;USE_CG;USE_HASH_PVS"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;GTP_INTERNAL;USE_QT;USE_CG;USE_HASH_PV"
+				StringPooling="TRUE"
 				ExceptionHandling="TRUE"
 				RuntimeLibrary="2"
@@ -247,6 +248,6 @@
 		<Configuration
 			Name="release_noqt|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
 			ConfigurationType="1"
 			CharacterSet="2">
@@ -256,17 +257,12 @@
 				GlobalOptimizations="TRUE"
 				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="TRUE"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="TRUE"
+				FavorSizeOrSpeed="1"
 				EnableFiberSafeOptimizations="TRUE"
-				OptimizeForProcessor="0"
+				OptimizeForProcessor="3"
 				OptimizeForWindowsApplication="TRUE"
 				AdditionalIncludeDirectories="..\include;..\..\..\..\..\..\NonGTP\Boost;..\src;..\..\..\..\..\..\NonGTP\Devil\include;..\..\..\..\..\..\NonGTP\Zlib\include;..\..\..\..\..\..\NonGTP\Xerces;&quot;$(QTDIR)\include\QtOpenGl&quot;;&quot;$(QTDIR)\include\Qt&quot;;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;GTP_INTERNAL;NO_QT"
-				StringPooling="TRUE"
-				MinimalRebuild="FALSE"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				RuntimeTypeInfo="FALSE"
+				RuntimeLibrary="2"
+				RuntimeTypeInfo="TRUE"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
@@ -280,11 +276,9 @@
 				OutputFile="../bin/release/Preprocessor.exe"
 				LinkIncremental="1"
-				AdditionalLibraryDirectories="..\src\GL;..\lib\release;..\..\Preprocessing\lib\release;..\..\..\..\..\..\NonGTP\Boost\lib;..\..\..\..\..\..\NonGTP\Xerces\xercesc\lib;..\..\..\..\..\..\NonGTP\Zlib\lib;..\..\..\..\..\..\NonGTP\Devil\lib;..\MultiLevelRayTracing\RTScene\Release;..\MultiLevelRayTracing\RTWorld\Release"
-				GenerateDebugInformation="FALSE"
-				SubSystem="1"
-				LargeAddressAware="0"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
+				AdditionalLibraryDirectories="..\src\GL;..\lib\release;..\..\Preprocessing\lib\release;..\..\..\..\..\..\NonGTP\Boost\lib;..\..\..\..\..\..\NonGTP\Xerces\xercesc\lib;..\..\..\..\..\..\NonGTP\Zlib\lib;..\..\..\..\..\..\NonGTP\Devil\lib;..\MultiLevelRayTracing\RTScene\Release;..\MultiLevelRayTracing\RTWorld\Release;&quot;$(QTDIR)\lib&quot;;.\QtGlRenderer\Release"
+				GenerateDebugInformation="FALSE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
 				TargetMachine="1"
 				FixedBaseAddress="1"/>
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/HashPvs.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/HashPvs.h	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/HashPvs.h	(revision 2206)
@@ -163,5 +163,5 @@
 	void MergeInPlace(const HashPvs<T, S> &a)
 	{
-		cerr << "not implemented yet" << endl;
+		cerr << "hashpvs: mergeinplace not implemented yet" << endl;
 	}
 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/Intersectable.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/Intersectable.cpp	(revision 2198)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/Intersectable.cpp	(revision 2206)
@@ -118,5 +118,5 @@
 float Intersectable::GetArea() const 
 {
-	cerr << "GetArea not implemented yet" << endl;
+	cerr << "GetArea not implemented yet for this type" << endl;
 	return 0; 
 }
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.vcproj
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.vcproj	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.vcproj	(revision 2206)
@@ -222,5 +222,5 @@
 				OptimizeForWindowsApplication="TRUE"
 				AdditionalIncludeDirectories="..\src;..\..\..\..\..\..\NonGTP\Devil\include;..\..\..\..\..\..\NonGTP\Zlib\include;..\..\..\..\..\..\NonGTP\Xerces;..\..\..\..\..\..\NonGTP\Boost;..\MultiLevelRayTracing;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\include\QtOpenGl&quot;;&quot;$(CG_INC_PATH)&quot;;Timer;..\src\sparsehash\src\google\sparsehash;..\src\sparsehash\src\windows;..\src\sparsehash\src\google;..\src\sparsehash\src;..\src\ootl\;..\src\ootl\src\;..\src\ootl\src\cpp;..\src\ootl\src\cpp\include\;..\src\ootl\src\include\ootl;..\src\ootl\src\include\ootl\sandbox;..\src\ootl\src\cpp\include\ootl\mswin"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GTP_INTERNAL;USE_QT;USE_HASH_PVS"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GTP_INTERNAL;USE_QT;USE_HASH_PV"
 				ExceptionHandling="TRUE"
 				RuntimeLibrary="2"
@@ -260,6 +260,6 @@
 		<Configuration
 			Name="release_noqt|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
 			ConfigurationType="4"
 			CharacterSet="2">
@@ -267,21 +267,15 @@
 				Name="VCCLCompilerTool"
 				Optimization="3"
-				GlobalOptimizations="TRUE"
-				InlineFunctionExpansion="2"
-				EnableIntrinsicFunctions="TRUE"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="TRUE"
-				EnableFiberSafeOptimizations="TRUE"
-				OptimizeForProcessor="0"
+				InlineFunctionExpansion="0"
+				FavorSizeOrSpeed="0"
+				OptimizeForProcessor="3"
 				OptimizeForWindowsApplication="TRUE"
-				AdditionalIncludeDirectories="..\src;..\..\..\..\..\..\NonGTP\Devil\include;..\..\..\..\..\..\NonGTP\Zlib\include;..\..\..\..\..\..\NonGTP\Xerces;..\..\..\..\..\..\NonGTP\Boost;..\MultiLevelRayTracing;Timer"
+				AdditionalIncludeDirectories="..\src;..\..\..\..\..\..\NonGTP\Devil\include;..\..\..\..\..\..\NonGTP\Zlib\include;..\..\..\..\..\..\NonGTP\Xerces;..\..\..\..\..\..\NonGTP\Boost;..\MultiLevelRayTracing;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;"
 				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GTP_INTERNAL;NO_QT"
-				StringPooling="TRUE"
 				ExceptionHandling="TRUE"
 				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
 				DisableLanguageExtensions="FALSE"
 				ForceConformanceInForLoopScope="FALSE"
-				RuntimeTypeInfo="FALSE"
+				RuntimeTypeInfo="TRUE"
 				UsePrecompiledHeader="0"
 				BrowseInformation="1"
@@ -495,4 +489,7 @@
 			<File
 				RelativePath=".\HashPvs.h">
+			</File>
+			<File
+				RelativePath=".\HashPvs2.h">
 			</File>
 			<File
@@ -1163,8 +1160,8 @@
 			</File>
 			<File
+				RelativePath=".\sparsehash\src\google\sparsehash\hash_fun.h">
+			</File>
+			<File
 				RelativePath=".\sparsehash\src\windows\hash_fun.h">
-			</File>
-			<File
-				RelativePath=".\sparsehash\src\google\sparsehash\hash_fun.h">
 			</File>
 			<File
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp	(revision 2206)
@@ -237,5 +237,6 @@
 mRoot(NULL),
 mTimeStamp(1),
-mIsInitialSubdivision(false)
+mIsInitialSubdivision(false),
+mCachedObjects(NULL)
 {
 	ReadEnvironment();
@@ -1940,52 +1941,39 @@
 
 
-int BvHierarchy::CollectViewCells(const ObjectContainer &objects, 
-								  ViewCellContainer &viewCells,
-								  const bool setCounter,
-								  const bool onlyUnmailedRays)// const
-{
-	ViewCell::NewMail();
-
+
+#if STORE_VIEWCELLS_WITH_BVH
+
+
+void BvHierarchy::ReleaseViewCells(const ObjectContainer &objects)
+{
 	ObjectContainer::const_iterator oit, oit_end = objects.end();
 
-	// use mailing to avoid dublicates
+	for (oit = objects.begin(); oit != oit_end; ++ oit)
+	{
+		(*oit)->DelViewCells();
+	}
+
+	DEL_PTR(mCachedObjects);
+}
+
+
+void BvHierarchy::AssociateViewCellsWithObjects(const ObjectContainer &objects)// const
+{
+	ObjectContainer::const_iterator oit, oit_end = objects.end();
+
 	const bool useMailBoxing = true;
 
-	int numRays = 0;
-	// loop through all object and collect view cell pvs of this node
+	mCachedObjects = new ObjectContainer();
+	
 	for (oit = objects.begin(); oit != oit_end; ++ oit)
 	{
-		// use mailing to avoid duplicates
-		numRays += CollectViewCells(*oit, viewCells, useMailBoxing, setCounter, onlyUnmailedRays);
-	}
-
-	return numRays;
-}
-
-
-#if STORE_VIEWCELLS_WITH_BVH
-
-
-void BvHierarchy::ReleaseViewCells(const ObjectContainer &objects)
-{
-	ObjectContainer::const_iterator oit, oit_end = objects.end();
-
-	for (oit = objects.begin(); oit != oit_end; ++ oit)
-	{
-		(*oit)->DelViewCells();
-	}
-}
-
-
-void BvHierarchy::AssociateViewCellsWithObjects(const ObjectContainer &objects) const
-{
-	ObjectContainer::const_iterator oit, oit_end = objects.end();
-
-	const bool useMailBoxing = true;
-	for (oit = objects.begin(); oit != oit_end; ++ oit)
-	{
-		ViewCell::NewMail();
-		// use mailing to avoid duplicates
-		AssociateViewCellsWithObject(*oit, useMailBoxing);
+		if (!(*oit)->GetOrCreateRays()->empty())
+		{
+			ViewCell::NewMail();
+			// use mailing to avoid duplicates
+			AssociateViewCellsWithObject(*oit, useMailBoxing);
+			
+			mCachedObjects->push_back(*oit);
+		}
 	}
 }
@@ -1996,5 +1984,6 @@
 	if (!obj->GetOrCreateViewCells()->empty())
 	{
-		cerr << "AssociateViewCellsWithObject: view cells cache not working" << endl;
+		cerr << "AssociateViewCellsWithObject: view cells cache error" << endl;
+		exit(0);
 	}
 
@@ -2025,5 +2014,5 @@
 	if (obj->GetOrCreateViewCells()->empty())
 	{
-		//cerr << "h";//CountViewCells: view cells empty, view cells cache not working" << endl;
+		cerr << "h";//CountViewCells: view cells empty, view cells cache not working" << endl;
 		return CountViewCellsFromRays(obj);
 	}
@@ -2188,5 +2177,118 @@
 }
 
+
+int BvHierarchy::CollectViewCells(const ObjectContainer &objects, 
+								  ViewCellContainer &viewCells,
+								  const bool setCounter,
+								  const bool onlyUnmailedRays)// const
+{
+	ViewCell::NewMail();
+
+	// use mailing to avoid dublicates
+	const bool useMailBoxing = true;
+
+	int numRays = 0;
+
+	if (mCachedObjects)
+	{
+		ObjectContainer::const_iterator oit, oit_end = mCachedObjects->end();
+
+		// loop through all object and collect view cell pvs of this node
+		for (oit = mCachedObjects->begin(); oit != oit_end; ++ oit)
+		{
+			// use mailing to avoid duplicates
+			numRays += CollectViewCells(*oit, viewCells, useMailBoxing, setCounter, onlyUnmailedRays);
+		}
+	}
+	else
+	{
+		ObjectContainer::const_iterator oit, oit_end = objects.end();
+
+		// loop through all object and collect view cell pvs of this node
+		for (oit = objects.begin(); oit != oit_end; ++ oit)
+		{
+			// use mailing to avoid duplicates
+			numRays += CollectViewCellsFromRays(*oit, viewCells, useMailBoxing, setCounter, onlyUnmailedRays);
+		}
+	}
+
+	return numRays;
+}
+
+
+int BvHierarchy::CountViewCells(const ObjectContainer &objects)// const
+{
+	int nViewCells = 0;
+
+	ViewCell::NewMail();
+	
+	if (mCachedObjects)
+	{
+		ObjectContainer::const_iterator oit, oit_end = mCachedObjects->end();
+
+		// loop through all object and collect view cell pvs of this node
+		for (oit = mCachedObjects->begin(); oit != oit_end; ++ oit)
+		{
+			// use mailing to avoid duplicates
+			nViewCells += CountViewCells(*oit);
+		}
+	}
+	else
+	{
+		ObjectContainer::const_iterator oit, oit_end = objects.end();
+
+		// loop through all object and collect view cell pvs of this node
+		for (oit = objects.begin(); oit != oit_end; ++ oit)
+		{
+			nViewCells += CountViewCellsFromRays(*oit);
+		}
+	}
+
+	return nViewCells;
+}
+
+
 #else
+
+int BvHierarchy::CollectViewCells(const ObjectContainer &objects, 
+								  ViewCellContainer &viewCells,
+								  const bool setCounter,
+								  const bool onlyUnmailedRays)// const
+{
+	ViewCell::NewMail();
+
+	ObjectContainer::const_iterator oit, oit_end = objects.end();
+
+	// use mailing to avoid dublicates
+	const bool useMailBoxing = true;
+
+	int numRays = 0;
+	// loop through all object and collect view cell pvs of this node
+	for (oit = objects.begin(); oit != oit_end; ++ oit)
+	{
+		// use mailing to avoid duplicates
+		numRays += CollectViewCells(*oit, viewCells, useMailBoxing, setCounter, onlyUnmailedRays);
+	}
+
+	return numRays;
+}
+
+
+int BvHierarchy::CountViewCells(const ObjectContainer &objects)// const
+{
+	int nViewCells = 0;
+
+	ViewCell::NewMail();
+	ObjectContainer::const_iterator oit, oit_end = objects.end();
+
+	// loop through all object and collect view cell pvs of this node
+	for (oit = objects.begin(); oit != oit_end; ++ oit)
+	{
+		nViewCells += CountViewCells(*oit);
+	}
+
+	return nViewCells;
+}
+
 
 int BvHierarchy::CountViewCells(Intersectable *obj) //const
@@ -2274,20 +2376,4 @@
 #endif
 
-
-int BvHierarchy::CountViewCells(const ObjectContainer &objects)// const
-{
-	int nViewCells = 0;
-
-	ViewCell::NewMail();
-	ObjectContainer::const_iterator oit, oit_end = objects.end();
-
-	// loop through all object and collect view cell pvs of this node
-	for (oit = objects.begin(); oit != oit_end; ++ oit)
-	{
-		nViewCells += CountViewCells(*oit);
-	}
-
-	return nViewCells;
-}
 
 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 2205)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp	(revision 2206)
@@ -107,6 +107,6 @@
 	mMixtureDistribution->GenerateSamples(samplesPerPass, rays);
 	
-	bool doubleRays = true;
-	bool pruneInvalidRays = true;
+	const bool doubleRays = true;
+	const bool pruneInvalidRays = true;
 	mPreprocessor->CastRays(rays, passSamples, doubleRays, pruneInvalidRays);
 
@@ -118,7 +118,7 @@
 	
 	mStats <<
-		"#Pass\n" << pass ++ <<endl<<
-		"#Time\n" << time <<endl<<
-		"#TotalSamples\n" <<totalRays<<endl;
+		"#Pass\n" << pass ++ << endl <<
+		"#Time\n" << time << endl <<
+		"#TotalSamples\n" << totalRays << endl;
 
 	float last = 0.0f;
@@ -128,7 +128,7 @@
 		float ratio = 0.0f;
 
-		if (k < mMixtureDistribution->mDistributions.size()) 
-		{
-			ratio = mMixtureDistribution->mDistributions[k]->mRatio-last;
+		if (k < (int)mMixtureDistribution->mDistributions.size()) 
+		{
+			ratio = mMixtureDistribution->mDistributions[k]->mRatio - last;
 			last = mMixtureDistribution->mDistributions[k]->mRatio;
 		}
@@ -925,5 +925,5 @@
 		cout << "computing sample contribution for " << (int)constructionSamples.size() << " samples ... ";
 
-		// computes sample contribution of cast rays TODO: leak?
+		// computes sample contribution of cast rays
 		if (SAMPLE_AFTER_SUBDIVISION)
 			ComputeSampleContributions(constructionSamples, true, false);
@@ -2083,5 +2083,5 @@
 float
 ViewCellsManager::ComputeSampleContributions(const VssRayContainer &rays,
-											 const bool addRays,
+											 const bool addContributions,
    											 const bool storeViewCells,
 											 const bool useHitObjects)
@@ -2104,5 +2104,5 @@
 		else 
 		{
-			sum += ComputeSampleContribution(*(*it), addRays, storeViewCells, useHitObjects);
+			sum += ComputeSampleContribution(*(*it), addContributions, storeViewCells, useHitObjects);
 		}
 	}
@@ -6900,4 +6900,5 @@
 
 		long startTime = GetTime();
+		Real timeDiff;
 
 		cout << "casting " << samplesPerPass << " samples ... ";
@@ -6905,26 +6906,35 @@
 	
 		if (0)
+		{
 			CastPassSamples(samplesPerPass, evalStrats, evaluationSamples);
+
+			timeDiff = TimeDiff(startTime, GetTime());
+			cout << "finished in " << timeDiff * 1e-3f << " secs" << endl;
+			Debug << "finished in " << timeDiff * 1e-3f << " secs" << endl;
+		
+			cout << "computing sample contributions of " << (int)evaluationSamples.size()  << " samples ... ";
+			Debug << "computing sample contributions of " << (int)evaluationSamples.size()  << " samples ... ";
+
+			startTime = GetTime();
+
+			ComputeSampleContributions(evaluationSamples, true, false);
+
+			timeDiff = TimeDiff(startTime, GetTime());
+			cout << "finished in " << timeDiff * 1e-3 << " secs" << endl;
+			Debug << "finished in " << timeDiff * 1e-3 << " secs" << endl;
+		}
 		else
+		{
 			// use mixed distributions
 			CastEvaluationSamples(samplesPerPass, evaluationSamples);
 
+			timeDiff = TimeDiff(startTime, GetTime());
+			cout << "finished in " << timeDiff * 1e-3f << " secs" << endl;
+			Debug << "finished in " << timeDiff * 1e-3f << " secs" << endl;
+		
+			// don't use sample contributions because already accounted for inside the mixture distribution!
+		}
+
 		castSamples += samplesPerPass;
-
-		Real timeDiff = TimeDiff(startTime, GetTime());
-		
-		cout << "finished in " << timeDiff * 1e-3f << " secs" << endl;
-		cout << "computing sample contributions of " << (int)evaluationSamples.size()  << " samples ... ";
-		
-		Debug << "finished in " << timeDiff * 1e-3f << " secs" << endl;
-		Debug << "computing sample contributions of " << (int)evaluationSamples.size()  << " samples ... ";
-
-		startTime = GetTime();
-
-		ComputeSampleContributions(evaluationSamples, true, false);
-
-		timeDiff = TimeDiff(startTime, GetTime());
-		cout << "finished in " << timeDiff * 1e-3 << " secs" << endl;
-		Debug << "finished in " << timeDiff * 1e-3 << " secs" << endl;
 
 		if ((castSamples >= samplesForStats + oldSamples) || 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/BitVectorPvs.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/BitVectorPvs.h	(revision 2176)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/BitVectorPvs.h	(revision 2206)
@@ -145,5 +145,5 @@
 	void MergeInPlace(const BitVectorPvs<T, S> &a)
 	{
-		cerr << "not implemented yet" << endl;
+		cerr << "bitvector: merge in place not implemented yet" << endl;
 	}
 
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp	(revision 2176)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp	(revision 2206)
@@ -289,5 +289,5 @@
 			}
 		default:
-			cout << "merging of object type " << obj->Type() << " not implemented yet" << endl;
+			cout << "merge of object type " << obj->Type() << " not implemented yet" << endl;
 			break;
 		}
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.h
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.h	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.h	(revision 2206)
@@ -860,5 +860,5 @@
 	int AssociateViewCellsWithObject(Intersectable *obj, const bool useMailBoxing) const;
 
-	void AssociateViewCellsWithObjects(const ObjectContainer &objects) const;
+	void AssociateViewCellsWithObjects(const ObjectContainer &objects);// const;
 
 	void ReleaseViewCells(const ObjectContainer &objects);
@@ -975,4 +975,6 @@
 	HierarchyManager *mHierarchyManager;
 
+
+	ObjectContainer *mCachedObjects;
 
 	////////////////////
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/VspTree.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/VspTree.cpp	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/VspTree.cpp	(revision 2206)
@@ -2979,5 +2979,5 @@
 		}
 	default:
-		cerr << "not implemented yet" << endl;
+		cerr << "collectdirtycandidates not implemented yet" << endl;
 		candidate = NULL;
 		break;
Index: /GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
===================================================================
--- /GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp	(revision 2199)
+++ /GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp	(revision 2206)
@@ -379,7 +379,9 @@
 	case SEQUENTIAL:
 		ConstructInterleaved(sampleRays, objects, forcedViewSpace);
+		PrintTimings(true);
 		break;
 	case GRADIENT:
 		ConstructInterleavedWithGradient(sampleRays, objects, forcedViewSpace);
+		PrintTimings(true);
 		break;
 	default:
@@ -533,5 +535,5 @@
 	cout << "\n" << ospSteps << " object space partition steps taken" << endl;
 
-	PrintTimings(true);
+	//PrintTimings(true);
 
 	///////////////
@@ -555,5 +557,5 @@
 
 		dirtyList.clear();
-		PrintTimings(false);
+		//PrintTimings(false);
 	}
 	else
@@ -647,5 +649,5 @@
 		}
 
-		PrintTimings(lastSplitWasOsp);
+		//PrintTimings(lastSplitWasOsp);
 	}
 
