diff --git a/src/ModelCheckerTh.cpp b/src/ModelCheckerTh.cpp
index 338945b375d90f0635535a494259341f58b9402f..7e76293f89fa9c8d089aefbbab482c7821f2bc08 100644
--- a/src/ModelCheckerTh.cpp
+++ b/src/ModelCheckerTh.cpp
@@ -140,13 +140,11 @@ LDDState * ModelCheckerTh::buildInitialMetaState()
     m_graph->insert(c);
     Set fire=firable_obs(initial_meta_state);
     int j=0;
-    for(auto it=fire.begin();it!=fire.end();it++,j++)
-    m_st[j%m_nb_thread].push(couple_th(c,*it));
-    cout<<"Before barrier 1 "<<__func__<<endl;
+    for(auto it=fire.begin(); it!=fire.end(); it++,j++)
+        m_st[j%m_nb_thread].push(couple_th(c,*it));
     pthread_barrier_wait(&m_barrier_threads);
-    cout<<"Before barrier 2 "<<__func__<<endl;
     pthread_barrier_wait(&m_barrier_builder);
-    cout<<"Leaving "<<__func__<<endl;
+    c->setVisited();
     return c;
 }
 
@@ -154,13 +152,11 @@ void ModelCheckerTh::buildSucc(LDDState *agregate)
 {
     if (!agregate->isVisited())
     {
-       agregate->setVisited();
-
-
-       Set fire=firable_obs(agregate->getLDDValue());
+        agregate->setVisited();
+        Set fire=firable_obs(agregate->getLDDValue());
         int j=0;
-        for(auto it=fire.begin();it!=fire.end();it++,j++)
-        m_st[j%m_nb_thread].push(couple_th(agregate,*it));
+        for(auto it=fire.begin(); it!=fire.end(); it++,j++)
+            m_st[j%m_nb_thread].push(couple_th(agregate,*it));
         pthread_barrier_wait(&m_barrier_threads);
         pthread_barrier_wait(&m_barrier_builder);
         //Wait for all threads to finish their work
@@ -182,100 +178,58 @@ void * ModelCheckerTh::Compute_successors()
     cout<<"Thread id : "<<id_thread<<endl;
     do
     {
-        cout<<"Before barrier threads "<<__func__<<" Thread id "<<id_thread<<endl;
         pthread_barrier_wait(&m_barrier_threads);
         while (!m_st[id_thread].empty())
         {
-
-            pthread_spin_lock(&m_spin_stack[id_thread]);
             couple_th elt=m_st[id_thread].top();
-            //pthread_spin_lock(&m_accessible);
             m_st[id_thread].pop();
-
-            pthread_spin_unlock(&m_spin_stack[id_thread]);
             LDDState *aggregate=elt.first;
             MDD meta_state=aggregate->getLDDValue();
             int transition=elt.second;
-
-            //compute successors
-
-
-
-
-                MDD complete_state=Accessible_epsilon(get_successor(meta_state,transition));
-
-                reached_class=new LDDState;
-                reached_class->m_lddstate=complete_state;
-                pthread_mutex_lock(&m_graph_mutex);
-                LDDState* pos=m_graph->find(reached_class);
-
-                if(!pos)
-                {
-                    m_graph->addArc();
-                    m_graph->insert(reached_class);
-                    pthread_mutex_unlock(&m_graph_mutex);
-                    aggregate->Successors.insert(aggregate->Successors.begin(),LDDEdge(reached_class,transition));
-                    reached_class->Predecessors.insert(reached_class->Predecessors.begin(),LDDEdge(aggregate,transition));
-
-                }
-                else
-                {
-                    m_graph->addArc();
-                    pthread_mutex_unlock(&m_graph_mutex);
-                    aggregate->Successors.insert(aggregate->Successors.begin(),LDDEdge(pos,transition));
-                    pos->Predecessors.insert(pos->Predecessors.begin(),LDDEdge(aggregate,transition));
-                    delete reached_class;
-                }
+            MDD complete_state=Accessible_epsilon(get_successor(meta_state,transition));
+            reached_class=new LDDState;
+            reached_class->m_lddstate=complete_state;
+            pthread_mutex_lock(&m_graph_mutex);
+            LDDState* pos=m_graph->find(reached_class);
+            if(!pos)
+            {
+                m_graph->addArc();
+                m_graph->insert(reached_class);
+                pthread_mutex_unlock(&m_graph_mutex);
+                aggregate->Successors.insert(aggregate->Successors.begin(),LDDEdge(reached_class,transition));
+                reached_class->Predecessors.insert(reached_class->Predecessors.begin(),LDDEdge(aggregate,transition));
+            }
+            else
+            {
+                m_graph->addArc();
+                pthread_mutex_unlock(&m_graph_mutex);
+                aggregate->Successors.insert(aggregate->Successors.begin(),LDDEdge(pos,transition));
+                pos->Predecessors.insert(pos->Predecessors.begin(),LDDEdge(aggregate,transition));
+                delete reached_class;
+            }
 
         }
-        cout<<"Before barrier builder "<<__func__<<" Thread id "<<id_thread<<endl;
         pthread_barrier_wait(&m_barrier_builder);
-
     }
     while (1);
 
 }
 
-bool ModelCheckerTh::isNotTerminated()
-{
-    bool res=true;
-    int i=0;
-    while (i<m_nb_thread && res)
-    {
-        res=m_terminaison[i];
-        i++;
-    }
-    return !res;
-}
 
-int ModelCheckerTh::minCharge()
-{
-    int pos=0;
-    int min_charge=m_charge[0];
-    for (int i=1; i<m_nb_thread; i++)
-    {
-        if (m_charge[i]<min_charge)
-        {
-            min_charge=m_charge[i];
-            pos=i;
-        }
-    }
-    return pos;
-
-}
 
 void * ModelCheckerTh::threadHandler(void *context)
 {
     return ((ModelCheckerTh*)context)->Compute_successors();
 }
 
-void ModelCheckerTh::ComputeTh_Succ(){
+void ModelCheckerTh::ComputeTh_Succ()
+{
 
 
     int rc;
- //   m_graph=&g;
- //   m_graph->setTransition(m_transitionName);
- //   m_graph->setPlace(m_placeName);
+//   m_graph=&g;
+//   m_graph->setTransition(m_transitionName);
+//   m_graph->setPlace(m_placeName);
     m_id_thread=0;
 
     pthread_mutex_init(&m_mutex, NULL);
@@ -294,11 +248,11 @@ void ModelCheckerTh::ComputeTh_Succ(){
             cout<<"error: pthread_create, rc: "<<rc<<endl;
         }
     }
-   /* Compute_successors();
-    for (int i = 0; i < m_nb_thread-1; i++)
-    {
-        pthread_join(m_list_thread[i], NULL);
-    }*/
+    /* Compute_successors();
+     for (int i = 0; i < m_nb_thread-1; i++)
+     {
+         pthread_join(m_list_thread[i], NULL);
+     }*/
 
 
 }
diff --git a/src/ModelCheckerTh.h b/src/ModelCheckerTh.h
index 305096658fc736dc898ae801dc2e7e4e0fd43254..e92aea86b4177a50159370bc62e2b80bdb89a976 100644
--- a/src/ModelCheckerTh.h
+++ b/src/ModelCheckerTh.h
@@ -15,20 +15,13 @@ public:
     static void *threadHandler(void *context);
     void *Compute_successors();
     void ComputeTh_Succ();
-    int minCharge();
-    bool isNotTerminated();
-
-
 private:
     int m_nb_thread;
     MDD m_initalMarking;
     int m_min_charge;
     pile_t m_st[128];
     int m_charge[128];
-    bool m_terminaison[128];
-    int m_id_thread;
-
-
+    int m_id_thread;
     pthread_mutex_t m_mutex;
     pthread_mutex_t m_graph_mutex;
     pthread_mutex_t m_gc_mutex;
@@ -38,7 +31,6 @@ private:
     unsigned int m_gc;
 
     pthread_mutex_t m_mutex_stack[128];
-    pthread_spinlock_t m_spin_stack[128];
     pthread_t m_list_thread[128];
 };
 #endif