diff --git a/pedestrian/Pedestrian.cpp b/pedestrian/Pedestrian.cpp
index c945270e57cbbdeac0464595944da442ec182a91..e7d46fd461e1c6d724c88415af49431e097b41d5 100644
--- a/pedestrian/Pedestrian.cpp
+++ b/pedestrian/Pedestrian.cpp
@@ -1293,8 +1293,8 @@ void Pedestrian::LeaveGoal()
 
 bool Pedestrian::IsWaiting() const
 {
-//     return _waiting;
-     return true;
+     return _waiting;
+//     return true;
 }
 
 const Point& Pedestrian::GetWaitingPos() const
diff --git a/routing/direction/waiting/WaitingProbability.cpp b/routing/direction/waiting/WaitingProbability.cpp
index 36b10b622c213ee3015b4b40423d31b484a7c673..440a16aee04fc0d32efde2ab2c0261f3302c8575 100644
--- a/routing/direction/waiting/WaitingProbability.cpp
+++ b/routing/direction/waiting/WaitingProbability.cpp
@@ -32,8 +32,8 @@ void  WaitingProbability::Init(Building* building){
 void WaitingProbability::parseBuilding(Building* building){
      Log->Write("Start parseBuilding");
 
-     double stepSizeX = 2.*0.125;
-     double stepSizeY = 2.*0.125;
+     double stepSizeX = 0.5*0.125;
+     double stepSizeY = 0.5*0.125;
 
      std::vector<Line> _wall;
      std::vector<Line> _exitsFromScope;
@@ -112,9 +112,12 @@ void WaitingProbability::parseBuilding(Building* building){
 }
 
 Point WaitingProbability::GetWaitingPosition(Room* room, Pedestrian* ped){
-     SubRoom* subRoom = room->GetSubRoom(ped->GetSubRoomID());
 
-     int uid = subRoom->GetUID();
+//     int uid = subRoom->GetUID();
+     int uid = 1;
+
+     SubRoom* subRoom = room->GetSubRoom(uid);
+
      double x=0., y=0.;
 
      int gridSize = _gridMap.at(uid)->GetnPoints();
@@ -155,7 +158,7 @@ Point WaitingProbability::GetWaitingPosition(Room* room, Pedestrian* ped){
                x = _gridMap.at(uid)->get_x_fromKey(i);
                y = _gridMap.at(uid)->get_y_fromKey(i);
 
-               if (subRoom->IsInSubRoom(Point(x,y)) && distanceField.at(i) > 0.75 ){
+               if (subRoom->IsInSubRoom(Point(x,y)) && distanceField.at(i) > 0.75){
                     bool inObs = false;
                     for (auto obs : subRoom->GetAllObstacles()){
                          if (obs->Contains(Point(x,y))){
@@ -492,8 +495,8 @@ void WaitingProbability::computeDynamicDistance(const SubRoom* subroom, std::vec
      double minDist = DBL_MAX;
 
      int step = 1;
-//     for (auto trans : subroom->GetAllTransitions()){
-     for (auto trans : _transitions){
+     for (auto trans : subroom->GetAllTransitions()){
+//     for (auto trans : _transitions){
           Point p1 = trans->GetPoint1();
           Point p2 = trans->GetPoint2();
           Point direction = p2 -p1;
@@ -663,11 +666,12 @@ void WaitingProbability::combineAll(const SubRoom* subroom,
 
      for (int i = 0; i<_gridMap.at(uid)->GetnPoints(); ++i) {
           double value =
-                    10.*_flowMap.at(uid).at(i)+
+                    1000.*_flowMap.at(uid).at(i)+
                     1.*_angleMap.at(uid).at(i)+
-                    50.*_attractionRepulsionMap.at(uid).at(i)+
-                    50.*_wallPreferenceMap.at(uid).at(i) +
-                    100.*distDyn.at(i) ;
+                    1000.*_attractionRepulsionMap.at(uid).at(i)+
+                    5.*_wallPreferenceMap.at(uid).at(i) +
+                    1.*distDyn.at(i) ;
+                    1.*distDyn.at(i) ;
 
           double filter = distProb.at(i) *  _forbiddenMap.at(uid).at(i);
           _valueMap.at(uid).at(i) = value;
@@ -753,8 +757,8 @@ void WaitingProbability::computeFlowAvoidance(const SubRoom* subroom){
      Point xAxis(1., 0.);
      double flow = 0.;
 
-//     for (auto trans : subroom->GetAllTransitions()) {
-     for (auto trans : _transitions){
+     for (auto trans : subroom->GetAllTransitions()) {
+//     for (auto trans : _transitions){
           flow = 0.;
 
           Point centre = trans->GetCentre();
@@ -872,12 +876,12 @@ void WaitingProbability::computeWallDistance(const SubRoom* subroom){
 
           if (subroom->IsInSubRoom(p)){
 
-//               for (auto line : subroom->GetAllTransitions()) {
-//                    minDist = std::min(minDist, line->DistTo(p));
-//               }
-//               for (auto line : subroom->GetAllWalls()){
-//                    minDist = std::min(minDist, line.DistTo(p));
-//               }
+               for (auto line : subroom->GetAllTransitions()) {
+                    minDist = std::min(minDist, line->DistTo(p));
+               }
+               for (auto line : subroom->GetAllWalls()){
+                    minDist = std::min(minDist, line.DistTo(p));
+               }
 
                for (auto obs : subroom->GetAllObstacles()){
                     for (auto line : obs->GetAllWalls()){
@@ -903,7 +907,7 @@ void WaitingProbability::computeWallPreference(const SubRoom* subroom){
 
           if (subroom->IsInSubRoom(p)) {
                double dist = _wallDistanceMap.at(uid).at(i);
-               _wallPreferenceMap.at(uid).at(i) = 1. * exp(-1* dist *dist);
+               _wallPreferenceMap.at(uid).at(i) = 1. * exp(-1* dist *dist/0.5);
           }
      }
 
@@ -916,20 +920,31 @@ void WaitingProbability::computeAttractionRepulsionZones(const SubRoom* subroom)
      int uid = subroom->GetUID();
 
      //TODO read from file
-     double xMinAtt1 = 1;
-     double xMaxAtt1 = 4;
-     double yMinAtt1 = -2;
-     double yMaxAtt1 = 2;
+//     double xMinAtt1 = 1;
+//     double xMaxAtt1 = 4;
+//     double yMinAtt1 = -2;
+//     double yMaxAtt1 = 2;
+//
+//     double xMinAtt2 = 20;
+//     double xMaxAtt2 = 24;
+//     double yMinAtt2 = -0.5;
+//     double yMaxAtt2 = 0.5;
+//
+//     double xMinAtt3 = 36;
+//     double xMaxAtt3 = 39;
+//     double yMinAtt3 = -2;
+//     double yMaxAtt3 = 2;
+
+     double xMinAtt1 = 0.5;
+     double xMaxAtt1 = 1.5;
+     double yMinAtt1 = 3.5;
+     double yMaxAtt1 = 4.5;
 
-     double xMinAtt2 = 20;
-     double xMaxAtt2 = 24;
-     double yMinAtt2 = -0.5;
-     double yMaxAtt2 = 0.5;
+     double xMinAtt2 = 4.5;
+     double xMaxAtt2 = 5.5;
+     double yMinAtt2 = 3.5;
+     double yMaxAtt2 = 4.5;
 
-     double xMinAtt3 = 36;
-     double xMaxAtt3 = 39;
-     double yMinAtt3 = -2;
-     double yMaxAtt3 = 2;
 
      for (int i=0; i< _gridMap.at(uid)->GetnPoints(); ++i) {
           double x = _gridMap.at(uid)->get_x_fromKey(i);
@@ -941,12 +956,13 @@ void WaitingProbability::computeAttractionRepulsionZones(const SubRoom* subroom)
                     _attractionRepulsionMap.at(uid).at(i) = 1.;
                }
                if ( xMinAtt2 <= x && x <= xMaxAtt2 && yMinAtt2 <= y && y <= yMaxAtt2){
-                    _attractionRepulsionMap.at(uid).at(i) = 1.;
-               }
-               if ( xMinAtt3 <= x && x <= xMaxAtt3 && yMinAtt3 <= y && y <= yMaxAtt3){
-                    _attractionRepulsionMap.at(uid).at(i) = 1.;
+                    _attractionRepulsionMap.at(uid).at(i) = -1.;
                }
 
+//               if ( xMinAtt3 <= x && x <= xMaxAtt3 && yMinAtt3 <= y && y <= yMaxAtt3){
+//                    _attractionRepulsionMap.at(uid).at(i) = 1.;
+//               }
+
 //               if ( xMinRep <= x && x <= xMaxRep && yMinRep <= y && y <= yMaxRep){
 //                    _attractionRepulsionMap.at(uid).at(i) = 1.;
 //               }
@@ -962,20 +978,20 @@ void WaitingProbability::computeForbiddenZones(const SubRoom* subroom){
      int uid = subroom->GetUID();
 
      //TODO read from file
-     double xMin1 = 0;
-     double xMax1 = 40;
-     double yMin1 = 4.5;
-     double yMax1 = 5;
-
-     double xMin2 = 0;
-     double xMax2 = 40;
-     double yMin2 = -5;
-     double yMax2 = -4.5;
-
-     double xMin3 = 5;
-     double xMax3 = 12;
-     double yMin3 = -2;
-     double yMax3 = 2;
+//     double xMin1 = 0;
+//     double xMax1 = 40;
+//     double yMin1 = 4.5;
+//     double yMax1 = 5;
+//
+//     double xMin2 = 0;
+//     double xMax2 = 40;
+//     double yMin2 = -5;
+//     double yMax2 = -4.5;
+//
+//     double xMin3 = 5;
+//     double xMax3 = 12;
+//     double yMin3 = -2;
+//     double yMax3 = 2;
 
      for (int i=0; i< _gridMap.at(uid)->GetnPoints(); ++i) {
           double x = _gridMap.at(uid)->get_x_fromKey(i);
@@ -983,15 +999,15 @@ void WaitingProbability::computeForbiddenZones(const SubRoom* subroom){
           Point p(x, y);
 
           if (subroom->IsInSubRoom(p)) {
-               if ( xMin1 <= x && x <= xMax1 && yMin1 <= y && y <= yMax1){
-                    _forbiddenMap.at(uid).at(i) = 0.;
-               } else if ( xMin2 <= x && x <= xMax2 && yMin2 <= y && y <= yMax2){
-                    _forbiddenMap.at(uid).at(i) = 0.;
-               } else if ( xMin3 <= x && x <= xMax3 && yMin3 <= y && y <= yMax3){
-                    _forbiddenMap.at(uid).at(i) = 0.;
-               } else {
+//               if ( xMin1 <= x && x <= xMax1 && yMin1 <= y && y <= yMax1){
+//                    _forbiddenMap.at(uid).at(i) = 0.;
+//               } else if ( xMin2 <= x && x <= xMax2 && yMin2 <= y && y <= yMax2){
+//                    _forbiddenMap.at(uid).at(i) = 0.;
+//               } else if ( xMin3 <= x && x <= xMax3 && yMin3 <= y && y <= yMax3){
+//                    _forbiddenMap.at(uid).at(i) = 0.;
+//               } else {
                     _forbiddenMap.at(uid).at(i) = 1.;
-               }
+//               }
           }
      }
 }
@@ -1015,8 +1031,8 @@ void WaitingProbability::computeAngleCost(const SubRoom* subroom){
           Point p(x, y);
 
           if (subroom->IsInSubRoom(p)) {
-//               for (auto trans : subroom->GetAllTransitions()) {
-               for (auto trans : _transitions) {
+               for (auto trans : subroom->GetAllTransitions()) {
+//               for (auto trans : _transitions) {
                     Transition normal;
                     normal.SetPoint1(trans->GetCentre());
                     normal.SetPoint2(trans->GetCentre()+trans->NormalVec());
@@ -1031,14 +1047,14 @@ void WaitingProbability::computeAngleCost(const SubRoom* subroom){
                          minAngle = 0.5 * pi;
                     }
 
-                    if (x < 12){
+                    if (y > 3){
                          minAngle = 0.5 * pi;
                     }
 //                    minAngle = std::max(minAngle, tmpAngle);
                }
 
-               _angleMap.at(uid).at(i) = -1. * a * std::pow(minAngle, alpha);
-//               _angleMap.at(uid).at(i) = minAngle;
+//               _angleMap.at(uid).at(i) = -1. * a * std::pow(minAngle, alpha);
+               _angleMap.at(uid).at(i) = minAngle;
           }
 //                    Point p0 = trans->GetPoint2() - trans->GetPoint1();
 //
@@ -1092,7 +1108,7 @@ void WaitingProbability::computeAngleCost(const SubRoom* subroom){
 //     std::cout << "min value: " << *std::min_element(_angleMap.at(uid).begin(), _angleMap.at(uid).end()) << std::endl;
 
 //     markOutside(_angleMap.at(uid), subroom);
-     bool foo = true;
+//     bool foo = true;
 
 }