*/
    public Direction navigateToDestination() {
        if(destination==null || br.curLoc.equals(destination)) 
            return null; 
        
        Direction dir = Direction.NONE;
        
        switch(mode) {
        case RANDOM:
            dir = navigateRandomly(destination);
            break;
        case GREEDY:
            if(movesOnSameTarget > 2 * expectedMovesToReachTarget) 
                dir = navigateRandomly(destination);
            else
                dir = navigateGreedy(destination);
            break;
        case BUG:
            dir = navigateBug();
//          if(movesOnSameTarget % (3*expectedMovesToReachTarget) == 0) {
//              normalBug.reset();
//          }
            break;
     /*   case TANGENT_BUG:
            dir = navigateTangentBug();
            if(movesOnSameTarget % expectedMovesToReachTarget == 0) {
                int n = movesOnSameTarget / expectedMovesToReachTarget;
                if(n>=2) {
                    tangentBug.resetWallTrace(Math.min(
                            TangentBug.DEFAULT_MIN_PREP_TURNS*n, 50), 0.4);
                }
            }
            break;*/
        }
        
        if(dir==null || dir==Direction.NONE || dir==Direction.OMNI) 
            return null; 
        
        movesOnSameTarget++;
        return dir;
    }