diff --git a/include/impl/moveit_mediator.h b/include/impl/moveit_mediator.h
index 680e700764a1c77ae69dbf8be2b440eb545a395c..0366a927440aba1342cdb4957744c3049f03e887 100644
--- a/include/impl/moveit_mediator.h
+++ b/include/impl/moveit_mediator.h
@@ -76,6 +76,8 @@ class Moveit_mediator : public Abstract_mediator{
     std::unique_ptr<Cuboid_reader> cuboid_reader_;
 
     std::map<std::string, std::vector<uint8_t>> acm_;
+    std::map<std::string, std::vector<uint8_t>> rs_;
+
     std::multimap<std::string, std::pair<tf2::Vector3, std::queue<moveit_task_constructor_msgs::ExecuteTaskSolutionGoal>>> tasks_;
     std::map<std::string, std::pair<moveit_msgs::RobotTrajectory, moveit_msgs::PlanningScene>> executions_;
 
diff --git a/src/impl/moveit_mediator.cpp b/src/impl/moveit_mediator.cpp
index f4af9c2bd0d78e84e1045b8ae1aec9a7f3fb41c8..cc304450f01f624c100475304c9b84d968204303 100644
--- a/src/impl/moveit_mediator.cpp
+++ b/src/impl/moveit_mediator.cpp
@@ -29,10 +29,17 @@ void Moveit_mediator::connect_robots(Abstract_robot* robot) {
 	robots_.push_back(robot);
 	ROS_INFO("%s connected...", robot->name().c_str());
 
+
 	Moveit_robot* mr = dynamic_cast<Moveit_robot*>(robot);
 	acm_.insert(std::pair<std::string, std::vector<uint8_t>>(mr->map().at("base").c_str(), std::vector<uint8_t>()));
 	for(auto name: mr->mgi()->getLinkNames()) acm_.insert(std::pair<std::string, std::vector<uint8_t>>(name.c_str(), std::vector<uint8_t>()));
 	for(auto name: mr->mgi_hand()->getLinkNames()) acm_.insert(std::pair<std::string, std::vector<uint8_t>>(name.c_str(), std::vector<uint8_t>()));
+
+	for (auto link : mr->mgi()->getLinkNames()) rs_.insert_or_assign(link, std::vector<std::uint8_t>());
+	rs_.insert_or_assign(mr->map()["left_finger"], std::vector<std::uint8_t>());
+	rs_.insert_or_assign(mr->map()["right_finger"], std::vector<std::uint8_t>());
+	rs_.insert_or_assign(mr->map()["hand_link"], std::vector<std::uint8_t>());
+	rs_.insert_or_assign(mr->map()["base"], std::vector<std::uint8_t>());
 }
 
 void Moveit_mediator::publish_tables(){
@@ -896,8 +903,8 @@ void Moveit_mediator::task_planner(){
 			for (int i = 0; i < robots_.size(); i++){
 				if (exec.first == robots_[i]->name()){
 					auto mr = dynamic_cast<Moveit_robot*>(robots_[i]);
-					th.push_back(std::thread(&Moveit_mediator::parallel_exec, this, std::ref(*mr), exec.second.first));
-					//mr->mgi()->execute(exec.second.first);
+					//th.push_back(std::thread(&Moveit_mediator::parallel_exec, this, std::ref(*mr), exec.second.first));
+					mr->mgi()->execute(exec.second.first);
 					//manipulate_acm(mr, exec.second.second);
 					//merge_ps(ps_m, exec.second.second, mr);
 				}
@@ -977,40 +984,37 @@ void Moveit_mediator::status_callback(const actionlib_msgs::GoalStatusArray::Con
 
 void Moveit_mediator::merge_ps(moveit_msgs::PlanningScene& out, moveit_msgs::PlanningScene in, Moveit_robot* mr){
 	// get full mr link list 
-	std::vector<std::string> links;
-	for (auto link : mr->mgi()->getLinkNames())links.push_back(link);
-	links.push_back(mr->map()["left_finger"]);
-	links.push_back(mr->map()["right_finger"]);
-	links.push_back(mr->map()["hand_link"]);
-	links.push_back(mr->map()["base"]);
-
 
 	for (auto ao : in.robot_state.attached_collision_objects) out.robot_state.attached_collision_objects.push_back(ao);
-	if (in.robot_state.is_diff) out.robot_state.is_diff = in.robot_state.is_diff;
-	if (in.is_diff) out.is_diff = in.is_diff;
+	out.robot_state.is_diff |= in.robot_state.is_diff;
+	out.is_diff |= in.is_diff;
 	out.robot_state.joint_state.header = in.robot_state.joint_state.header;
 	out.robot_model_name = "panda";
 
-
+	std::vector<std::string> links;
+	for (auto link : mr->mgi()->getLinkNames()) links.push_back(link);
+	links.push_back(mr->map()["left_finger"]);
+	links.push_back(mr->map()["right_finger"]);
+	links.push_back(mr->map()["hand_link"]);
+	links.push_back(mr->map()["base"]);
 
 	for (auto link : links) {
 		for(int i = 0; i < in.robot_state.joint_state.name.size(); i++){
-			if(link.c_str() == in.robot_state.joint_state.name[i].c_str()){
+			if(link == in.robot_state.joint_state.name[i]){
 				out.robot_state.joint_state.effort.push_back(in.robot_state.joint_state.effort[i]);
 				out.robot_state.joint_state.position.push_back(in.robot_state.joint_state.position[i]);
 				out.robot_state.joint_state.velocity.push_back(in.robot_state.joint_state.velocity[i]);
-				ROS_INFO("check");
 			}
 		}
 
 		for(int i = 0; i < in.link_padding.size(); i++){
-			if(link.c_str() == in.link_padding[i].link_name.c_str()){
+			if(link == in.link_padding[i].link_name){
 				out.link_padding.push_back(in.link_padding[i]);
 			}
 		}
 
 		for(int i = 0; i < in.link_scale.size(); i++){
-			if(link.c_str() == in.link_scale[i].link_name.c_str()){
+			if(link == in.link_scale[i].link_name){
 				out.link_scale.push_back(in.link_scale[i]);
 			}
 		}