Index: trunk/VUT/GtpVisibility/include/HierarchyInterface.h
===================================================================
--- trunk/VUT/GtpVisibility/include/HierarchyInterface.h	(revision 65)
+++ trunk/VUT/GtpVisibility/include/HierarchyInterface.h	(revision 74)
@@ -19,5 +19,5 @@
 		@returns true if node is leaf
 	*/
-    virtual bool IsLeaf(HierarchyNode *node) = 0;
+    virtual bool IsLeaf(HierarchyNode *node) const = 0;
 	/** Traverses the given node. 
 		@param node the hierarchy node
@@ -41,10 +41,8 @@
 	*/
 	void SetSceneRoot(HierarchyNode *root);
-  /** Get the root of the scene hierarchy.
-      @return the hierarchy root
-  */
-  HierarchyNode *GetSceneRoot() const {
-    return mSceneRoot;
-  }
+    /** Get the root of the scene hierarchy.
+		@return the hierarchy root
+	*/
+	HierarchyNode *GetSceneRoot() const;
 	/** Sets the scene root and initialises this scene traverser for a traversal.
 		@param root current scene root
@@ -52,9 +50,8 @@
 	*/
 	void InitFrame(HierarchyNode *root);
-	
 	/** Returns current frame id.
 		@returns frame id
 	*/
-	int GetFrameId();
+	unsigned int GetFrameId() const;
 	/** Returns the current distance queue.
 		@returns current distance queue
@@ -66,5 +63,5 @@
 		@param node2 the second node to be compared
 	*/			
-	virtual bool HasGreaterDistance(HierarchyNode *node1, HierarchyNode *node2) = 0;
+	virtual bool HasGreaterDistance(HierarchyNode *node1, HierarchyNode *node2) const = 0;
 	/** Checks if the node is visible from the current view frustum.
 		@param node the current node
@@ -72,4 +69,8 @@
 	*/
 	virtual bool CheckFrustumVisible(HierarchyNode *node, bool &intersects) = 0;
+	/** Checks if the node is visible from the current view frustum.
+		@param node the current node
+	*/
+	bool CheckFrustumVisible(HierarchyNode *node);
 	/** Returns next available occlusion query or creates new one.
 		@return the next occlusion query
@@ -80,5 +81,5 @@
 		@returns if the node has renderable geometry
 	*/
-    virtual bool HasGeometry(HierarchyNode *node) = 0;
+    virtual bool HasGeometry(HierarchyNode *node) const = 0;
 	/** Sets the visible flag for this node.
 		@param node the current node
@@ -88,13 +89,20 @@
 	/** Returns true if node has the visible flag set. See set
 	*/
-	virtual bool IsNodeVisible(HierarchyNode *node) = 0;
+	virtual bool IsNodeVisible(HierarchyNode *node) const = 0;
 	/** Sets the last visited frame id for this node.
 		@param node the current node
 		@param frameId the current frame id
 	*/
-	virtual void SetLastVisited(HierarchyNode *node, const int frameId) = 0;
+	virtual void SetLastVisited(HierarchyNode *node, 
+								const unsigned int frameId) = 0;
 	/** Returns frame id when this node was last visited by the traverser. See set
 	*/
-	virtual int LastVisited(HierarchyNode *node) = 0;
+	virtual unsigned int LastVisited(HierarchyNode *node) const = 0;
+	/** Returns number of traversed nodes.
+	*/
+	unsigned int GetNumTraversedNodes();
+	/** Returns number of rendered nodes.
+	*/
+	unsigned int GetNumRenderedNodes();
 
 protected:
@@ -105,7 +113,5 @@
 	
 	//--- statistics
-	unsigned int mNumSceneNodes;
 	unsigned int mNumTraversedNodes;
-	unsigned int mNumRenderedGeometry;
 	unsigned int mNumRenderedNodes;
 
Index: trunk/VUT/GtpVisibility/include/StopAndWaitCullingManager.h
===================================================================
--- trunk/VUT/GtpVisibility/include/StopAndWaitCullingManager.h	(revision 59)
+++ trunk/VUT/GtpVisibility/include/StopAndWaitCullingManager.h	(revision 74)
@@ -11,5 +11,4 @@
 {
 public:
-	StopAndWaitCullingManager(HierarchyInterface *hierarchyInterface);
 	void RenderScene();
 };
Index: trunk/VUT/GtpVisibility/include/VisibilityEnvironment.h
===================================================================
--- trunk/VUT/GtpVisibility/include/VisibilityEnvironment.h	(revision 71)
+++ trunk/VUT/GtpVisibility/include/VisibilityEnvironment.h	(revision 74)
@@ -13,5 +13,8 @@
 	/** Different types of occlusion culling algorithms 
 	*/
-	enum CullingManagerType {FRUSTUM_CULLING, STOP_AND_WAIT, COHERENT_HIERARCHICAL_CULLING};
+	enum CullingManagerType {FRUSTUM_CULLING, 
+							 STOP_AND_WAIT_CULLING, 
+							 COHERENT_HIERARCHICAL_CULLING, 
+							 NUM_CULLING_MANAGERS};
 
 	/** Loads an environment from disk.
@@ -21,5 +24,3 @@
 } // namespace GtpVisibility
 
-/** @}*/ // end of group Visibility
-
 #endif // VisibilityEnvironment_H
Index: trunk/VUT/GtpVisibility/include/FrustumCullingManager.h
===================================================================
--- trunk/VUT/GtpVisibility/include/FrustumCullingManager.h	(revision 59)
+++ trunk/VUT/GtpVisibility/include/FrustumCullingManager.h	(revision 74)
@@ -12,5 +12,4 @@
 {
 public:
-	FrustumCullingManager(HierarchyInterface *hierarchyInterface);
 	void RenderScene();
 };
Index: trunk/VUT/GtpVisibility/include/CoherentHierarchicalCullingManager.h
===================================================================
--- trunk/VUT/GtpVisibility/include/CoherentHierarchicalCullingManager.h	(revision 59)
+++ trunk/VUT/GtpVisibility/include/CoherentHierarchicalCullingManager.h	(revision 74)
@@ -17,5 +17,4 @@
 {
 public:
-	CoherentHierarchicalCullingManager(HierarchyInterface *hierarchyInterface);
 	void RenderScene();
 };
Index: trunk/VUT/GtpVisibility/include/VisibilityManager.h
===================================================================
--- trunk/VUT/GtpVisibility/include/VisibilityManager.h	(revision 71)
+++ trunk/VUT/GtpVisibility/include/VisibilityManager.h	(revision 74)
@@ -41,4 +41,12 @@
 	void ApplyVisibilityCulling();
 
+	/** Sets the threshold for the visibiliy culling algorithm.
+		@param visibilityThreshold number of visible pixels where an object 
+		is still considered invisible.
+		@remark automatically sets the threshold of the current and of 
+		new culling managers to this value.
+	*/
+	void SetVisibilityCullingThreshold(unsigned int threshold);
+
 protected:
 	
@@ -48,4 +56,7 @@
   VisibilityEnvironment *mVisibilityEnvironment;
   VisibilityEnvironment::CullingManagerType mCullingManagerType;
+
+  unsigned int mVisibilityThreshold;
+
 };
 } // namespace GtpVisibility
Index: trunk/VUT/GtpVisibility/include/CullingManager.h
===================================================================
--- trunk/VUT/GtpVisibility/include/CullingManager.h	(revision 59)
+++ trunk/VUT/GtpVisibility/include/CullingManager.h	(revision 74)
@@ -12,7 +12,9 @@
 {
 public:
-	/** Constructor taking a scene traverser for a specific type of hierarchy as argument. 
+	/** Default constructor. 
+		@remark an appropriate hierarchy interface must be provided for the algorithms to
+		work on specific hierarchy
 	*/
-	CullingManager(HierarchyInterface *hierarchyInterface);
+	CullingManager();
 	/** Renders the scene using a specific occlusion culling algorithm, e.g., coherent
 		hierarchical culling or stop and wait.
@@ -24,4 +26,16 @@
 	*/
 	void SetHierarchyInterface(HierarchyInterface *hierarchyInterface);
+	/** Sets the threshold for the visibiliy culling algorithm.
+		@param visibilityThreshold number of visible pixels where an object 
+		is still considered invisible.
+	*/
+	void SetVisibilityThreshold(unsigned int visibilityThreshold);
+
+	/** Returns number of frustum culled nodes.
+	*/
+	unsigned int GetNumFrustumCulledNodes();
+	/** Returns number of occlusion query culled nodes.
+	*/
+	unsigned int GetNumQueryCulledNodes();
 
 protected:
@@ -29,6 +43,6 @@
 	unsigned int mNumQueryCulledNodes;
 	unsigned int mNumFrustumCulledNodes;
+	unsigned int mVisibilityThreshold;
 
-	unsigned int mVisibilityThreshold;
 	HierarchyInterface *mHierarchyInterface;
 };
