diff --git a/DEMSystems/grainDEMSystem/grainFluidParticles.cpp b/DEMSystems/grainDEMSystem/grainFluidParticles.cpp
index 2ead2ec3..b70cbc05 100644
--- a/DEMSystems/grainDEMSystem/grainFluidParticles.cpp
+++ b/DEMSystems/grainDEMSystem/grainFluidParticles.cpp
@@ -67,7 +67,7 @@ bool pFlow::grainFluidParticles::beforeIteration()
 
 bool pFlow::grainFluidParticles::iterate() 
 {
-
+	const auto ti = this->TimeInfo();
 	accelerationTimer().start();
 		pFlow::grainFluidParticlesKernels::acceleration(
 			control().g(),
@@ -78,16 +78,16 @@ bool pFlow::grainFluidParticles::iterate()
 			contactTorque().deviceViewAll(),
 			fluidTorque_.deviceViewAll(),
 			pStruct().activePointsMaskDevice(),
-			accelertion().deviceViewAll(),
+			acceleration().deviceViewAll(),
 			rAcceleration().deviceViewAll()
 			);
 	accelerationTimer().end();
 	
 	intCorrectTimer().start();
 	
-		dynPointStruct().correct(this->dt(), accelertion());
+		dynPointStruct().correct(ti.dt());
 	
-		rVelIntegration().correct(this->dt(), rVelocity(), rAcceleration());
+		rVelIntegration().correct(ti.dt(), rVelocity(), rAcceleration());
 	
 	intCorrectTimer().end();
 	
diff --git a/DEMSystems/sphereDEMSystem/sphereFluidParticles.cpp b/DEMSystems/sphereDEMSystem/sphereFluidParticles.cpp
index f3ce902c..8f13fb70 100644
--- a/DEMSystems/sphereDEMSystem/sphereFluidParticles.cpp
+++ b/DEMSystems/sphereDEMSystem/sphereFluidParticles.cpp
@@ -65,7 +65,7 @@ bool pFlow::sphereFluidParticles::beforeIteration()
 
 bool pFlow::sphereFluidParticles::iterate() 
 {
-
+	const auto ti = this->TimeInfo();
 	accelerationTimer().start();
 		pFlow::sphereFluidParticlesKernels::acceleration(
 			control().g(),
@@ -76,16 +76,16 @@ bool pFlow::sphereFluidParticles::iterate()
 			contactTorque().deviceViewAll(),
 			fluidTorque_.deviceViewAll(),
 			pStruct().activePointsMaskDevice(),
-			accelertion().deviceViewAll(),
+			acceleration().deviceViewAll(),
 			rAcceleration().deviceViewAll()
 			);
 	accelerationTimer().end();
 	
 	intCorrectTimer().start();
 	
-		dynPointStruct().correct(this->dt(), accelertion());
+		dynPointStruct().correct(ti.dt());
 	
-		rVelIntegration().correct(this->dt(), rVelocity(), rAcceleration());
+		rVelIntegration().correct(ti.dt(), rVelocity(), rAcceleration());
 	
 	intCorrectTimer().end();
 	
diff --git a/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp b/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp
index 54af527c..0768a2e8 100644
--- a/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp
+++ b/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp
@@ -114,8 +114,11 @@ pFlow::AdamsBashforth2::AdamsBashforth2
 		zero3,
 		zero3
 	),
+	initialValField_(initialValField),
 	boundaryList_(pStruct, method, *this)
-{}
+{
+	realx3PointField_D::addEvent(message::ITEMS_INSERT);
+}
 
 void pFlow::AdamsBashforth2::updateBoundariesSlaveToMasterIfRequested()
 {
@@ -186,11 +189,21 @@ bool pFlow::AdamsBashforth2::correctPStruct(
 	return success;
 }
 
-
-bool pFlow::AdamsBashforth2::setInitialVals(
-	const int32IndexContainer& newIndices,
-	const realx3Vector& y)
+bool pFlow::AdamsBashforth2::hearChanges
+(
+	const timeInfo &ti, 
+	const message &msg, 
+	const anyList &varList
+)
 {
-	return true;
+	if(msg.equivalentTo(message::ITEMS_INSERT))
+	{
+		
+		return insertValues(varList, initialValField_.deviceViewAll(), dy1());
+	}
+	else
+	{
+		return realx3PointField_D::hearChanges(ti, msg, varList);
+	}
+    
 }
-
diff --git a/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp b/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp
index 91b5902b..f3d164db 100644
--- a/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp
+++ b/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp
@@ -41,6 +41,8 @@ class AdamsBashforth2
 {
 private:
 
+	const realx3Field_D& initialValField_;
+
 	boundaryIntegrationList boundaryList_;
 
 	friend class processorAB2BoundaryIntegration;
@@ -57,6 +59,11 @@ protected:
 		return static_cast<realx3PointField_D&>(*this);
 	}
 
+	auto& initialValField()
+	{
+		return initialValField_;
+	}
+
 	boundaryIntegrationList& boundaryList()
 	{
 		return boundaryList_;
@@ -116,25 +123,13 @@ public:
 			real dt, 
 			pointStructure& pStruct, 
 			realx3PointField_D& vel) override;
-			
 		
-		/*bool hearChanges
+		bool hearChanges
 		(
-			real t,
-			real dt,
-			uint32 iter,
+			const timeInfo& ti,
 			const message& msg, 
 			const anyList& varList
-		) override;*/
-
-		bool setInitialVals(
-			const int32IndexContainer& newIndices,
-			const realx3Vector& y) override;
-
-		bool needSetInitialVals()const override
-		{
-			return false;
-		}
+		) override;
 
 };
 
diff --git a/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp b/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp
index e8198512..57875eac 100644
--- a/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp
+++ b/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp
@@ -184,35 +184,20 @@ bool pFlow::AdamsBashforth3::correctPStruct(
 	return success;
 }
 
-
-bool pFlow::AdamsBashforth3::setInitialVals(
-	const int32IndexContainer& newIndices,
-	const realx3Vector& y)
+bool pFlow::AdamsBashforth3::hearChanges
+(
+	const timeInfo &ti, 
+	const message &msg, 
+	const anyList &varList
+)
 {
-	return true;
+	if(msg.equivalentTo(message::ITEMS_INSERT))
+	{
+		return insertValues(varList, initialValField().deviceViewAll(), dy1()) &&
+		insertValues(varList, initialValField().deviceViewAll(), dy2());
+	}
+	else
+	{
+		return realx3PointField_D::hearChanges(ti, msg, varList);
+	}
 }
-
-/*bool pFlow::AdamsBashforth3::intAll(
-	real dt, 
-	realx3Vector_D& y, 
-	realx3Vector_D& dy, 
-	range activeRng)
-{
-	auto d_dy = dy.deviceViewAll();
-	auto d_y  = y.deviceViewAll();
-	auto d_history = history_.deviceViewAll();
-
-	Kokkos::parallel_for(
-		"AdamsBashforth3::correct",
-		rpIntegration (activeRng.first, activeRng.second),
-		LAMBDA_HD(int32 i){
-			auto ldy = d_dy[i];
-			d_y[i] += dt*( static_cast<real>(23.0 / 12.0) * ldy 
-				- static_cast<real>(16.0 / 12.0) * d_history[i].dy1_ 
-				+ static_cast<real>(5.0 / 12.0) * d_history[i].dy2_);
-			d_history[i] = {ldy ,d_history[i].dy1_};
-		});
-	Kokkos::fence();
-
-	return true;	
-}*/
\ No newline at end of file
diff --git a/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp b/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp
index e9f71c69..f9e366ff 100644
--- a/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp
+++ b/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp
@@ -108,23 +108,12 @@ public:
 			realx3PointField_D& vel) override;
 			
 		
-		/*bool hearChanges
+		bool hearChanges
 		(
-			real t,
-			real dt,
-			uint32 iter,
+			const timeInfo& ti,
 			const message& msg, 
 			const anyList& varList
-		) override;*/
-
-		bool setInitialVals(
-			const int32IndexContainer& newIndices,
-			const realx3Vector& y) override;
-
-		bool needSetInitialVals()const override
-		{
-			return false;
-		}
+		) override;
 
 };
 
diff --git a/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp b/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp
index b6cc481b..6d881a94 100644
--- a/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp
+++ b/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp
@@ -190,40 +190,21 @@ bool pFlow::AdamsBashforth4::correctPStruct(
 	return success;
 }
 
-bool pFlow::AdamsBashforth4::setInitialVals(
-	const int32IndexContainer& newIndices,
-	const realx3Vector& y)
+bool pFlow::AdamsBashforth4::hearChanges
+(
+	const timeInfo &ti, 
+	const message &msg, 
+	const anyList &varList
+)
 {
-	return true;
+	if(msg.equivalentTo(message::ITEMS_INSERT))
+	{
+		return insertValues(varList, initialValField().deviceViewAll(), dy1()) &&
+		insertValues(varList, initialValField().deviceViewAll(), dy2()) && 
+		insertValues(varList, initialValField().deviceViewAll(), dy3());
+	}
+	else
+	{
+		return realx3PointField_D::hearChanges(ti, msg, varList);
+	}
 }
-
-/*bool pFlow::AdamsBashforth4::intAll(
-	real dt, 
-	realx3Vector_D& y, 
-	realx3Vector_D& dy, 
-	range activeRng)
-{
-	auto d_dy = dy.deviceViewAll();
-	auto d_y  = y.deviceViewAll();
-	auto d_history = history_.deviceViewAll();
-
-	Kokkos::parallel_for(
-		"AdamsBashforth4::correct",
-		rpIntegration (activeRng.first, activeRng.second),
-		LAMBDA_HD(int32 i){				
-			d_y[i] += dt*( 
-						static_cast<real>(55.0 / 24.0) * d_dy[i]
-					- static_cast<real>(59.0 / 24.0) * d_history[i].dy1_ 
-					+ static_cast<real>(37.0 / 24.0) * d_history[i].dy2_
-					- static_cast<real>( 9.0 / 24.0) * d_history[i].dy3_
-					);
-			d_history[i].dy3_ = d_history[i].dy2_;
-			d_history[i].dy2_ = d_history[i].dy1_;
-			d_history[i].dy1_ = d_dy[i];
-			
-
-		});
-	Kokkos::fence();
-
-	return true;	
-}*/
\ No newline at end of file
diff --git a/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp b/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp
index 32d82c22..fa877357 100644
--- a/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp
+++ b/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp
@@ -103,17 +103,13 @@ public:
 			real dt, 
 			pointStructure& pStruct, 
 			realx3PointField_D& vel) override;
-
-		bool setInitialVals(
-			const int32IndexContainer& newIndices,
-			const realx3Vector& y) override;
-
-		bool needSetInitialVals()const override
-		{
-			return false;
-		}
-
 		
+		bool hearChanges
+		(
+			const timeInfo& ti,
+			const message& msg, 
+			const anyList& varList
+		) override;
 
 };
 
diff --git a/src/Integration/boundaries/boundaryIntegration.hpp b/src/Integration/boundaries/boundaryIntegration.hpp
index d50e6016..d7aa4d39 100644
--- a/src/Integration/boundaries/boundaryIntegration.hpp
+++ b/src/Integration/boundaries/boundaryIntegration.hpp
@@ -51,9 +51,7 @@ public:
     );
 
     bool hearChanges(
-        real t,
-        real dt,
-        uint32 iter,
+        const timeInfo& ti,
         const message &msg,
         const anyList &varList) override
     {
diff --git a/src/Integration/integration/integration.cpp b/src/Integration/integration/integration.cpp
index f3126e1e..d9fc8ba8 100644
--- a/src/Integration/integration/integration.cpp
+++ b/src/Integration/integration/integration.cpp
@@ -22,17 +22,39 @@ Licence:
 #include "pointStructure.hpp"
 #include "repository.hpp"
 
-pFlow::integration::integration
+bool pFlow::integration::insertValues
 (
-	const word& baseName,
-	pointStructure& pStruct,
-	const word&,
-	const realx3Field_D&
+	const anyList& varList, 
+	const deviceViewType1D<realx3>& srcVals,
+	realx3PointField_D& dstFeild
 )
-:
-	owner_(*pStruct.owner()),
-	pStruct_(pStruct),
-	baseName_(baseName)	
+{
+	const word eventName = message::eventName(message::ITEMS_INSERT);
+
+	if(!varList.checkObjectType<uint32IndexContainer>(eventName))
+	{
+		fatalErrorInFunction<<"Insertion failed in integration for "<< baseName_<<
+		", variable "<< eventName <<
+		" does not exist or the type is incorrect"<<endl;
+		return false;
+	}
+
+	const auto& indices = varList.getObject<uint32IndexContainer>(
+		eventName);
+	
+	dstFeild.field().insertSetElement(indices, srcVals);
+
+    return true;
+}
+
+pFlow::integration::integration(
+    const word &baseName,
+    pointStructure &pStruct,
+    const word &,
+    const realx3Field_D &)
+    : owner_(*pStruct.owner()),
+      pStruct_(pStruct),
+      baseName_(baseName)
 {}
 
 
diff --git a/src/Integration/integration/integration.hpp b/src/Integration/integration/integration.hpp
index 94f91f70..fb0d84df 100644
--- a/src/Integration/integration/integration.hpp
+++ b/src/Integration/integration/integration.hpp
@@ -63,6 +63,13 @@ private:
 		/// The base name for integration 
 		const word baseName_;
 
+protected:
+
+	bool insertValues(
+		const anyList& varList, 
+		const deviceViewType1D<realx3>& srcVals,
+		realx3PointField_D& dstFeild);
+
 public:
 
 	/// Type info
@@ -151,17 +158,6 @@ public:
 		virtual 
 		bool correctPStruct(real dt, pointStructure& pStruct, realx3PointField_D& vel) = 0;
 
-		/// Set the initial values for new indices 
-		virtual 
-		bool setInitialVals(
-				const int32IndexContainer& newIndices,
-				const realx3Vector& y) = 0;
-
-		/// Check if the method requires any set initial vals
-		virtual 
-		bool needSetInitialVals()const = 0;
-
-
 	/// Create the polymorphic object based on inputs
 	static
 		uniquePtr<integration> create(
diff --git a/src/Interaction/contactSearch/boundaries/boundaryContactSearch/boundaryContactSearch.hpp b/src/Interaction/contactSearch/boundaries/boundaryContactSearch/boundaryContactSearch.hpp
index 04c07080..9395d939 100644
--- a/src/Interaction/contactSearch/boundaries/boundaryContactSearch/boundaryContactSearch.hpp
+++ b/src/Interaction/contactSearch/boundaries/boundaryContactSearch/boundaryContactSearch.hpp
@@ -73,9 +73,7 @@ public:
     }
 
     bool hearChanges(
-        real t,
-        real dt,
-        uint32 iter,
+        const timeInfo& ti,
         const message &msg,
         const anyList &varList) override
     {
@@ -83,8 +81,10 @@ public:
         if (msg.equivalentTo(message::BNDR_RESET))
         {
             // do nothing
+            return true;
         }
-        return true;
+        fatalErrorInFunction;
+        return false;
     }
 
     virtual bool broadSearch(
diff --git a/src/Interaction/grainInteraction/boundaries/boundaryGrainInteraction/boundaryGrainInteraction.hpp b/src/Interaction/grainInteraction/boundaries/boundaryGrainInteraction/boundaryGrainInteraction.hpp
index 91b113f0..e024c62a 100644
--- a/src/Interaction/grainInteraction/boundaries/boundaryGrainInteraction/boundaryGrainInteraction.hpp
+++ b/src/Interaction/grainInteraction/boundaries/boundaryGrainInteraction/boundaryGrainInteraction.hpp
@@ -154,18 +154,17 @@ public:
 
 	bool hearChanges
 	(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
     	const anyList& varList
 	) override
     {
-		
-		pOutput<<"Function (hearChanges in boundarySphereInteractions)is not implmented Message "<<
-		 msg <<endl<<" name "<< this->boundaryName() <<" type "<< this->type()<<endl;;
-		//notImplementedFunction;
-		return true;
+		if(msg.equivalentTo(message::BNDR_RESET))
+		{
+			return true;
+		}
+		fatalErrorInFunction<<"Event "<< msg.eventNames() << " is not handled !"<<endl;
+		return false;
 	}
 
 	bool isActive()const override
diff --git a/src/Interaction/grainInteraction/grainInteraction/grainInteraction.cpp b/src/Interaction/grainInteraction/grainInteraction/grainInteraction.cpp
index 65c84a77..26b8ac9b 100644
--- a/src/Interaction/grainInteraction/grainInteraction/grainInteraction.cpp
+++ b/src/Interaction/grainInteraction/grainInteraction/grainInteraction.cpp
@@ -344,16 +344,12 @@ bool pFlow::grainInteraction<cFM,gMM, cLT>::afterIteration()
 template<typename cFM,typename gMM,template <class, class, class> class cLT>
 bool pFlow::grainInteraction<cFM,gMM, cLT>::hearChanges
 (
-	real t,
-	real dt,
-	uint32 iter,
+	const timeInfo& ti,
 	const message& msg, 
 	const anyList& varList
 )
 {
-	if(msg.equivalentTo(message::ITEM_REARRANGE))
-	{
-		notImplementedFunction;
-	}
-	return true;
+	fatalErrorInFunction<<"Event "<< msg.eventNames()<<
+	" is not handled in grainInteraction"<<endl;
+	return false;
 }
\ No newline at end of file
diff --git a/src/Interaction/grainInteraction/grainInteraction/grainInteraction.hpp b/src/Interaction/grainInteraction/grainInteraction/grainInteraction.hpp
index 2d30165b..adcfbecd 100644
--- a/src/Interaction/grainInteraction/grainInteraction/grainInteraction.hpp
+++ b/src/Interaction/grainInteraction/grainInteraction/grainInteraction.hpp
@@ -152,9 +152,7 @@ public:
 
 	/// Check for changes in the point structures. (overriden from observer)
 	bool hearChanges(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
 		const anyList& varList)override;
 	
diff --git a/src/Interaction/interaction/interaction.hpp b/src/Interaction/interaction/interaction.hpp
index a2a4e1f3..afb10ea0 100644
--- a/src/Interaction/interaction/interaction.hpp
+++ b/src/Interaction/interaction/interaction.hpp
@@ -51,7 +51,7 @@ private:
 	const geometry& 	geometry_;
 
 	static inline
-	const message msg_ = message::ITEM_REARRANGE;
+	const message msg_ = message::ITEMS_REARRANGE;
 
 public:
 
diff --git a/src/Interaction/sphereInteraction/boundaries/boundarySphereInteraction/boundarySphereInteraction.hpp b/src/Interaction/sphereInteraction/boundaries/boundarySphereInteraction/boundarySphereInteraction.hpp
index 1a5984ee..221d09c4 100644
--- a/src/Interaction/sphereInteraction/boundaries/boundarySphereInteraction/boundarySphereInteraction.hpp
+++ b/src/Interaction/sphereInteraction/boundaries/boundarySphereInteraction/boundarySphereInteraction.hpp
@@ -148,7 +148,7 @@ public:
 		const ContactForceModel& cfModel,
 		uint32 step)
 	{
-		// for default boundary, no thing to be done 
+		// for default boundary, nothing to be done 
 		return false;
 	}
 
@@ -156,16 +156,14 @@ public:
 
 	bool hearChanges
 	(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
     	const anyList& varList
 	) override
     {
 		
 		pOutput<<"Function (hearChanges in boundarySphereInteractions)is not implmented Message "<<
-		 msg <<endl<<" name "<< this->boundaryName() <<" type "<< this->type()<<endl;;
+		 msg <<endl<<" name "<< this->boundaryName() <<" type "<< this->type()<<endl;
 		//notImplementedFunction;
 		return true;
 	}
diff --git a/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.cpp b/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.cpp
index ef673948..cd362c66 100644
--- a/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.cpp
+++ b/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.cpp
@@ -351,16 +351,18 @@ bool pFlow::sphereInteraction<cFM,gMM, cLT>::afterIteration()
 template<typename cFM,typename gMM,template <class, class, class> class cLT>
 bool pFlow::sphereInteraction<cFM,gMM, cLT>::hearChanges
 (
-	real t,
-	real dt,
-	uint32 iter,
+	const timeInfo& ti,
 	const message& msg, 
 	const anyList& varList
 )
 {
-	if(msg.equivalentTo(message::ITEM_REARRANGE))
+	if(msg.equivalentTo(message::ITEMS_REARRANGE))
 	{
 		notImplementedFunction;
+		return false;
 	}
-	return true;
+	
+	fatalErrorInFunction<<"Event "<< msg.eventNames()<<
+	" is not handled in sphereInteraction"<<endl;
+	return false;
 }
\ No newline at end of file
diff --git a/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.hpp b/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.hpp
index 472ba519..64fab1b4 100644
--- a/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.hpp
+++ b/src/Interaction/sphereInteraction/sphereInteraction/sphereInteraction.hpp
@@ -152,9 +152,7 @@ public:
 
 	/// Check for changes in the point structures. (overriden from observer)
 	bool hearChanges(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
 		const anyList& varList)override;
 	
diff --git a/src/Particles/GrainParticles/boundaryGrainParticles.hpp b/src/Particles/GrainParticles/boundaryGrainParticles.hpp
index 47b75590..ab6bd7d1 100644
--- a/src/Particles/GrainParticles/boundaryGrainParticles.hpp
+++ b/src/Particles/GrainParticles/boundaryGrainParticles.hpp
@@ -50,9 +50,7 @@ public:
     const grainParticles& Particles()const;
 
     bool hearChanges(
-        real t,
-        real dt,
-        uint32 iter,
+        const timeInfo& ti,
         const message &msg,
         const anyList &varList) override
     {
diff --git a/src/Particles/GrainParticles/grainParticles/grainParticles.cpp b/src/Particles/GrainParticles/grainParticles/grainParticles.cpp
index dc75962e..93e8312b 100644
--- a/src/Particles/GrainParticles/grainParticles/grainParticles.cpp
+++ b/src/Particles/GrainParticles/grainParticles/grainParticles.cpp
@@ -248,7 +248,7 @@ pFlow::grainParticles::grainParticles(
 			"rVelocity",
 			dynPointStruct(),
 			intMethod,
-			rVelocity_.field()
+			rAcceleration_.field()
 		);
 
 	if( !rVelIntegration_ )
@@ -275,7 +275,7 @@ bool pFlow::grainParticles::beforeIteration()
 	particles::beforeIteration();
 	intPredictTimer_.start();
 		auto dt = this->dt();
-		dynPointStruct().predict(dt, accelertion());
+		dynPointStruct().predict(dt);
 		rVelIntegration_().predict(dt,rVelocity_, rAcceleration_);
 	intPredictTimer_.end();
 
@@ -296,8 +296,8 @@ bool pFlow::grainParticles::beforeIteration()
 bool pFlow::grainParticles::iterate() 
 {
 
-	timeInfo ti = TimeInfo();
-	realx3 g = control().g();
+	const timeInfo ti = TimeInfo();
+	const realx3 g = control().g();
 
 	particles::iterate();
 	accelerationTimer_.start();
@@ -308,7 +308,7 @@ bool pFlow::grainParticles::iterate()
 			I().deviceViewAll(),
 			contactTorque().deviceViewAll(),
 			dynPointStruct().activePointsMaskDevice(),
-			accelertion().deviceViewAll(),
+			acceleration().deviceViewAll(),
 			rAcceleration().deviceViewAll()
 			);
 		
@@ -320,12 +320,12 @@ bool pFlow::grainParticles::iterate()
 	
 	intCorrectTimer_.start();
 	
-		if(!dynPointStruct().correct(dt(), accelertion()))
+		if(!dynPointStruct().correct(ti.dt()))
 		{
 			return false;
 		}
 		if(!rVelIntegration_().correct(
-			dt(), 
+			ti.dt(), 
 			rVelocity_, 
 			rAcceleration_))
 		{
diff --git a/src/Particles/GrainParticles/grainParticles/grainParticles.hpp b/src/Particles/GrainParticles/grainParticles/grainParticles.hpp
index 4d8e3fa7..3c7c1efe 100644
--- a/src/Particles/GrainParticles/grainParticles/grainParticles.hpp
+++ b/src/Particles/GrainParticles/grainParticles/grainParticles.hpp
@@ -172,9 +172,7 @@ public:
 	}
 
 	bool hearChanges(
-	  real           t,
-	  real           dt,
-	  uint32         iter,
+	  const timeInfo& ti,
 	  const message& msg,
 	  const anyList& varList
 	) override
diff --git a/src/Particles/SphereParticles/boundarySphereParticles.hpp b/src/Particles/SphereParticles/boundarySphereParticles.hpp
index 7e379e94..b49aa393 100644
--- a/src/Particles/SphereParticles/boundarySphereParticles.hpp
+++ b/src/Particles/SphereParticles/boundarySphereParticles.hpp
@@ -50,9 +50,7 @@ public:
     const sphereParticles& Particles()const;
 
     bool hearChanges(
-        real t,
-        real dt,
-        uint32 iter,
+        const timeInfo& ti,
         const message &msg,
         const anyList &varList) override
     {
diff --git a/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp b/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp
index 39ede64f..744fd97d 100644
--- a/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp
+++ b/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp
@@ -24,180 +24,6 @@ Licence:
 #include "sphereParticlesKernels.hpp"
 
 
-//#include "setFieldList.hpp"
-/*pFlow::uniquePtr<pFlow::List<pFlow::eventObserver*>> 
-pFlow::sphereParticles::getFieldObjectList()const
-{
-	auto objListPtr = particles::getFieldObjectList();
-
-	objListPtr().push_back(
-		static_cast<eventObserver*>(&I_) );
-
-	return objListPtr;
-}
-
-bool pFlow::sphereParticles::diameterMassInertiaPropId
-(
-	const word& shName,
-	real& diam,
-	real& mass,
-	real& I,
-	int8& propIdx
-)
-{
-	uint32 idx;
-	if( !shapes_.nameToIndex(shName, idx) )
-	{
-		printKeys(fatalErrorInFunction<<
-		"  wrong shape name in the input: "<< shName<<endl<<
-		"  available shape names are: ", shapes_.names())<<endl;
-		return false;
-	}
-
-	diam = shapes_.diameter(idx);
-	word materialName = shapes_.material(idx);
-	uint32 pIdx;
-	if( !property_.nameToIndex(materialName, pIdx) )
-	{
-		fatalErrorInFunction << 
-		"  wrong material name "<< materialName <<" specified for shape "<< shName<<
-		"  in the sphereShape dictionary.\n"<<
-		"  available materials are "<< property_.materials()<<endl;
-		return false;
-	}
-	real rho = property_.density(pIdx);
-
-	mass = Pi/6.0*pow(diam,3.0)*rho;
-	I = 0.4 * mass * pow(diam/2.0,2.0);
-	propIdx= static_cast<int8>(pIdx);
-	return true;
-}
-
-bool pFlow::sphereParticles::initializeParticles()
-{
-	
-	int32IndexContainer indices(
-		0, 
-		static_cast<int32>(shapeName_.size()));
-	
-	return insertSphereParticles(shapeName_, indices, false);
-}*/
-
-
-/*bool pFlow::sphereParticles::beforeIteration() 
-{
-	particles::beforeIteration();
-	
-	intPredictTimer_.start();
-	
-	//INFO<<"before dyn predict"<<endINFO;
-		dynPointStruct_.predict(this->dt(), accelertion_);
-	//INFO<<"after dyn predict"<<endINFO;
-
-	//INFO<<"before revel predict"<<endINFO;
-		rVelIntegration_().predict(this->dt(),rVelocity_, rAcceleration_);
-	//INFO<<"after rvel predict"<<endINFO;
-
-	intPredictTimer_.end();
-
-	return true;
-}*/
-
-
-
-
-
-/*bool pFlow::sphereParticles::afterIteration() 
-{
-	return true;
-}*/
-
-
-/*bool pFlow::sphereParticles::insertSphereParticles(
-	const wordVector& names,
-	const int32IndexContainer& indices,
-	bool setId
-	)
-{
-
-	if(names.size()!= indices.size())
-	{
-		fatalErrorInFunction <<
-		"sizes of names ("<<names.size()<<") and indices ("
-			<< indices.size()<<") do not match \n";
-		return false;
-	}
-
-	auto len = names.size();
-		
-	realVector  diamVec(len, RESERVE());
-	realVector  massVec(len, RESERVE());
-	realVector  IVec(len, RESERVE());
-	int8Vector  pIdVec(len, RESERVE());
-	int32Vector IdVec(len, RESERVE());
-
-	real d, m, I;
-	int8 pId;
-
-	ForAll(i, names )
-	{
-		
-		if (diameterMassInertiaPropId(names[i], d, m, I, pId))
-		{
-			diamVec.push_back(d);
-			massVec.push_back(m);
-			IVec.push_back(I);
-			pIdVec.push_back(pId);
-			if(setId) IdVec.push_back(idHandler_.getNextId());
-			//output<<" we are in sphereParticles nextId "<< idHandler_.nextId()<<endl;
-		}
-		else
-		{
-			fatalErrorInFunction<< "failed to calculate properties of shape " <<
-			 names[i]<<endl;
-			return false;
-		}
-		
-	}
-
-	if(!diameter_.insertSetElement(indices, diamVec))
-	{
-		fatalErrorInFunction<< " failed to insert diameters to the diameter field. \n";
-		return false;
-	}
-
-	if(!mass_.insertSetElement(indices, massVec))
-	{
-		fatalErrorInFunction<< " failed to insert mass to the mass field. \n";
-		return false;
-	}
-
-	if(!I_.insertSetElement(indices, IVec))
-	{
-		fatalErrorInFunction<< " failed to insert I to the I field. \n";
-		return false;
-	}
-
-	if(!propertyId_.insertSetElement(indices, pIdVec))
-	{
-		fatalErrorInFunction<< " failed to insert propertyId to the propertyId field. \n";
-		return false;
-	}
-
-	if(setId)
-	{
-		if( !id_.insertSetElement(indices, IdVec))
-		{
-			fatalErrorInFunction<< " failed to insert id to the id field. \n";
-			return false;
-		}	
-	}
-	
-
-	return true;
-
-}*/
-
 bool pFlow::sphereParticles::initializeParticles()
 {
 	
@@ -403,7 +229,7 @@ pFlow::sphereParticles::sphereParticles(
 			"rVelocity",
 			dynPointStruct(),
 			intMethod,
-			rVelocity_.field()
+			rAcceleration_.field()
 		);
 
 	if( !rVelIntegration_ )
@@ -413,8 +239,6 @@ pFlow::sphereParticles::sphereParticles(
 		fatalExit;
 	}
 
-	WARNING<<"setFields for rVelIntegration_"<<END_WARNING;
-	
 	if(!initializeParticles())
 	{
 		fatalErrorInFunction;
@@ -423,96 +247,12 @@ pFlow::sphereParticles::sphereParticles(
 	
 } 
 
-/*bool pFlow::sphereParticles::update(const eventMessage& msg) 
-{
-	
-	if(rVelIntegration_->needSetInitialVals())
-	{
-		
-		
-		auto indexHD = pStruct().insertedPointIndex();
-	
-		auto n = indexHD.size();
-		auto index = indexHD.indicesHost();
-
-		realx3Vector rvel(n,RESERVE());
-		const auto hrVel = rVelocity_.hostView();
-
-		for(auto i=0; i<n; i++)
-		{
-			rvel.push_back( hrVel[index(i)]);
-		}
-		
-		rVelIntegration_->setInitialVals(indexHD, rvel);
-
-	}	
-
-	return true;
-}*/
-
-/*bool pFlow::sphereParticles::insertParticles
-(
-	const realx3Vector& position,
- 	const wordVector&  shapes,
- 	const setFieldList& setField
- )
-{
-	
-	if( position.size() != shapes.size() )
-	{
-		fatalErrorInFunction<< 
-		"  size of vectors position ("<<position.size()<<
-		") and shapes ("<<shapes.size()<<") are not the same. \n";
-		return false;
-	}
-
-
-
-	auto exclusionListAllPtr = getFieldObjectList(); 
-	
-	auto newInsertedPtr = pStruct().insertPoints( position, setField, time(), exclusionListAllPtr());
-	
-
-	if(!newInsertedPtr)
-	{
-		fatalErrorInFunction<<
-		"  error in inserting points into pStruct. \n";
-		return false;
-	}
-
-	auto& newInserted = newInsertedPtr();
-	
-	if(!shapeName_.insertSetElement(newInserted, shapes))
-	{
-		fatalErrorInFunction<<
-		"  error in inserting shapes into sphereParticles system.\n";
-		return false;
-	}	
-
-	if( !insertSphereParticles(shapes, newInserted) )
-	{
-		fatalErrorInFunction<< 
-		"error in inserting shapes into the sphereParticles. \n";
-		return false;
-	}
-	
-
-	auto activeR = this->activeRange();
-
-	REPORT(1)<< "Active range is "<<yellowText("["<<activeR.first<<", "<<activeR.second<<")")<<
-	" and number of active points is "<< cyanText(this->numActive())<<
-	" and pointStructure capacity is "<<cyanText(this->capacity())<<endREPORT;
-
-	return true;
-		
-}*/
-
 bool pFlow::sphereParticles::beforeIteration()
 {
 	particles::beforeIteration();
 	intPredictTimer_.start();
 		auto dt = this->dt();
-		dynPointStruct().predict(dt, accelertion());
+		dynPointStruct().predict(dt);
 		rVelIntegration_().predict(dt,rVelocity_, rAcceleration_);
 	intPredictTimer_.end();
 
@@ -532,8 +272,8 @@ bool pFlow::sphereParticles::beforeIteration()
 bool pFlow::sphereParticles::iterate() 
 {
 
-	timeInfo ti = TimeInfo();
-	realx3 g = control().g();
+	const timeInfo ti = TimeInfo();
+	const realx3 g = control().g();
 
 	particles::iterate();
 	accelerationTimer_.start();
@@ -544,7 +284,7 @@ bool pFlow::sphereParticles::iterate()
 			I().deviceViewAll(),
 			contactTorque().deviceViewAll(),
 			dynPointStruct().activePointsMaskDevice(),
-			accelertion().deviceViewAll(),
+			acceleration().deviceViewAll(),
 			rAcceleration().deviceViewAll()
 			);
 		ForAllActiveBoundaries(i,boundarySphereParticles_)
@@ -556,7 +296,7 @@ bool pFlow::sphereParticles::iterate()
 	
 	intCorrectTimer_.start();
 	
-		if(!dynPointStruct().correct(dt(), accelertion()))
+		if(!dynPointStruct().correct(ti.dt()))
 		{
 			return false;
 		}
diff --git a/src/Particles/SphereParticles/sphereParticles/sphereParticles.hpp b/src/Particles/SphereParticles/sphereParticles/sphereParticles.hpp
index 6453f962..5f2eac52 100644
--- a/src/Particles/SphereParticles/sphereParticles/sphereParticles.hpp
+++ b/src/Particles/SphereParticles/sphereParticles/sphereParticles.hpp
@@ -175,9 +175,7 @@ public:
 	}
 
 	bool hearChanges(
-	  real           t,
-	  real           dt,
-	  uint32         iter,
+	  const timeInfo& ti,
 	  const message& msg,
 	  const anyList& varList
 	) override
diff --git a/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp b/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp
index b6e52b2c..8d7489c9 100644
--- a/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp
+++ b/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp
@@ -40,6 +40,16 @@ pFlow::dynamicPointStructure::dynamicPointStructure
 		*this,
 		zero3
 	),
+	acceleration_(
+      objectFile(
+        "acceleration",
+        "",
+        objectFile::READ_IF_PRESENT,
+        objectFile::WRITE_ALWAYS
+      ),
+      *this,
+      zero3
+    ),
 	velocityUpdateTimer_("velocity boundary update", &timers()),
 	integrationMethod_
 	(
@@ -54,7 +64,7 @@ pFlow::dynamicPointStructure::dynamicPointStructure
 		"pStructPosition",
 		*this,
 		integrationMethod_,
-		pointPosition()
+		velocity_.field()
 	);
 
 	if( !integrationPos_ )
@@ -69,7 +79,7 @@ pFlow::dynamicPointStructure::dynamicPointStructure
 		"pStructVelocity",
 		*this,
 		integrationMethod_,
-		velocity_.field()
+		acceleration_.field()
 	);
 
 	if( !integrationVel_ )
@@ -90,6 +100,7 @@ bool pFlow::dynamicPointStructure::beforeIteration()
 	if(!pointStructure::beforeIteration())return false;
 	velocityUpdateTimer_.start();
 	velocity_.updateBoundariesSlaveToMasterIfRequested();
+	acceleration_.updateBoundariesSlaveToMasterIfRequested();
 	integrationPos_->updateBoundariesSlaveToMasterIfRequested();
 	integrationVel_->updateBoundariesSlaveToMasterIfRequested();
 	velocityUpdateTimer_.end();
@@ -116,29 +127,21 @@ bool pFlow::dynamicPointStructure::afterIteration()
 		return succs;
 }
 
-bool pFlow::dynamicPointStructure::predict(
-    real dt,
-    realx3PointField_D &acceleration)
+bool pFlow::dynamicPointStructure::predict(real dt)
 {
 	
 	if(!integrationPos_().predict(dt, pointPosition(), velocity_ ))return false;
-	if(!integrationVel_().predict(dt, velocity_, acceleration))return false;
+	if(!integrationVel_().predict(dt, velocity_, acceleration_))return false;
 
 	return true;
 }
 
-bool pFlow::dynamicPointStructure::correct
-(
-	real dt,
-	realx3PointField_D& acceleration
-)
+bool pFlow::dynamicPointStructure::correct(real dt)
 {
-	//auto& pos = pStruct().pointPosition();
-	const auto ti = TimeInfo();
+	const auto& ti = TimeInfo();
 	
 	if(!integrationPos_().correctPStruct(dt, *this, velocity_) )return false;
-	
-	if(!integrationVel_().correct(dt, velocity_, acceleration, velDamping_().dampingFactor(ti)))return false;
+	if(!integrationVel_().correct(dt, velocity_, acceleration_, velDamping_().dampingFactor(ti)))return false;
 
 	return true;	
 }
diff --git a/src/Particles/dynamicPointStructure/dynamicPointStructure.hpp b/src/Particles/dynamicPointStructure/dynamicPointStructure.hpp
index f9559a3c..8abd66b5 100644
--- a/src/Particles/dynamicPointStructure/dynamicPointStructure.hpp
+++ b/src/Particles/dynamicPointStructure/dynamicPointStructure.hpp
@@ -42,6 +42,9 @@ private:
 
 	realx3PointField_D  	velocity_;
 
+	/// acceleration on device
+	realx3PointField_D      acceleration_;
+
 	uniquePtr<integration>  integrationPos_ = nullptr;
 
 	uniquePtr<integration>  integrationVel_ = nullptr;
@@ -86,6 +89,18 @@ public:
 		return velocity_;
 	}
 
+	inline 
+	const realx3PointField_D& acceleration()const
+	{
+		return acceleration_;
+	}
+
+	inline 
+	realx3PointField_D& acceleration()
+	{
+		return acceleration_;
+	}
+
 	/// In the time loop before iterate
 	bool beforeIteration() override;
 
@@ -96,10 +111,10 @@ public:
 	bool afterIteration()override;
 	
 	/// prediction step (if any), is called in beforeIteration	
-	bool predict(real dt, realx3PointField_D& acceleration);
+	bool predict(real dt);
 
 	/// correction step, is called in iterate 
-	bool correct(real dt, realx3PointField_D& acceleration);
+	bool correct(real dt);
 
 };
 
diff --git a/src/Particles/particles/particleIdHandler/particleIdHandler.cpp b/src/Particles/particles/particleIdHandler/particleIdHandler.cpp
index 5288e156..1f45bdf8 100644
--- a/src/Particles/particles/particleIdHandler/particleIdHandler.cpp
+++ b/src/Particles/particles/particleIdHandler/particleIdHandler.cpp
@@ -41,16 +41,14 @@ pFlow::particleIdHandler::particleIdHandler(pointStructure& pStruct)
 
 bool
 pFlow::particleIdHandler::hearChanges(
-  real           t,
-  real           dt,
-  uint32         iter,
+  const timeInfo& ti,
   const message& msg,
   const anyList& varList
 )
 {
-	if(msg.equivalentTo(message::ITEM_INSERT))
+	if(msg.equivalentTo(message::ITEMS_INSERT))
 	{
-		const word eventName = message::eventName(message::ITEM_INSERT);
+		const word eventName = message::eventName(message::ITEMS_INSERT);
 
 		const auto& indices = varList.getObject<uint32IndexContainer>(
 			eventName);
@@ -66,7 +64,7 @@ pFlow::particleIdHandler::hearChanges(
 	}
 	else
 	{
-		return uint32PointField_D::hearChanges(t,dt,iter, msg,varList);
+		return uint32PointField_D::hearChanges(ti, msg, varList);
 	}
 }
 
diff --git a/src/Particles/particles/particleIdHandler/particleIdHandler.hpp b/src/Particles/particles/particleIdHandler/particleIdHandler.hpp
index 836e0141..a70988c6 100644
--- a/src/Particles/particles/particleIdHandler/particleIdHandler.hpp
+++ b/src/Particles/particles/particleIdHandler/particleIdHandler.hpp
@@ -60,15 +60,11 @@ public:
 	virtual 
 	uint32 maxId()const = 0;
 
-	
-
 	// heat change for possible insertion of particles
 	// overrdie from internalField
 	bool hearChanges
 	(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
 		const anyList& varList
 	) override;
diff --git a/src/Particles/particles/particles.cpp b/src/Particles/particles/particles.cpp
index 22e1c77e..4c50cc53 100644
--- a/src/Particles/particles/particles.cpp
+++ b/src/Particles/particles/particles.cpp
@@ -34,16 +34,6 @@ pFlow::particles::particles(systemControl& control, const shape& shapes)
       dynPointStruct_,
       0
     ),
-    accelertion_(
-      objectFile(
-        "accelertion",
-        "",
-        objectFile::READ_IF_PRESENT,
-        objectFile::WRITE_ALWAYS
-      ),
-      dynPointStruct_,
-      zero3
-    ),
     contactForce_(
       objectFile(
         "contactForce",
@@ -84,7 +74,6 @@ pFlow::particles::beforeIteration()
 	zeroTorque();
   baseFieldBoundaryUpdateTimer_.start();
   shapeIndex_.updateBoundariesSlaveToMasterIfRequested();
-  accelertion_.updateBoundariesSlaveToMasterIfRequested();
   idHandler_().updateBoundariesSlaveToMasterIfRequested();
   baseFieldBoundaryUpdateTimer_.end();
   return true;
diff --git a/src/Particles/particles/particles.hpp b/src/Particles/particles/particles.hpp
index 675604b9..2e7b508e 100644
--- a/src/Particles/particles/particles.hpp
+++ b/src/Particles/particles/particles.hpp
@@ -45,9 +45,6 @@ private:
 	/// shape index of each particle 
 	uint32PointField_D           shapeIndex_;
 
-	/// acceleration on device
-	realx3PointField_D           accelertion_;
-
 	/// contact force field
 	realx3PointField_D           contactForce_;
 
@@ -60,7 +57,7 @@ private:
 	Timer 						 baseFieldBoundaryUpdateTimer_;
 
 	/// messages for this objects
-	static inline const message  defaultMessage_{ message::DEFAULT };
+	static inline const message  defaultMessage_= message::Empty();
 
 protected:
 
@@ -156,14 +153,14 @@ public:
 		return dynPointStruct_.velocity();
 	}
 
-	inline const auto& accelertion() const
+	inline const auto& acceleration() const
 	{
-		return accelertion_;
+		return dynPointStruct_.acceleration();
 	}
 
-	inline auto& accelertion()
+	inline auto& acceleration()
 	{
-		return accelertion_;
+		return dynPointStruct_.acceleration();
 	}
 
 	inline auto& contactForce()
diff --git a/src/phasicFlow/containers/List/anyList/anyList.hpp b/src/phasicFlow/containers/List/anyList/anyList.hpp
index c8abef63..0b655d56 100644
--- a/src/phasicFlow/containers/List/anyList/anyList.hpp
+++ b/src/phasicFlow/containers/List/anyList/anyList.hpp
@@ -53,7 +53,7 @@ private:
 	/// List of variable names in anyList_ 
 	wordList 		names_;
 
-	wordList 		types_;	
+	wordList 		types_;
 
 public:
 
@@ -162,12 +162,26 @@ public:
 			{
 				fatalErrorInFunction<<
 				"variable name "<< name << " does not exist in the anyList."<<endl<<
-				"list of variables is "<<names_<<endl;
+				"list of variables is \n"<<names_<<endl;
 				fatalExit;
 			}
 			return getObject<T>(static_cast<size_t>(i));
 		}
 
+		template<typename T>
+		bool checkObjectType(const word& name)const
+		{
+			int32 i = names_.findi(name);
+			if(i == -1 )
+			{
+				fatalErrorInFunction<<
+				"variable name "<< name << " does not exist in the anyList."<<endl<<
+				"list of variables is \n"<<names_<<endl;
+				return false;
+			}
+			return getTypeName<T>() != types_[i];
+		}
+
 		/// Get the const reference to variable by name 
 		template<typename T>
 		const T& getObject(const word& name)const
diff --git a/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.cpp b/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.cpp
index 1d31e39b..941d3fe0 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.cpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.cpp
@@ -34,15 +34,14 @@ pFlow::boundaryField<T, MemorySpace>::boundaryField
 		memory_space::name()
 	),
 	internal_(internal)
-{}
+{
+}
 
 template<class T, class MemorySpace>
 typename pFlow::boundaryField<T, MemorySpace>::ProcVectorType& 
 pFlow::boundaryField<T, MemorySpace>::neighborProcField()
 {
 	static ProcVectorType dummyVector{"dummyVector"};
-	//notImplementedFunction;
-	//fatalExit;
 	return dummyVector;
 }
 
@@ -51,8 +50,6 @@ const typename pFlow::boundaryField<T, MemorySpace>::ProcVectorType&
 pFlow::boundaryField<T, MemorySpace>::neighborProcField() const
 {
 	static ProcVectorType dummyVector{"dummyVector"};
-	//notImplementedFunction;
-	//fatalExit;
 	return dummyVector;
 }
 
diff --git a/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.hpp b/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.hpp
index 81809cbd..5a09932f 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.hpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/boundaryField/boundaryField.hpp
@@ -102,23 +102,21 @@ public:
 
 	bool hearChanges
 	(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
     	const anyList& varList
 	) override
     {
-		
-		if(msg.equivalentTo(message::BNDR_REARRANGE))
-		{
-			// do nothing
-		}
+
 		if(msg.equivalentTo(message::BNDR_RESET))
 		{
 			//do nothing
+			return true;
 		}
-		return true;
+
+		fatalErrorInFunction<<"Event"<< msg.eventNames()<<"with code "<< msg <<
+		" is not handled in boundaryField."<<endl;
+		return false;
 	}
 
 	inline
diff --git a/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.cpp b/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.cpp
index 8137bca9..c7bb131f 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.cpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.cpp
@@ -27,6 +27,4 @@ template<class T, class MemorySpace>
 )
 :
 	BoundaryFieldType(boundary, pStruct, internal)
-{
-	this->addEvent(message::BNDR_DELETE);
-}
\ No newline at end of file
+{}
\ No newline at end of file
diff --git a/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.hpp b/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.hpp
index eef6c266..d1015d7b 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.hpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/exitBoundaryField/exitBoundaryField.hpp
@@ -61,26 +61,6 @@ public:
 		boundaryBase
 	);
 
-
-	bool hearChanges
-	(
-		real t,
-		real dt,
-		uint32 iter,
-		const message& msg, 
-    	const anyList& varList
-	) override
-    {
-		BoundaryFieldType::hearChanges(t,dt,iter, msg,varList);
-		
-		if(msg.equivalentTo(message::BNDR_DELETE))
-		{
-			// do nothing;
-		}
-		
-		return true;
-	}
-
 	bool isActive()const override
 	{
 		return false;
diff --git a/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.cpp b/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.cpp
index 28177b23..2808b4ef 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.cpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.cpp
@@ -26,7 +26,4 @@ template<class T, class MemorySpace>
 )
 :
 	BoundaryFieldType(boundary, pStruct, internal)
-{
-	this->addEvent(message::BNDR_APPEND)
-		 .addEvent(message::BNDR_TRANSFER);
-}
\ No newline at end of file
+{}
\ No newline at end of file
diff --git a/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.hpp b/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.hpp
index 712a5a07..8d379e4b 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.hpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/periodicBoundaryField/periodicBoundaryField.hpp
@@ -61,29 +61,6 @@ public:
 		boundaryBase
 	);
 
-
-	bool hearChanges
-	(
-		real t,
-		real dt,
-		uint32 iter,
-		const message& msg, 
-    	const anyList& varList
-	) override
-    {
-		BoundaryFieldType::hearChanges(t,dt,iter, msg,varList);
-		
-		if(msg.equivalentTo(message::BNDR_APPEND))
-		{
-			// do nothing;
-		}
-		if(msg.equivalentTo(message::BNDR_TRANSFER))
-		{
-			//do nothing 
-		}
-		return true;
-	}
-
 };
 
 }
diff --git a/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.cpp b/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.cpp
index 91bcc7b5..c769fbb1 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.cpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.cpp
@@ -26,6 +26,4 @@ template<class T, class MemorySpace>
 )
 :
 	BoundaryFieldType(boundary, pStruct, internal)
-{
-	//this->addEvent(message::BNDR_DELETE);
-}
\ No newline at end of file
+{}
\ No newline at end of file
diff --git a/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.hpp b/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.hpp
index 5f6b799e..470b84d6 100644
--- a/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.hpp
+++ b/src/phasicFlow/containers/pointField/boundaryField/reflectiveBoundaryField/reflectiveBoundaryField.hpp
@@ -61,26 +61,6 @@ public:
 		boundaryBase
 	);
 
-
-	bool hearChanges
-	(
-		real t,
-		real dt,
-		uint32 iter,
-		const message& msg, 
-    	const anyList& varList
-	) override
-    {
-		BoundaryFieldType::hearChanges(t,dt,iter, msg,varList);
-		
-		if(msg.equivalentTo(message::BNDR_DELETE))
-		{
-			// do nothing;
-		}
-		
-		return true;
-	}
-
 	bool isActive()const override
 	{
 		return false;
diff --git a/src/phasicFlow/containers/pointField/internalField/internalField.cpp b/src/phasicFlow/containers/pointField/internalField/internalField.cpp
index 4b7c01e9..87ab830e 100644
--- a/src/phasicFlow/containers/pointField/internalField/internalField.cpp
+++ b/src/phasicFlow/containers/pointField/internalField/internalField.cpp
@@ -21,7 +21,14 @@ Licence:
 template<class T, class MemorySpace>
 bool pFlow::internalField<T, MemorySpace>::insert(const anyList& varList)
 {
-	const word eventName = message::eventName(message::ITEM_INSERT);
+	const word eventName = message::eventName(message::ITEMS_INSERT);
+
+	if(!varList.checkObjectType<uint32IndexContainer>(eventName))
+	{
+		fatalErrorInFunction<<"Insertion failed in internalField, "<< eventName <<
+		" does not exist or the type is incorrect"<<endl;
+		return false;
+	}
 
 	const auto& indices = varList.getObject<uint32IndexContainer>(
 		eventName);
@@ -30,14 +37,24 @@ bool pFlow::internalField<T, MemorySpace>::insert(const anyList& varList)
 	if(varList.contains(name()))
 	{
 		// a single value is assigned
+		if(!varList.checkObjectType<T>(name()))
+		{
+			fatalErrorInFunction<<"wrong type for variable "<< name()<<endl;
+			return false;
+		}
 		T val = varList.getObject<T>(name());
 		success = field_.insertSetElement(indices, val);
 		
 	}
-	else if(varList.contains(name()+"Vector"))
+	else if(word fn = name()+"Vector"; varList.contains(fn))
 	{
 		// a vector of values is going to be assigned
-		const auto& valVec = varList.getObject<Vector<T>>(name()+"Vector");
+		if(!varList.checkObjectType<Vector<T>>(fn))
+		{
+			fatalErrorInFunction<<"wrong type for variable "<< fn<<endl;
+			return false;
+		}
+		const auto& valVec = varList.getObject<Vector<T>>(fn);
 		success = field_.insertSetElement(indices,valVec);
 	}
 	else
@@ -57,8 +74,13 @@ bool pFlow::internalField<T, MemorySpace>::insert(const anyList& varList)
 template<class T, class MemorySpace>
 bool pFlow::internalField<T, MemorySpace>::rearrange(const anyList& varList)
 {
-	const word eventName = message::eventName(message::ITEM_REARRANGE);
+	const word eventName = message::eventName(message::ITEMS_REARRANGE);
 
+	if(!varList.checkObjectType<uint32IndexContainer>(eventName))
+	{
+		fatalErrorInFunction<<"Wrong type for variable "<< eventName<<endl;
+		return false;
+	}
 	const auto& indices = varList.getObject<uint32IndexContainer>(
 		eventName);
 	
@@ -162,40 +184,47 @@ typename pFlow::internalField<T, MemorySpace>::FieldTypeHost
 template <class T, class MemorySpace>
 bool pFlow::internalField<T, MemorySpace>:: hearChanges
 (
-	real t,
-	real dt,
-	uint32 iter,
+	const timeInfo& ti,
 	const message& msg, 
 	const anyList& varList
 )
 {
-	if(msg.equivalentTo(message::CAP_CHANGED))
+	if(msg.equivalentTo(message::RANGE_CHANGED))
 	{
-		auto newCap = varList.getObject<uint32>(
-			message::eventName(message::CAP_CHANGED));
+		auto varName = message::eventName(message::RANGE_CHANGED);
+		if( !varList.checkObjectType<rangeU32>(varName) )
+		{
+			fatalErrorInFunction<<"Wrong type for variable "<< varName<<endl;
+			return false;
+		}
 
-		field_.reserve(newCap);
+		auto newRange = varList.getObject<rangeU32>(varName);
+
+		if(newRange.end() > size()) 
+			field_.resize(newRange.end());
+		return true;
 	}
-	if(msg.equivalentTo(message::SIZE_CHANGED))
-	{
-		auto newSize = varList.getObject<uint32>(
-			message::eventName(message::SIZE_CHANGED));
-		field_.resize(newSize);
-	}
-	if(msg.equivalentTo(message::ITEM_DELETE))
+	else if(msg.equivalentTo(message::ITEMS_DELETE))
 	{
 		// do nothing
+		return true;
 	}
-	if(msg.equivalentTo(message::ITEM_INSERT))
+	else if(msg.equivalentTo(message::ITEMS_INSERT))
 	{
 		return insert(varList);
 	}
-	if(msg.equivalentTo(message::ITEM_REARRANGE))
+	else if(msg.equivalentTo(message::ITEMS_REARRANGE))
 	{
 		return rearrange(varList);
-
 	}
-	return true;
+	else
+	{
+		fatalErrorInFunction<<"hear changes in internal field is not processing "<< 
+		message::eventName(message::RANGE_CHANGED)<<
+		" event with message code "<< msg<<endl;
+		return false;
+	}
+	
 }
 
 template<class T, class MemorySpace>
diff --git a/src/phasicFlow/containers/pointField/internalField/internalField.hpp b/src/phasicFlow/containers/pointField/internalField/internalField.hpp
index 9b6df04b..e3ba8ef8 100644
--- a/src/phasicFlow/containers/pointField/internalField/internalField.hpp
+++ b/src/phasicFlow/containers/pointField/internalField/internalField.hpp
@@ -64,13 +64,12 @@ protected:
 	static inline
 	const message defaultMessage_ = 
 	(
-		message::CAP_CHANGED+
-		message::SIZE_CHANGED+
-		message::ITEM_INSERT+
-		message::ITEM_REARRANGE+
-		message::ITEM_DELETE
+		message::RANGE_CHANGED   +
+		message::ITEMS_INSERT    +
+		message::ITEMS_REARRANGE +
+		message::ITEMS_DELETE
 	);
-
+	
 	bool insert(const anyList& varList);
 
 	bool rearrange(const anyList& varList);
@@ -188,11 +187,15 @@ public:
 		return internalPoints_.time();
 	}
 
+	inline 
+	const internalPoints& InternalPoints()const
+	{
+		return internalPoints_;
+	}
+
 	bool hearChanges
 	(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
 		const anyList& varList
 	) override;
diff --git a/src/phasicFlow/containers/triSurfaceField/triSurfaceField.cpp b/src/phasicFlow/containers/triSurfaceField/triSurfaceField.cpp
index 8ba0abf4..0bc3550c 100644
--- a/src/phasicFlow/containers/triSurfaceField/triSurfaceField.cpp
+++ b/src/phasicFlow/containers/triSurfaceField/triSurfaceField.cpp
@@ -56,7 +56,7 @@ pFlow::triSurfaceField<T,MemorySpace>::triSurfaceField
 	observer
 	(
 		&surface,
-		message::Default()
+		message::Empty()
 	),
 	field_
 	(
@@ -130,7 +130,7 @@ pFlow::triSurfaceField<T, MemorySpace>::triSurfaceField
 	observer
 	(
 		&surface,
-		message::Default()
+		message::Empty()
 	),
 	field_
 	(
diff --git a/src/phasicFlow/containers/triSurfaceField/triSurfaceField.hpp b/src/phasicFlow/containers/triSurfaceField/triSurfaceField.hpp
index 54c4c0db..2de4803b 100644
--- a/src/phasicFlow/containers/triSurfaceField/triSurfaceField.hpp
+++ b/src/phasicFlow/containers/triSurfaceField/triSurfaceField.hpp
@@ -166,9 +166,7 @@ public:
 		}
 
 		bool hearChanges(
-		real t,
-		real dt,
-		uint32 iter,
+		const timeInfo& ti,
 		const message& msg, 
 		const anyList& varList) override
 		{
diff --git a/src/phasicFlow/eventManagement/message.hpp b/src/phasicFlow/eventManagement/message.hpp
index 0593221a..7b283647 100644
--- a/src/phasicFlow/eventManagement/message.hpp
+++ b/src/phasicFlow/eventManagement/message.hpp
@@ -25,6 +25,7 @@ Licence:
 
 #include "types.hpp"
 #include "iOstream.hpp"
+#include "List.hpp"
 
 
 namespace pFlow
@@ -35,52 +36,42 @@ class message
 public:
 	enum EVENT : size_t
 	{
-		DEFAULT 		= 0,
-		CAP_CHANGED 	= 1,  // internal points capacity changed 
-		SIZE_CHANGED 	= 2,  // internal points size changed
-		ITEM_DELETE	 	= 3,  // internal points item deleted 
-		ITEM_INSERT  	= 4,  // internal points item inserted 
-		RANGE_CHANGED   = 5,  // internal points range changed 
-		ITEM_REARRANGE  = 6,  // internal points item rearrange
-		ITEM_FLAGCHANGED= 7,  // internal points item flag changed, this occurs when transfer occurs
-		BNDR_REARRANGE 	= 8,  // boundary indices rearrange 
-		BNDR_TRANSFER   = 9,  // boundary indices transfered
-		BNDR_RESET		= 10,  // boundary indices reset entirely  
-		BNDR_DELETE 	= 11,  // boundary indices deleted
-		BNDR_APPEND		= 12,  // 
-		BNDR_PROCTRANSFER_SEND = 13,    // transfer of data between processors step 1 
-		BNDR_PROCTRANSFER_RECIEVE = 14,  // transfer of data between processors step 2
-		BNDR_PROCTRANSFER_WAITFILL = 15,  // wait for data and fill the field 
-		BNDR_PROC_SIZE_CHANGED = 16
+		RANGE_CHANGED	  = 0,  // internal points active range has been changed
+		ITEMS_INSERT  	  = 1,  // internal points are being inserted 
+		ITEMS_DELETE	  = 2,  // internal points are being deleted
+		ITEMS_REARRANGE   = 3,  // internal points are being rearrange
+		ITEMS_FLAGCHANGED = 4,  // internal points flag changed, this occurs when transfer occurs
+		BNDR_APPEND		  = 5,  // boundary: new indices are appended  
+		BNDR_RESET		  = 6,  // boundary: indices are reset entirely  
+		BNDR_DELETE 	  = 7,  // boundary: indices are deleted
+		BNDR_PROC_SIZE_CHANGED = 8,      // processor boundary: size has been changed
+		BNDR_PROCTRANSFER_SEND = 9,      // processor boundary: transfer of data between processors step 1 (send) 
+		BNDR_PROCTRANSFER_RECIEVE = 10,  // processor boundary: transfer of data between processors step 2 (recieve)
+		BNDR_PROCTRANSFER_WAITFILL = 11  // processor boundary: wait for data and fill the field 
 	};
 
 	
 private:
 
-	static constexpr size_t numberOfEvents_ = 17;
+	static constexpr size_t numberOfEvents_ = 12;
 
 	std::bitset<numberOfEvents_> events_{0x0000};
 	
 	static
 	inline const std::array<word,numberOfEvents_> eventNames_
 	{
-		"",
-		"capacity",
-		"size",
-		"deletedIndices",
+		"activeRange",
 		"insertedIndices",
-		"range",
-		"rearrangedIndices",
-		"transferredIndices",
-		"rearrangedIndices",
-		"transferredIndices",
-		"",
 		"deletedIndices",
-		"appendedIndices",
-		"transferredIndices",
-		"numToRecieve",
-		"insertedIndices",
-		"size"
+		"rearrangedIndices",
+		"flagChange",
+		"bndryAppendedIndices",
+		"bndryReset",
+		"bndryDeletedIndices",
+		"bndrySize",
+		"bndryTransferIndices",
+		"bndryNumToRecieve",
+		"bndryWait"
 	};
 
 public:
@@ -173,18 +164,23 @@ public:
 		return *this;
 	}
 	
+	wordList eventNames()const
+	{
+		wordList lst;
+		for(size_t i=0; i<events_.size(); i++)
+		{
+			if(events_[i])
+				lst.push_back(eventNames_[i]);
+		}
+		return lst;
+	}
+
 	static
 	auto constexpr numEvents()
 	{
 		return numberOfEvents_;
 	}
-	static 
-	message Default()
-	{
-		message msg;
-		return msg+DEFAULT;
-	}
-
+	
 	static 
 	message Empty()	
 	{
diff --git a/src/phasicFlow/eventManagement/observer.hpp b/src/phasicFlow/eventManagement/observer.hpp
index 0c193f4c..a7394c2f 100644
--- a/src/phasicFlow/eventManagement/observer.hpp
+++ b/src/phasicFlow/eventManagement/observer.hpp
@@ -29,6 +29,7 @@ namespace pFlow
 
 class subscriber;
 class anyList;
+class timeInfo;
 
 class observer
 {
@@ -87,11 +88,21 @@ public:
 		return message::numEvents();
 	} 
 
+	/// TODO: remove this API from this class 
 	virtual bool hearChanges(
 		real t,
 		real dt,
 		uint32 iter,
 		const message& msg, 
+		const anyList& varList)
+		{ 
+			notImplementedFunction;
+			return false;
+		};
+
+	virtual bool hearChanges(
+		const timeInfo& ti,
+		const message& msg, 
 		const anyList& varList)=0;
 };
 
diff --git a/src/phasicFlow/eventManagement/subscriber.cpp b/src/phasicFlow/eventManagement/subscriber.cpp
index 650aaf8a..ab5e7f24 100644
--- a/src/phasicFlow/eventManagement/subscriber.cpp
+++ b/src/phasicFlow/eventManagement/subscriber.cpp
@@ -133,7 +133,6 @@ bool pFlow::subscriber::notify
 	const anyList& varList
 )
 {
-	
 	for(size_t i=0; i<msg.size(); i++)
 	{
 		if(msg.equivalentTo(i))
@@ -150,12 +149,26 @@ bool pFlow::subscriber::notify
 				);
 			}
 		}
-	}
-
+	} 
 	return true;
 }
 
 bool pFlow::subscriber::notify(const timeInfo &ti, const message msg, const anyList &varList)
 {
-    return notify(ti.iter(), ti.t(), ti.dt(), msg, varList);
+	for(size_t i=0; i<msg.size(); i++)
+	{
+		if(msg.equivalentTo(i))
+		{
+			for( auto obsvr: observerList_[i] )
+			{
+				obsvr->hearChanges
+				(
+					ti,
+					message(i),
+					varList
+				);
+			}
+		}
+	}
+	return true;
 }
diff --git a/src/phasicFlow/eventManagement/subscriber.hpp b/src/phasicFlow/eventManagement/subscriber.hpp
index 8e7283f9..2690b470 100644
--- a/src/phasicFlow/eventManagement/subscriber.hpp
+++ b/src/phasicFlow/eventManagement/subscriber.hpp
@@ -68,6 +68,7 @@ public:
 
 	virtual bool unsubscribe(observer* obsevr)const;
 
+	/// TODO: remove this API from thie class 
 	bool notify(
 		uint32 iter,
 		real t,
diff --git a/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.cpp b/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.cpp
index 3d4296e7..4357c05d 100644
--- a/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.cpp
+++ b/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.cpp
@@ -145,7 +145,5 @@ bool pFlow::boundaryReflective::afterIteration
     );
     Kokkos::fence();
     
-    // TODO: notify integration for changes in the velocity 
-
     return true;
 }
diff --git a/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.hpp b/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.hpp
index e864873c..44253e2f 100644
--- a/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.hpp
+++ b/src/phasicFlow/structuredData/boundaries/boundaryReflective/boundaryReflective.hpp
@@ -71,6 +71,20 @@ public:
 	 
 	bool afterIteration(const timeInfo& ti)final;
 
+	const real restitution()const
+	{
+		return restitution_;
+	}
+
+	const word& velocityName()const
+	{
+		return velocityName_;
+	}
+
+	const word& diameterName()const
+	{
+		return diameterName_;
+	}
 
 };
 
diff --git a/src/phasicFlow/structuredData/domain/simulationDomain.cpp b/src/phasicFlow/structuredData/domain/simulationDomain.cpp
index edc0d475..3b4c876a 100644
--- a/src/phasicFlow/structuredData/domain/simulationDomain.cpp
+++ b/src/phasicFlow/structuredData/domain/simulationDomain.cpp
@@ -36,12 +36,19 @@ bool pFlow::simulationDomain::prepareBoundaryDicts()
 		(1+boundaryExtntionLengthRatio)*maxBoundingSphere_);
 
 	uint32 updateInterval = 
-        boundaries.getValOrSetMax<uint32>("updateInterval", 1u);
+        boundaries.getValOrSet<uint32>("updateInterval", 5u);
+
+	updateInterval = max(updateInterval, 1u);
 
     uint32 neighborListUpdateInterval = 
-        boundaries.getValMax("neighborListUpdateInterval", updateInterval);
-
-    boundaries.addOrReplace("neighborListUpdateInterval", neighborListUpdateInterval);
+        boundaries.getValOrSet("neighborListUpdateInterval", 50u);
+	
+	neighborListUpdateInterval = max(neighborListUpdateInterval, updateInterval);
+    
+	boundaries.addOrReplace("neighborListUpdateInterval", neighborListUpdateInterval);
+	boundaries.addOrReplace("updateInterval", updateInterval);
+	boundaries.addOrReplace("neighborLength", neighborLength);
+	boundaries.addOrReplace("boundaryExtntionLengthRatio", boundaryExtntionLengthRatio);
 
 	// create this boundaries dictionary 
 	this->addDict(thisBoundariesDictName(), boundaries);
diff --git a/src/phasicFlow/structuredData/pointStructure/internalPoints/internalPoints.cpp b/src/phasicFlow/structuredData/pointStructure/internalPoints/internalPoints.cpp
index 0ea527f6..20f61b85 100644
--- a/src/phasicFlow/structuredData/pointStructure/internalPoints/internalPoints.cpp
+++ b/src/phasicFlow/structuredData/pointStructure/internalPoints/internalPoints.cpp
@@ -40,7 +40,6 @@ bool pFlow::internalPoints::deletePoints(const uint32Vector_D& delPoints)
 	if(delPoints.empty())return true;
 
 	auto oldRange = pFlagsD_.activeRange();
-	auto oldSize  = size();
 
     if(!pFlagsD_.deletePoints(delPoints.deviceView()))
 	{
@@ -51,46 +50,35 @@ bool pFlow::internalPoints::deletePoints(const uint32Vector_D& delPoints)
 	unSyncFlag();
 	
 	auto newRange = pFlagsD_.activeRange();
-	auto newSize  = size();
 
 	anyList varList;
 
+	message msg;
 	varList.emplaceBack(
-		message::eventName(message::ITEM_DELETE), 
-		delPoints);
-	message msg(message::ITEM_DELETE);
-
-	if(oldSize!= newSize)
-	{
-		msg.add(message::SIZE_CHANGED); 
-		varList.emplaceBack(
-			message::eventName(message::SIZE_CHANGED),
-			newSize);
-	}
+		msg.addAndName(message::ITEMS_DELETE), 
+		delPoints.deviceView());
 	
 	if(oldRange!=newRange)
 	{
 		msg.add(message::RANGE_CHANGED);
 		varList.emplaceBack(
-			message::eventName(message::RANGE_CHANGED),
+			msg.addAndName(message::RANGE_CHANGED),
 			newRange);
 	}
-	auto iter = time().currentIter();
-	auto t = time().currentTime();
-	auto dt = time().dt();
-
-	if( !notify(iter, t, dt, msg, varList) )
+	
+	const auto& ti = time().TimeInfo();
+	
+	if( !notify(ti , msg, varList) )
 	{
 		fatalErrorInFunction;
 		return false;
 	}
-
 	return true;
 }
 
 bool pFlow::internalPoints::changePointsFlagPosition
 (
-	const uint32Vector_D& changePoints,
+	const uint32Vector_D& changePointsIndices,
 	realx3 transferVector, 
 	uint32 fromBoundaryIndex,
 	uint32 toBoundaryIndex
@@ -104,14 +92,14 @@ bool pFlow::internalPoints::changePointsFlagPosition
 	}
 
 	// change the flag 
-	pFlagsD_.changeFlags(changePoints.deviceView(), toBoundaryIndex);
+	pFlagsD_.changeFlags(changePointsIndices.deviceView(), toBoundaryIndex);
 	unSyncFlag();
 
 	// change the position 
 	pFlow::internalPointsKernels::changePosition
 	(
 		pointPosition_.deviceViewAll(),
-		changePoints.deviceView(),
+		changePointsIndices.deviceView(),
 		transferVector
 	);
 
@@ -119,17 +107,13 @@ bool pFlow::internalPoints::changePointsFlagPosition
 	message msg;
 	
 	varList.emplaceBack(
-		message::eventName(message::ITEM_FLAGCHANGED),
-		changePoints);
+		msg.addAndName(message::ITEMS_FLAGCHANGED),
+		changePointsIndices.deviceView());
 	varList.emplaceBack("fromBoundaryIndex", fromBoundaryIndex);
 	varList.emplaceBack("toBoundaryIndex", toBoundaryIndex);
 
-	msg.add(message::ITEM_FLAGCHANGED);
-
 	if( !notify(
-		time().currentIter(), 
-		time().currentTime(), 
-		time().dt(),
+		time().TimeInfo(),
 		msg,
 		varList))
 	{
@@ -313,106 +297,16 @@ pFlow::internalPoints::insertPoints(
   anyList&            varList
 )
 {
-	uint32 numNew = static_cast<uint32>(points.size());
-
-	auto aRange = pFlagsD_.activeRange();
-	uint32 emptySpots = pFlagsD_.capacity() - pFlagsD_.numActive();
-
-    if(emptySpots!= 0) emptySpots--;
-
+	
 	message msg;
-
-	if( numNew > emptySpots )
+	realx3Vector_D points_D(points.name(), points);
+	if(!insertPointsOnly(points_D, msg, varList))
 	{
-		// increase the capacity to hold new points 
-		aRange = pFlagsD_.activeRange();
-		uint32 newCap = pFlagsD_.changeCapacity(numNew);
-		unSyncFlag();
-		varList.emplaceBack(
-			msg.addAndName(message::CAP_CHANGED),
-			newCap);
+		return false;
 	}
-	
-	
-	// first check if it is possible to add to the beggining of list
-	if(numNew <= aRange.start())
-	{
-		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
-			0u, numNew);
-	}
-	// check if it is possible to add to the end of the list  
-	else if( numNew <= pFlagsD_.capacity() - aRange.end() )
-	{	 	
-		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
-			aRange.end(), aRange.end()+numNew);
-	}
-	// we should fill the scattered empty spots
-	else
-	{
-		auto newIndices = pFlagsD_.getEmptyPoints(numNew);
-		if(numNew != newIndices.size())
-		{
-			fatalErrorInFunction<<"not enough empty points in pointFlag"<<
-			numNew<< " "<<newIndices.size() <<endl;
-			pOutput<< pFlagsD_.capacity()<<endl;
-			pOutput<< pFlagsD_.numActive()<<endl;
-			return false;
-		}
 		
-		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
-			newIndices
-		);
-	}
-
-	const auto& indices = varList.getObject<uint32IndexContainer>(
-		message::eventName(message::ITEM_INSERT)
-	);
-
-	auto nAdded = pFlagsD_.addInternalPoints(indices.deviceView());
-	unSyncFlag();
-
-	if(nAdded != numNew )
-	{
-		fatalErrorInFunction;
-		return false;
-	}
-
-	pointPosition_.reserve( pFlagsD_.capacity() );
-	if(!pointPosition_.insertSetElement(indices, points))
-	{
-		fatalErrorInFunction<<
-		"Error in inserting new positions into pointPosition"<<
-		" internalPoints field"<<endl;
-		return false;
-	}
-
-	auto newARange = pFlagsD_.activeRange();
-
-	if( aRange.end() != newARange.end() )
-	{
-		varList.emplaceBack(
-			msg.addAndName(message::RANGE_CHANGED),
-			newARange);
-		varList.emplaceBack(
-			msg.addAndName(message::SIZE_CHANGED),
-			newARange.end());
-	}
-	else if(aRange.start() != newARange.start())
-	{
-		varList.emplaceBack(
-			msg.addAndName(message::RANGE_CHANGED),
-			newARange);
-	}
-	
-	auto tInfo = time().TimeInfo();
-
 	if(!notify(
-		tInfo.iter(),
-		tInfo.t(),
-		tInfo.dt(),
+		time().TimeInfo(),
 		msg, 
 		varList))
 	{
@@ -433,39 +327,36 @@ bool pFlow::internalPoints::insertPointsOnly(
 
 	uint32 numNew = static_cast<uint32>(points.size());
 
-	auto aRange = pFlagsD_.activeRange();
+	auto oldActiveRange = pFlagsD_.activeRange();
+	
 	uint32 emptySpots = pFlagsD_.capacity() - pFlagsD_.numActive();
 
-	if(emptySpots!= 0) emptySpots--;
-	
+    if(emptySpots!= 0) emptySpots--;
+
 	if( numNew > emptySpots )
 	{
 		// increase the capacity to hold new points 
-		aRange = pFlagsD_.activeRange();
-		uint32 newCap = pFlagsD_.changeCapacity(numNew);
+		pFlagsD_.changeCapacity(numNew);
 		unSyncFlag();
-		varList.emplaceBack(
-			msg.addAndName(message::CAP_CHANGED),
-			newCap);
 	}
 	
-	
 	// first check if it is possible to add to the beggining of list
-	if(numNew <= aRange.start())
+	if(numNew <= oldActiveRange.start())
 	{
 		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
+			msg.addAndName(message::ITEMS_INSERT),
 			0u, numNew);
-	}// check if it is possible to add to the end of the list  
-	else if( numNew <= pFlagsD_.capacity() - aRange.end() )
+	}
+	// check if it is possible to add to the end of the list  
+	else if( numNew <= pFlagsD_.capacity() - oldActiveRange.end() )
 	{	 	
 		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
-			aRange.end(), aRange.end()+numNew);
-	}// we should fill the scattered empty spots
+			msg.addAndName(message::ITEMS_INSERT),
+			oldActiveRange.end(), oldActiveRange.end()+numNew);
+	}
+	// we should fill the scattered empty spots
 	else
 	{
-		
 		auto newIndices = pFlagsD_.getEmptyPoints(numNew);
 		if(numNew != newIndices.size())
 		{
@@ -477,14 +368,13 @@ bool pFlow::internalPoints::insertPointsOnly(
 		}
 		
 		varList.emplaceBack<uint32IndexContainer>(
-			msg.addAndName(message::ITEM_INSERT),
+			msg.addAndName(message::ITEMS_INSERT),
 			newIndices
 		);
 	}
 
 	const auto& indices = varList.getObject<uint32IndexContainer>(
-		message::eventName(message::ITEM_INSERT)
-	);
+		message::eventName(message::ITEMS_INSERT));
 
 	auto nAdded = pFlagsD_.addInternalPoints(indices.deviceView());
 	unSyncFlag();
@@ -496,7 +386,6 @@ bool pFlow::internalPoints::insertPointsOnly(
 	}
 
 	pointPosition_.reserve( pFlagsD_.capacity() );
-
 	if(!pointPosition_.insertSetElement(indices, points.deviceView()))
 	{
 		fatalErrorInFunction<<
@@ -505,25 +394,16 @@ bool pFlow::internalPoints::insertPointsOnly(
 		return false;
 	}
 
-	auto newARange = pFlagsD_.activeRange();
+	auto newActiveRange = pFlagsD_.activeRange();
 
-	if( aRange.end() != newARange.end() )
+	if(oldActiveRange != newActiveRange)
 	{
 		varList.emplaceBack(
 			msg.addAndName(message::RANGE_CHANGED),
-			newARange);
-		varList.emplaceBack(
-			msg.addAndName(message::SIZE_CHANGED),
-			newARange.end());
-	}
-	else if(aRange.start() != newARange.start())
-	{
-		varList.emplaceBack(
-			msg.addAndName(message::RANGE_CHANGED),
-			newARange);
+			newActiveRange);
 	}
 	
-    return true;
+	return true;
 }
 
 bool pFlow::internalPoints::read
diff --git a/src/phasicFlow/structuredData/pointStructure/pointStructure/pointStructure.cpp b/src/phasicFlow/structuredData/pointStructure/pointStructure/pointStructure.cpp
index 1f19e0ec..03394c75 100644
--- a/src/phasicFlow/structuredData/pointStructure/pointStructure/pointStructure.cpp
+++ b/src/phasicFlow/structuredData/pointStructure/pointStructure/pointStructure.cpp
@@ -204,7 +204,7 @@ bool pFlow::pointStructure::beforeIteration()
         anyList varList;
 
         varList.emplaceBack(
-            msg.addAndName(message::ITEM_REARRANGE),
+            msg.addAndName(message::ITEMS_REARRANGE),
             sortedIndices);
 
         if(!notify(ti, msg, varList))