diff --git a/demos/clogging/task.txt b/demos/clogging/task.txt
deleted file mode 100644
index ed8523689b1f5fe32082b800c9cdf47b91e89a19..0000000000000000000000000000000000000000
--- a/demos/clogging/task.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-1. There is a new version of jpscore, please pull it to local and compile it.
-
-2. There is a new geometry file for simulation, you need to create new geometry files with different width of the exit according to it.
-
-3. Some parameters in inifile are reset, please using the new one.
-The shape of pedestrian is circle, and the radius is 0.2.
-	<agent_parameters agent_parameter_id="1">
-        <v0 mu="1.34" sigma="0.26" />
-        <bmax mu="0.20" sigma="0.00000" /> 
-        <bmin mu="0.20" sigma="0.00000" />
-        <amin mu="0.20" sigma="0.00000" />
-        <atau mu="0.00" sigma="0.00000" />
-		<tau mu="0.5" sigma="0.000" />
-		<shape circle="1" /> 
-     </agent_parameters>
-The waiting time before deleting pedestrian in clogging( Tw ) is 2 seconds.
-	<waiting_time Tw="2"/> 
-The parameters used in direction part and speed part are reset. 
-	<time_parameters Td="0.3" Ts="0.3" />
-Max simulation time is 500 seconds. 
-	<max_sim_time unit="sec">500</max_sim_time>
-Each source generate 50 pedestrians. 
-	<source id="1" frequency="1" agents_max="50" group_id="0" caption="source 1" greedy="false"  />
-	
-4. There are five models need to be researched, not four.
-M0: simplest (direction=0,speed=0,GCVM=0)
-M1: simplest+direction (direction=1,speed=0,GCVM=0)
-M2: simplest+velocity (direction=0,speed=1,GCVM=0)
-M3: simplest+direction+velocity (direction=1,speed=1,GCVM=0)
-M4: GCVM (direcction=1,speed=1,GCVM=1)
-you have to study the influence of width of exit, size of the simulation step, update methods, inflow rate of pedestrians for every model, then compare them. 
-
-5. The width of exit are 
-[0.8, 1.0, 1.2, 1.6, 2.0, 2.5]
-when research the influence of other factors, using width=0.8 and width=1.0. 
-We have to compare which result is better.
-
-6. The size of the simulation step and the corresponding fps are [size:fps]
-[0.01:25, 0.02:25, 0.05:20, 0.1:10, 0.2:5]
-when research the influence of other factors, using timestep=0.05,fps=20
-
-7. Update methods are [parallel update, sequential update]
-when research the influence of other factors, using parallel update.
-
-8. Inflow rate of pedestrians  are [number of source:the number of pedestrians generated per source] (There may be some problems that require further discussion.)
-[2:200,4:100,8:50,16:25] pedestrians/second, but the total number of generated pedestrians should be 400.
-when research the influence of other factors, using 8:50.
-
-9. Make the figures obtained looks better, at least can show the full title.
-
-10. Need one more figure to compare the value: (last_clogging_time-first_clogging_time)/(clogging times) for every part mentioned above.
\ No newline at end of file
diff --git a/demos/scenario_21_GCVM/GCVM_geo.xml b/demos/scenario_21_GCVM/GCVM_geo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba3b21a6c951540b94384febaa7ecdc9ab920eb1
--- /dev/null
+++ b/demos/scenario_21_GCVM/GCVM_geo.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="Projectname" gridSizeX="20.000000"
+	  gridSizeY="20.000000" unit="m"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:noNamespaceSchemaLocation="http://134.94.2.137/jps_geoemtry.xsd ">
+  <rooms>
+    <room id="0" caption="botleneck" zpos="0.000000">
+      <subroom id="0" closed="0" class="subroom">
+	<polygon caption="oben">
+	  <vertex px="65.000000" py="106.000000" />
+	  <vertex px="62.000000" py="106.000000" />
+	  <vertex px="62.000000" py="102.700" />
+	</polygon>
+	<polygon caption="unten">
+	  <vertex px="62.000000" py="101.300" />
+	  <vertex px="62.000000" py="98.000000" />
+	  <vertex px="65.000000" py="98.000000" />
+	</polygon>
+      </subroom>
+      <subroom id="1" closed="0" class="subroom">
+	<polygon caption="wall">
+	  <vertex px="62.000000" py="102.700" />
+	  <vertex px="60.000000" py="102.700" />
+	</polygon>
+	<polygon caption="wall">
+	  <vertex px="60.000000" py="101.300" />
+	  <vertex px="62.000000" py="101.300" />
+	</polygon>
+      </subroom>
+      <subroom id="2" closed="0" class="subroom">
+	<polygon caption="wall">
+	  <vertex px="60.000000" py="102.700" />
+	  <vertex px="60.000000" py="106.000000" />
+	  <vertex px="50.000000" py="106.000000" />
+	</polygon>
+	<polygon caption="wall">
+	  <vertex px="50.000000" py="98.000000" />
+	  <vertex px="60.000000" py="98.000000" />
+	  <vertex px="60.000000" py="101.300" />
+        </polygon>
+        <polygon>
+          <vertex px="50.000000" py="106.000000" />
+          <vertex px="50.000000" py="98.000000" />
+	</polygon>
+        
+      </subroom>
+      <crossings>
+	<crossing id="0" subroom1_id="0" subroom2_id="1">
+	  <vertex px="62.000000" py="102.700" />
+	  <vertex px="62.000000" py="101.300" />
+	</crossing>
+	<crossing id="1" subroom1_id="1" subroom2_id="2">
+	  <vertex px="60.000000" py="102.700" />
+	  <vertex px="60.000000" py="101.300" />
+	</crossing>
+      </crossings>
+    </room>
+  </rooms>
+  <transitions>
+    <transition id="2" caption="No_Name" type="emergency"
+		room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="65.000000" py="106.000000" />
+      <vertex px="65.000000" py="98.000000" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_21_GCVM/GCVM_ini.xml b/demos/scenario_21_GCVM/GCVM_ini.xml
new file mode 100644
index 0000000000000000000000000000000000000000..714064b9d18fccaa96f9044ffa0ffea4b170e2fb
--- /dev/null
+++ b/demos/scenario_21_GCVM/GCVM_ini.xml
@@ -0,0 +1,68 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>1.0</seed>
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">100</max_sim_time>
+  <geometry>GCVM_geo.xml</geometry>
+  <trajectories embed_mesh="false" format="xml-plain" fps="8">
+    <file location="GCVM_traj.xml" />
+  </trajectories>
+  
+  <traffic_constraints>
+  </traffic_constraints>
+  
+  <routing>
+  </routing>
+
+  
+  <agents operational_model_id="6">
+    <agents_distribution>
+      <group agent_parameter_id="2" goal_id="-1" group_id="0" number="100" room_id="0" router_id="1" subroom_id="2" />	
+	   
+    </agents_distribution>
+
+    
+    <agents_sources />
+  </agents>
+ 
+  <operational_models>
+	<model description="gcvm" operational_model_id="6">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.1" a="3" />
+        <force_wall D="0.05" a="6" />
+		<time_parameters Td="0.3" Ts="0.45" />
+		<GCVM using="1" /> 
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.20" sigma="0.00000" /> 
+        <bmin mu="0.20" sigma="0.00000" />
+        <amin mu="0.20" sigma="0.00000" />
+        <atau mu="0.1" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.20" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+	</model>    
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file
diff --git a/demos/clogging/geometry.xml b/demos/scenario_22_clogging/clogging_geo.xml
similarity index 100%
rename from demos/clogging/geometry.xml
rename to demos/scenario_22_clogging/clogging_geo.xml
diff --git a/demos/clogging/inifile_clogging.xml b/demos/scenario_22_clogging/clogging_ini.xml
similarity index 91%
rename from demos/clogging/inifile_clogging.xml
rename to demos/scenario_22_clogging/clogging_ini.xml
index 9457261f49bcca98fed3b811ffe257497ddaa67a..d00b494b2359c96eb81cdec59e16db27e37bfa8b 100644
--- a/demos/clogging/inifile_clogging.xml
+++ b/demos/scenario_22_clogging/clogging_ini.xml
@@ -4,10 +4,10 @@
   <num_threads>8</num_threads>
   <max_sim_time unit="sec">500</max_sim_time>
   <logfile>log.txt</logfile>
-  <geometry>geometry.xml</geometry>
+  <geometry>clogging_geo.xml</geometry>
   
   <trajectories embed_mesh="false" format="xml-plain" fps="20">
-    <file location="trajectory_clogging.xml" />
+    <file location="clogging_traj.xml" />
   </trajectories>
   
   <show_statistics>false</show_statistics>
@@ -43,7 +43,8 @@
 		<time_parameters Td="0.3" Ts="0.3" />
 		<update_method parallel="1"/> <!-- Update method is parallel when parallel=1, while unparallel when parallel=0 -->
 		<waiting_time Tw="0"/> <!-- Deleting pedestrian Tw seconds after the clogging -->
-		<model_submodel direction="0" speed="0"/> <!-- When direction=1 means using direction part, when speed=1 means using speed part -->
+		<clogging_area size="0.6" /> <!-- Only deleting pedestrian when the distance between clogging to exit is smaller than the size-->
+		<model_submodel direction="1" speed="1"/> <!-- When direction=1 means using direction part, when speed=1 means using speed part -->
 		<GCVM using="0"/> <!-- When using=1 menas we using GCVM in the simulation -->
       </model_parameters>
 	  <agent_parameters agent_parameter_id="1">
diff --git a/demos/scenario_23_AGCVM/AGCVM_geo.xml b/demos/scenario_23_AGCVM/AGCVM_geo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba3b21a6c951540b94384febaa7ecdc9ab920eb1
--- /dev/null
+++ b/demos/scenario_23_AGCVM/AGCVM_geo.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="Projectname" gridSizeX="20.000000"
+	  gridSizeY="20.000000" unit="m"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:noNamespaceSchemaLocation="http://134.94.2.137/jps_geoemtry.xsd ">
+  <rooms>
+    <room id="0" caption="botleneck" zpos="0.000000">
+      <subroom id="0" closed="0" class="subroom">
+	<polygon caption="oben">
+	  <vertex px="65.000000" py="106.000000" />
+	  <vertex px="62.000000" py="106.000000" />
+	  <vertex px="62.000000" py="102.700" />
+	</polygon>
+	<polygon caption="unten">
+	  <vertex px="62.000000" py="101.300" />
+	  <vertex px="62.000000" py="98.000000" />
+	  <vertex px="65.000000" py="98.000000" />
+	</polygon>
+      </subroom>
+      <subroom id="1" closed="0" class="subroom">
+	<polygon caption="wall">
+	  <vertex px="62.000000" py="102.700" />
+	  <vertex px="60.000000" py="102.700" />
+	</polygon>
+	<polygon caption="wall">
+	  <vertex px="60.000000" py="101.300" />
+	  <vertex px="62.000000" py="101.300" />
+	</polygon>
+      </subroom>
+      <subroom id="2" closed="0" class="subroom">
+	<polygon caption="wall">
+	  <vertex px="60.000000" py="102.700" />
+	  <vertex px="60.000000" py="106.000000" />
+	  <vertex px="50.000000" py="106.000000" />
+	</polygon>
+	<polygon caption="wall">
+	  <vertex px="50.000000" py="98.000000" />
+	  <vertex px="60.000000" py="98.000000" />
+	  <vertex px="60.000000" py="101.300" />
+        </polygon>
+        <polygon>
+          <vertex px="50.000000" py="106.000000" />
+          <vertex px="50.000000" py="98.000000" />
+	</polygon>
+        
+      </subroom>
+      <crossings>
+	<crossing id="0" subroom1_id="0" subroom2_id="1">
+	  <vertex px="62.000000" py="102.700" />
+	  <vertex px="62.000000" py="101.300" />
+	</crossing>
+	<crossing id="1" subroom1_id="1" subroom2_id="2">
+	  <vertex px="60.000000" py="102.700" />
+	  <vertex px="60.000000" py="101.300" />
+	</crossing>
+      </crossings>
+    </room>
+  </rooms>
+  <transitions>
+    <transition id="2" caption="No_Name" type="emergency"
+		room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="65.000000" py="106.000000" />
+      <vertex px="65.000000" py="98.000000" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_23_AGCVM/AGCVM_ini.xml b/demos/scenario_23_AGCVM/AGCVM_ini.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d183a95bf65a59c32fcb9d39b22fad177bce29da
--- /dev/null
+++ b/demos/scenario_23_AGCVM/AGCVM_ini.xml
@@ -0,0 +1,68 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>1.0</seed>
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">100</max_sim_time>
+  <geometry>AGCVM_geo.xml</geometry>
+  <trajectories embed_mesh="false" format="xml-plain" fps="8">
+    <file location="AGCVM_traj.xml" />
+  </trajectories>
+  
+  <traffic_constraints>
+  </traffic_constraints>
+  
+  <routing>
+  </routing>
+
+  
+  <agents operational_model_id="8">
+    <agents_distribution>
+      <group agent_parameter_id="2" goal_id="-1" group_id="0" number="100" room_id="0" router_id="1" subroom_id="2" />	
+	   
+    </agents_distribution>
+
+    
+    <agents_sources />
+  </agents>
+ 
+  <operational_models>
+	<model description="agcvm" operational_model_id="8">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.1" a="3" />
+        <force_wall D="0.05" a="6" />
+		<time_parameters Td="0.3" Ts="0.45" />
+		<GCVM using="1" /> 
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.20" sigma="0.00000" /> 
+        <bmin mu="0.20" sigma="0.00000" />
+        <amin mu="0.20" sigma="0.00000" />
+        <atau mu="0.1" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.20" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+	</model>    
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file
diff --git a/demos/scenario_24_bidirection/bidirection_geo.xml b/demos/scenario_24_bidirection/bidirection_geo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3bf275fd2c4475992e2e48dee3eb5d45e0ed5958
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_geo.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="FD1d" unit="m">
+  <rooms>
+	<room id="0" caption="corridor">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="26" py="2.0" />
+          <vertex px="0" py="2.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="26" py="-2.0" />
+          <vertex px="0" py="-2.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+  </rooms>
+
+  <transitions>
+    <transition id="0" caption="left" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="0" py="-2.0" />
+      <vertex px="0" py="2.0" />
+    </transition>
+
+    <transition id="1" caption="right" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="26" py="-2.0" />
+      <vertex px="26" py="2.0" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_24_bidirection/bidirection_geo_seperate.xml b/demos/scenario_24_bidirection/bidirection_geo_seperate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..56c62550002ae94d5dbd8cce0f69a1c79b4f73b7
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_geo_seperate.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="FD1d" unit="m">
+  <rooms>
+	<room id="0" caption="corridor">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="26" py="4.0" />
+          <vertex px="0" py="4.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="26" py="-4.0" />
+          <vertex px="0" py="-4.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+  </rooms>
+
+  <transitions>
+    <transition id="0" caption="left" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="0" py="-4.0" />
+      <vertex px="0" py="4.0" />
+    </transition>
+
+    <transition id="1" caption="right" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="26" py="-4.0" />
+      <vertex px="26" py="4.0" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_24_bidirection/bidirection_geo_source.xml b/demos/scenario_24_bidirection/bidirection_geo_source.xml
new file mode 100644
index 0000000000000000000000000000000000000000..831f8ba176bf576bf34300d228f60d17abf7d0ce
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_geo_source.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="FD1d" unit="m">
+  <rooms>
+	<room id="0" caption="left">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="-3" py="2.0" />
+          <vertex px="0" py="2.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="-3" py="-2.0" />
+          <vertex px="0" py="-2.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+	<room id="1" caption="corridor">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="26" py="2.0" />
+          <vertex px="0" py="2.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="26" py="-2.0" />
+          <vertex px="0" py="-2.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+    <room id="2" caption="right">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="26" py="2.0" />
+          <vertex px="29" py="2.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="26" py="-2.0" />
+          <vertex px="29" py="-2.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+  </rooms>
+
+  <transitions>
+	<transition id="0" caption="left" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="-3" py="-2.0" />
+      <vertex px="-3" py="2.0" />
+    </transition>
+    <transition id="1" caption="left" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="1" subroom2_id="0">
+      <vertex px="0" py="-2.0" />
+      <vertex px="0" py="2.0" />
+    </transition>
+
+    <transition id="2" caption="left" type="emergency"
+                room1_id="1" subroom1_id="0" room2_id="2" subroom2_id="0">
+      <vertex px="26" py="-2.0" />
+      <vertex px="26" py="2.0" />
+    </transition>
+	
+	<transition id="3" caption="left" type="emergency"
+                room1_id="2" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="29" py="-2.0" />
+      <vertex px="29" py="2.0" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_24_bidirection/bidirection_geo_wider.xml b/demos/scenario_24_bidirection/bidirection_geo_wider.xml
new file mode 100644
index 0000000000000000000000000000000000000000..56c62550002ae94d5dbd8cce0f69a1c79b4f73b7
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_geo_wider.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<geometry version="0.8" caption="FD1d" unit="m">
+  <rooms>
+	<room id="0" caption="corridor">
+      <subroom id="0" closed="0" class="subroom">
+        <polygon>	
+          <vertex px="26" py="4.0" />
+          <vertex px="0" py="4.0" />
+        </polygon>
+        <polygon>	
+          <vertex px="26" py="-4.0" />
+          <vertex px="0" py="-4.0" />
+        </polygon>	  
+      </subroom>
+    </room>
+  </rooms>
+
+  <transitions>
+    <transition id="0" caption="left" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="0" py="-4.0" />
+      <vertex px="0" py="4.0" />
+    </transition>
+
+    <transition id="1" caption="right" type="emergency"
+                room1_id="0" subroom1_id="0" room2_id="-1" subroom2_id="-1">
+      <vertex px="26" py="-4.0" />
+      <vertex px="26" py="4.0" />
+    </transition>
+  </transitions>
+</geometry>
diff --git a/demos/scenario_24_bidirection/bidirection_ini.xml b/demos/scenario_24_bidirection/bidirection_ini.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ec9a0718f9237ad890a149ebd212e6cefd5759ad
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_ini.xml
@@ -0,0 +1,92 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>1000.0</seed>
+  
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">500</max_sim_time>
+  <logfile>log.txt</logfile>
+  <geometry>bidirection_geo.xml</geometry>
+  
+  <trajectories embed_mesh="false" format="xml-plain" fps="20" color_mode ="group">
+    <file location="bidirection_traj.xml" /> 
+  </trajectories>
+  
+  <show_statistics>false</show_statistics>
+  
+  <routing>
+	<goals>
+		<goal id="0" final="true" caption="goal 0">
+			<polygon>
+				<vertex px="29" py="-2" />
+				<vertex px="29" py="2" />
+				<vertex px="30" py="2" />
+				<vertex px="30" py="-2" />
+				<vertex px="29" py="-2" />
+			</polygon>
+		</goal>
+		<goal id="1" final="true" caption="goal 1">
+			<polygon>
+				<vertex px="-4" py="-2" />
+				<vertex px="-4" py="2" />
+				<vertex px="-3" py="2" />
+				<vertex px="-3" py="-2" />
+				<vertex px="-4" py="-2" />
+			</polygon>
+		</goal>
+	</goals>
+  </routing>
+  
+  
+  
+  
+  
+  
+  <agents operational_model_id="6">
+    <agents_distribution>
+		<group agent_parameter_id="2" goal_id="0" group_id="0" number="50" room_id="0" router_id="1" subroom_id="0" />
+		<group agent_parameter_id="2" goal_id="1" group_id="1" number="50" room_id="0" router_id="1" subroom_id="0" />			
+	</agents_distribution>
+  </agents>
+ 
+  <operational_models>
+  <model description="gcvm" operational_model_id="6">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+		<periodic>1</periodic>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.1" a="10" />
+        <force_wall D="0.15" a="6" />
+		<time_parameters Td="0.2" Ts="1.0" />
+		<GCVM using="1" />
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.2" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+    </model>
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file
diff --git a/demos/scenario_24_bidirection/bidirection_ini_seperate.xml b/demos/scenario_24_bidirection/bidirection_ini_seperate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cc3b70fbf4dceaa3f22a30e0aae53ba16c413c3f
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_ini_seperate.xml
@@ -0,0 +1,92 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>10000.0</seed>
+  
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">200</max_sim_time>
+  <logfile>log.txt</logfile>
+  <geometry>bidirection_geo_seperate.xml</geometry>
+  
+  <trajectories embed_mesh="false" format="xml-plain" fps="20" color_mode ="group">
+    <file location="bidirection_traj_seperate.xml" /> 
+  </trajectories>
+  
+  <show_statistics>false</show_statistics>
+  
+  <routing>
+	<goals>
+		<goal id="0" final="true" caption="goal 0">
+			<polygon>
+				<vertex px="29" py="-2" />
+				<vertex px="29" py="2" />
+				<vertex px="30" py="2" />
+				<vertex px="30" py="-2" />
+				<vertex px="29" py="-2" />
+			</polygon>
+		</goal>
+		<goal id="1" final="true" caption="goal 1">
+			<polygon>
+				<vertex px="-4" py="-2" />
+				<vertex px="-4" py="2" />
+				<vertex px="-3" py="2" />
+				<vertex px="-3" py="-2" />
+				<vertex px="-4" py="-2" />
+			</polygon>
+		</goal>
+	</goals>
+  </routing>
+  
+  
+  
+  
+  
+  
+  <agents operational_model_id="6">
+    <agents_distribution>
+		<group agent_parameter_id="2" goal_id="0" group_id="0" number="50" room_id="0" router_id="1" subroom_id="0" x_min="0" x_max="8" />
+		<group agent_parameter_id="2" goal_id="1" group_id="4" number="50" room_id="0" router_id="1" subroom_id="0" x_min="18" x_max="26" />	
+	</agents_distribution>
+  </agents>
+ 
+  <operational_models>
+  <model description="gcvm" operational_model_id="6">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+		<periodic>1</periodic>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.05" a="20" />
+        <force_wall D="0.15" a="6" />
+		<time_parameters Td="0.2" Ts="1.0" />
+		<GCVM using="1" />
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.2" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+    </model>
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file
diff --git a/demos/scenario_24_bidirection/bidirection_ini_source.xml b/demos/scenario_24_bidirection/bidirection_ini_source.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd64a9b4fd87f032159cde066f5f11aade7a53a7
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_ini_source.xml
@@ -0,0 +1,98 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>1000.0</seed>
+  
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">500</max_sim_time>
+  <logfile>log.txt</logfile>
+  <geometry>bidirection_geo_source.xml</geometry>
+  
+  <trajectories embed_mesh="false" format="xml-plain" fps="20" color_mode ="group">
+    <file location="bidirection_traj_source.xml" /> 
+  </trajectories>
+  
+  <show_statistics>false</show_statistics>
+  
+  <routing>
+	<goals>
+		<goal id="0" final="true" caption="goal 0">
+			<polygon>
+				<vertex px="29" py="-2" />
+				<vertex px="29" py="2" />
+				<vertex px="30" py="2" />
+				<vertex px="30" py="-2" />
+				<vertex px="29" py="-2" />
+			</polygon>
+		</goal>
+		<goal id="1" final="true" caption="goal 1">
+			<polygon>
+				<vertex px="-4" py="-2" />
+				<vertex px="-4" py="2" />
+				<vertex px="-3" py="2" />
+				<vertex px="-3" py="-2" />
+				<vertex px="-4" py="-2" />
+			</polygon>
+		</goal>
+	</goals>
+  </routing>
+  
+  
+  
+  
+  
+  
+  <agents operational_model_id="6">
+    <agents_distribution>
+		<group agent_parameter_id="2" goal_id="0" group_id="0" number="0" room_id="1" router_id="1" subroom_id="0" />
+		<group agent_parameter_id="2" goal_id="1" group_id="1" number="0" room_id="1" router_id="1" subroom_id="0" />			
+	</agents_distribution>
+	<agents_sources>
+		<source agents_max="25" caption="source 1" frequency="1" Rate="1" greedy="false" group_id="0" id="1" />
+		<source agents_max="25" caption="source 2" frequency="1" Rate="1" greedy="false" group_id="1" id="2" />
+		<source agents_max="25" caption="source 3" frequency="1" Rate="1" greedy="false" group_id="0" id="3" />
+		<source agents_max="25" caption="source 4" frequency="1" Rate="1" greedy="false" group_id="1" id="4" />
+	</agents_sources>
+  </agents>
+ 
+  <operational_models>
+  <model description="gcvm" operational_model_id="6">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+		<periodic>1</periodic>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.1" a="6" />
+        <force_wall D="0.15" a="6" />
+		<time_parameters Td="0.2" Ts="1.0" />
+		<GCVM using="1" />
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.2" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+    </model>
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file
diff --git a/demos/scenario_24_bidirection/bidirection_ini_wider.xml b/demos/scenario_24_bidirection/bidirection_ini_wider.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e503c1607ea0d7e04bb26fe1d52efbbd27a06880
--- /dev/null
+++ b/demos/scenario_24_bidirection/bidirection_ini_wider.xml
@@ -0,0 +1,92 @@
+<JuPedSim xmlns:ns0="http://xsd.jupedsim.org/jps_ini_core.xsd" project="JPS-Project" version="0.8" ns0:noNamespaceSchemaLocation="ini.xsd">
+  <seed>1.0</seed>
+  
+  <num_threads>8</num_threads>
+  <max_sim_time unit="sec">200</max_sim_time>
+  <logfile>log.txt</logfile>
+  <geometry>bidirection_geo_wider.xml</geometry>
+  
+  <trajectories embed_mesh="false" format="xml-plain" fps="20" color_mode ="group">
+    <file location="bidirection_traj_wider.xml" /> 
+  </trajectories>
+  
+  <show_statistics>false</show_statistics>
+  
+  <routing>
+	<goals>
+		<goal id="0" final="true" caption="goal 0">
+			<polygon>
+				<vertex px="29" py="-2" />
+				<vertex px="29" py="2" />
+				<vertex px="30" py="2" />
+				<vertex px="30" py="-2" />
+				<vertex px="29" py="-2" />
+			</polygon>
+		</goal>
+		<goal id="1" final="true" caption="goal 1">
+			<polygon>
+				<vertex px="-4" py="-2" />
+				<vertex px="-4" py="2" />
+				<vertex px="-3" py="2" />
+				<vertex px="-3" py="-2" />
+				<vertex px="-4" py="-2" />
+			</polygon>
+		</goal>
+	</goals>
+  </routing>
+  
+  
+  
+  
+  
+  
+  <agents operational_model_id="6">
+    <agents_distribution>
+		<group agent_parameter_id="2" goal_id="0" group_id="0" number="100" room_id="0" router_id="1" subroom_id="0" />
+		<group agent_parameter_id="2" goal_id="1" group_id="1" number="100" room_id="0" router_id="1" subroom_id="0" />			
+	</agents_distribution>
+  </agents>
+ 
+  <operational_models>
+  <model description="gcvm" operational_model_id="6">
+      <model_parameters>
+        <solver>euler</solver>
+        <stepsize>0.05</stepsize>
+		<periodic>1</periodic>
+        <exit_crossing_strategy>3</exit_crossing_strategy>
+        <linkedcells cell_size="300" enabled="true" />
+        <force_ped D="0.1" a="10" />
+        <force_wall D="0.15" a="6" />
+		<time_parameters Td="0.2" Ts="1.0" />
+		<GCVM using="1" />
+      </model_parameters>
+      <agent_parameters agent_parameter_id="1">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.2" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="1" /> 
+      </agent_parameters>
+	  <agent_parameters agent_parameter_id="2">
+        <v0 mu="1.34" sigma="0.26" />
+        <bmax mu="0.25" sigma="0.00000" /> 
+        <bmin mu="0.15" sigma="0.00000" />
+        <amin mu="0.18" sigma="0.00000" />
+        <atau mu="0.0" sigma="0.00000" />
+		<tau mu="0.5" sigma="0.000" />
+		<shape circle="0" /> 
+      </agent_parameters>
+    </model>
+  </operational_models>
+
+  <route_choice_models>
+    <router description="local_shortest" router_id="1">
+      <parameters>
+        
+      </parameters>
+    </router>
+  </route_choice_models>
+
+</JuPedSim>
\ No newline at end of file