diff --git a/G17_bykes/main.c b/G17_bykes/main.c
index 57fde56aaaa549257146077449ff3c49b6cd4bf9..f8adf0c2bc030837b6e706902eba71b7d00a71a1 100644
--- a/G17_bykes/main.c
+++ b/G17_bykes/main.c
@@ -7,49 +7,48 @@
 #include <time.h>
 #include <semaphore.h>
 
-#define CAMION_CAPACITE_MAX 4
-#define CAMION_CAPACITE_TYP 2
-#define SITE_CAPACITE_MIN 2
+#define TRUCK_CAPACITE_MAX 4
+#define TRUCK_CAPACITE_TYP 2
+#define CITY_CAPACITY_MIN 2
 
 #define DEPOT  0
 
-sem_t *sem_BorneFree;
+sem_t *sem_FreeSlot;
 sem_t *sem_BikeFree;
 pthread_mutex_t *mutex;
 pthread_barrier_t b;
 
-bool end = false;
 int personsFinished=0;
 
-struct habitant{
+struct civilian{
     int num_thread;
     int nb_trajet;
     int max_trajets;
-    int i_site;
-    int nbSites;
-    int nbornes;
+    int i_cities;
+    int nbcitiess;
+    int nslotss;
 };
 
-struct camionette{
+struct Truck{
     int num_thread;
-    int n_Velo;
-    int i_site;
-    int nbSites;
-    int nbornes;
-    int nbHabs;
+    int n_bike;
+    int i_cities;
+    int nbcitiess;
+    int nslotss;
+    int nbCivilians;
 };
 
-struct site{
+struct cities{
     int nb_bikesParked;
     int nb_P_waiting;
 };
 
 int rand_Dc();
 int rand_D();
-//void habitants_PassiveMode(void *arg);
-void *Camion(void *arg);
-void *habitants(void *arg);
-struct site *sites; //this table is the size of the number of sites, each sites has NParkinglot and each numbers represents a free parkinglot
+//void civilians_PassiveMode(void *arg);
+void *trucks(void *arg);
+void *civilians(void *arg);
+struct cities *citiess; //this table is the size of the number of citiess, each citiess has NParkinglot and each numbers represents a free parkinglot
 
 
 int main(int argc, char **argv){
@@ -57,149 +56,145 @@ int main(int argc, char **argv){
         perror("erreur d'arguments d'entrée\n");
         return EXIT_FAILURE;
     }
-    int nbSites = atoi(argv[1]);    //S 10 
-    int nbHabs = atoi(argv[2]);     //H 100
-    int nbTrajets = atoi(argv[3]);  //M 10
-    int nbBorne = atoi(argv[4]);    //N 10
-    nbSites += 1;
+    int nbcitiess = atoi(argv[1]);      //S 10 
+    int nbCivilians = atoi(argv[2]);    //H 100
+    int nbTrajets = atoi(argv[3]);      //M 10
+    int nbslots = atoi(argv[4]);        //N 10
+    nbcitiess += 1;
     srand(0);
 
     
-    pthread_t *threadHabs = malloc(sizeof(pthread_t)*nbHabs);
-    pthread_t *threadCam = malloc(sizeof(pthread_t));
-    sites = calloc(nbSites, sizeof(struct site));
-    struct habitant *habs = calloc(nbHabs, sizeof(struct habitant));
-    struct camionette *camion = malloc(sizeof(struct camionette));
-
-    for(int j = 0; j<nbSites; j++){
-        sites[j].nb_bikesParked = nbBorne-2;
-        sites[j].nb_P_waiting = 0;
+    pthread_t *threadCivilians = malloc(sizeof(pthread_t)*nbCivilians);
+    pthread_t *threadTruck = malloc(sizeof(pthread_t));
+    citiess = calloc(nbcitiess, sizeof(struct cities));
+    struct civilian *Civilians = calloc(nbCivilians, sizeof(struct civilian));
+    struct Truck *truck = malloc(sizeof(struct Truck));
+
+    for(int j = 0; j<nbcitiess; j++){
+        citiess[j].nb_bikesParked = nbslots-2;
+        citiess[j].nb_P_waiting = 0;
     }
-    sites[DEPOT].nb_bikesParked = 0; //depot avec 0 velos au depart
-
-    camion->i_site = 0;
-    camion->n_Velo = CAMION_CAPACITE_TYP;
-    camion->nbornes = nbBorne;
-    camion->num_thread = nbHabs;
-    camion->nbSites = nbSites;
-    camion->nbHabs = nbHabs;
-
-    sem_BikeFree = malloc(sizeof(sem_t)*nbSites);
-    sem_BorneFree = malloc(sizeof(sem_t)*nbSites);
-    //mutex = malloc(sizeof(pthread_mutex_t)*(nbHabs+1));
-    mutex = malloc(sizeof(pthread_mutex_t)*nbSites);
-
-    for(int x =0; x<nbSites; x++){
-        sem_init(&sem_BikeFree[x], 0, nbBorne-2);//8);
-        sem_init(&sem_BorneFree[x], 0, nbBorne-(nbBorne-2));//2);
-        pthread_mutex_init(&mutex[x], NULL); //mutex du camion
+    citiess[DEPOT].nb_bikesParked = 0;
+
+    truck->i_cities = 0;
+    truck->n_bike = TRUCK_CAPACITE_TYP;
+    truck->nslotss = nbslots;
+    truck->num_thread = nbCivilians;
+    truck->nbcitiess = nbcitiess;
+    truck->nbCivilians = nbCivilians;
+
+    sem_BikeFree = malloc(sizeof(sem_t)*nbcitiess);
+    sem_FreeSlot = malloc(sizeof(sem_t)*nbcitiess);
+    mutex = malloc(sizeof(pthread_mutex_t)*nbcitiess);
+
+    for(int x =0; x<nbcitiess; x++){
+        sem_init(&sem_BikeFree[x], 0, nbslots-2);//8);
+        sem_init(&sem_FreeSlot[x], 0, nbslots-(nbslots-2));//2);
+        pthread_mutex_init(&mutex[x], NULL); //mutex du truck
     }
 
-    pthread_barrier_init(&b, NULL, nbHabs);
+    pthread_barrier_init(&b, NULL, nbCivilians);
 
-    if(pthread_create(threadCam, NULL, Camion, (void*)camion)!=0){
+    if(pthread_create(threadTruck, NULL, trucks, (void*)truck)!=0){
         perror("thread creation error");
         return EXIT_FAILURE;
     }
-    for(int i=0; i<nbHabs; i++){
-        habs[i].max_trajets = nbTrajets;
-        habs[i].nbornes = nbBorne;
-        habs[i].nbSites = nbSites;
-        habs[i].num_thread = i;
-        habs[i].nb_trajet = 0;
-        habs[i].i_site = (rand()%(habs[i].nbSites - 1))+1;
-        pthread_mutex_init(&mutex[i], NULL); //mutex par habitants
-        if(pthread_create(&threadHabs[i], NULL, habitants, (void*)&habs[i])!=0){
+    for(int i=0; i<nbCivilians; i++){
+        Civilians[i].max_trajets = nbTrajets;
+        Civilians[i].nslotss = nbslots;
+        Civilians[i].nbcitiess = nbcitiess;
+        Civilians[i].num_thread = i;
+        Civilians[i].nb_trajet = 0;
+        Civilians[i].i_cities = (rand()%(Civilians[i].nbcitiess - 1))+1;
+        pthread_mutex_init(&mutex[i], NULL); //mutex par civilians
+        if(pthread_create(&threadCivilians[i], NULL, civilians, (void*)&Civilians[i])!=0){
             perror("thread creation error");
             return EXIT_FAILURE;
         }
     }
 
     //pthread_barrier_wait(&b);
-    if(pthread_join(*threadCam, NULL)){ // va retourner un truc après
+    if(pthread_join(*threadTruck, NULL)){
         perror("thread join error");
         return EXIT_FAILURE;
     }
     //thread join
-    for(int i=0; i<nbHabs; i++){
-        if(pthread_join(threadHabs[i], NULL)){ //va retourner un truc après
+    for(int i=0; i<nbCivilians; i++){
+        if(pthread_join(threadCivilians[i], NULL)){
             perror("thread join error");
             return EXIT_FAILURE;
         }
     }
 
     //free the memory
-    for(int i=0; i<nbSites; i++){
+    for(int i=0; i<nbcitiess; i++){
         sem_destroy(&sem_BikeFree[i]);
-        sem_destroy(&sem_BorneFree[i]);
+        sem_destroy(&sem_FreeSlot[i]);
     }
-    for(int i=0; i<nbHabs+1; i++){
+    for(int i=0; i<nbCivilians+1; i++){
         pthread_mutex_destroy(&mutex[i]);
     }
     pthread_barrier_destroy(&b);
-    free(threadHabs);
-    free(threadCam);
+    free(threadCivilians);
+    free(threadTruck);
     free(sem_BikeFree);
-    free(sem_BorneFree);
+    free(sem_FreeSlot);
     free(mutex);
     printf("***************** CYCLING TERMINATED ***************\n");
     int sum=0;
-    for(int i=1; i<nbSites; i++){
-        printf("Terminal %d contains %d bikes\n", i, sites[i].nb_bikesParked);
-        sum+=sites[i].nb_bikesParked;
+    for(int i=1; i<nbcitiess; i++){
+        printf("Terminal %d contains %d bikes\n", i, citiess[i].nb_bikesParked);
+        sum+=citiess[i].nb_bikesParked;
     }
-    printf("total number of bikes in town: %d, in depot: %d, in truck: %d, total: %d\n", sum, sites[DEPOT].nb_bikesParked, camion->n_Velo, camion->n_Velo+sites[DEPOT].nb_bikesParked+sum);
+    printf("total number of bikes in town: %d, in depot: %d, in truck: %d, total: %d\n", sum, citiess[DEPOT].nb_bikesParked, truck->n_bike, truck->n_bike+citiess[DEPOT].nb_bikesParked+sum);
 
-    free(habs);
-    free(camion);
-    free(sites);
-
-    //srand(time(NULL));
-    //nb sites, nb habs, nb de voyaegs par habitants, nb de bornes par sites
+    free(Civilians);
+    free(truck);
+    free(citiess);
     return EXIT_SUCCESS;
 }
 
-void *habitants(void *arg){
-    struct habitant *hab = (struct habitant*)arg;
+void *civilians(void *arg){
+    struct civilian *hab = (struct civilian*)arg;
     int j=0;
     int val;
-    // inside a Mtrajets loop for each habitants
+    // inside a Mtrajets loop for each civilians
     while(hab->nb_trajet < hab->max_trajets){
-        //waits for a bike in site i
-        //if(hab->i_site==4){
-        sem_getvalue(&sem_BorneFree[hab->i_site],&val);
-        pthread_mutex_lock(&mutex[hab->i_site]);
-        printf("(GET) person %d starts from terminal %d (%d bykes, %d persons waiting, semBorneFree_val : %d)\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked, sites[hab->i_site].nb_P_waiting, val);//sites[hab->i_site].nb_P_waiting);
-        pthread_mutex_unlock(&mutex[hab->i_site]);
+        //waits for a bike in cities i
+        //if(hab->i_cities==4){
+        sem_getvalue(&sem_FreeSlot[hab->i_cities],&val);
+        pthread_mutex_lock(&mutex[hab->i_cities]);
+        printf("(GET) person %d starts from terminal %d (%d bykes, %d persons waiting, semslotsFree_val : %d)\n", hab->num_thread, hab->i_cities, citiess[hab->i_cities].nb_bikesParked, citiess[hab->i_cities].nb_P_waiting, val);//citiess[hab->i_cities].nb_P_waiting);
+        pthread_mutex_unlock(&mutex[hab->i_cities]);
         //}
 
-        if(sites[hab->i_site].nb_bikesParked<=0){// && hab->i_site == 4){
-            printf("person %d is STUCK at terminal %d: rack empty : %d bikes\n", hab->num_thread, hab->i_site, sites[hab->i_site].nb_bikesParked);
+        if(citiess[hab->i_cities].nb_bikesParked<=0){// && hab->i_cities == 4){
+            printf("person %d is STUCK at terminal %d: rack empty : %d bikes\n", hab->num_thread, hab->i_cities, citiess[hab->i_cities].nb_bikesParked);
         }
 
-        pthread_mutex_lock(&mutex[hab->i_site]);
-        sites[hab->i_site].nb_P_waiting += 1;
-        pthread_mutex_unlock(&mutex[hab->i_site]);
+        pthread_mutex_lock(&mutex[hab->i_cities]);
+        citiess[hab->i_cities].nb_P_waiting += 1;
+        pthread_mutex_unlock(&mutex[hab->i_cities]);
 
 
-        sem_wait(&sem_BikeFree[hab->i_site]);
-        pthread_mutex_lock(&mutex[hab->i_site]);
-        sites[hab->i_site].nb_P_waiting -= 1;
-        sites[hab->i_site].nb_bikesParked -= 1; //critical section
-        //if(hab->i_site==4){
-        //printf("person %d leaves terminal %d by bike\n", hab->num_thread, hab->i_site);
+        sem_wait(&sem_BikeFree[hab->i_cities]);
+        pthread_mutex_lock(&mutex[hab->i_cities]);
+        citiess[hab->i_cities].nb_P_waiting -= 1;
+        citiess[hab->i_cities].nb_bikesParked -= 1; //critical section
+        //if(hab->i_cities==4){
+        //printf("person %d leaves terminal %d by bike\n", hab->num_thread, hab->i_cities);
         //}
-        pthread_mutex_unlock(&mutex[hab->i_site]);
-        sem_post(&sem_BorneFree[hab->i_site]);
-        //if(hab->i_site==4){
-        printf("person %d leaves terminal %d by bike\n", hab->num_thread, hab->i_site);
+        pthread_mutex_unlock(&mutex[hab->i_cities]);
+        sem_post(&sem_FreeSlot[hab->i_cities]);
+        //if(hab->i_cities==4){
+        printf("person %d leaves terminal %d by bike\n", hab->num_thread, hab->i_cities);
         //}
 
 
-        //go to place j = rand()%nsites and j != i
+        //go to place j = rand()%ncitiess and j != i
         do{
-            j = (rand()%(hab->nbSites - 1))+1;
-        }while(j==hab->i_site);
+            j = (rand()%(hab->nbcitiess - 1))+1;
+        }while(j==hab->i_cities);
         usleep(rand_D());
 
 
@@ -207,25 +202,25 @@ void *habitants(void *arg){
         //if(j==4){
         sem_getvalue(&sem_BikeFree[j],&val);
         pthread_mutex_lock(&mutex[j]);
-        printf("(PUT) person %d arrives at terminal %d (%d bykes, %d persons waiting, semBikeFree_val : %d)\n", hab->num_thread, j, sites[j].nb_bikesParked, sites[j].nb_P_waiting, val);//sites[j].nb_P_waiting);
+        printf("(PUT) person %d arrives at terminal %d (%d bykes, %d persons waiting, semBikeFree_val : %d)\n", hab->num_thread, j, citiess[j].nb_bikesParked, citiess[j].nb_P_waiting, val);//citiess[j].nb_P_waiting);
         pthread_mutex_unlock(&mutex[j]);
         //}
         
 
-        if(sites[j].nb_bikesParked>=hab->nbornes){//} && j == 4){
-            printf("person %d is STUCK at terminal %d: rack full : %d bikes\n", hab->num_thread, j, sites[j].nb_bikesParked);
+        if(citiess[j].nb_bikesParked>=hab->nslotss){//} && j == 4){
+            printf("person %d is STUCK at terminal %d: rack full : %d bikes\n", hab->num_thread, j, citiess[j].nb_bikesParked);
         }
 
         pthread_mutex_lock(&mutex[j]);
-        sites[j].nb_P_waiting += 1;
+        citiess[j].nb_P_waiting += 1;
         pthread_mutex_unlock(&mutex[j]);
 
 
-        sem_wait(&sem_BorneFree[j]);
+        sem_wait(&sem_FreeSlot[j]);
         pthread_mutex_lock(&mutex[j]);
         //deposit his bycycle
-        sites[j].nb_P_waiting -= 1;
-        sites[j].nb_bikesParked += 1; //critical section 
+        citiess[j].nb_P_waiting -= 1;
+        citiess[j].nb_bikesParked += 1; //critical section 
         pthread_mutex_unlock(&mutex[j]);
         sem_post(&sem_BikeFree[j]);
         //if(j==4){
@@ -234,86 +229,86 @@ void *habitants(void *arg){
 
         //does whatever he has to do for a D delay time (waits for rand() 1000->1999us)
         usleep(rand_D());
-        //changes his position from site i = j (j is the new site)
-        hab->i_site = j;
+        //changes his position from cities i = j (j is the new cities)
+        hab->i_cities = j;
         hab->nb_trajet += 1;
     }
     printf("person %d stops\n", hab->num_thread);
-    pthread_mutex_lock(&mutex[hab->i_site]);
+    pthread_mutex_lock(&mutex[hab->i_cities]);
     personsFinished += 1;
-    pthread_mutex_unlock(&mutex[hab->i_site]);
+    pthread_mutex_unlock(&mutex[hab->i_cities]);
     pthread_barrier_wait(&b);
     //printf("machin bidule a passé la barriere !!!! : %d, tot_trajets = %d\n", hab->num_thread, hab->nb_trajet);
 
     return NULL;
 }
 
-void *Camion(void *arg){
-    struct camionette *camion = (struct camionette*)arg;
+void *trucks(void *arg){
+    struct Truck *truck = (struct Truck*)arg;
     int tmp_nbBikes;
     
-    while(personsFinished < camion->nbHabs){
-        //1 : for each sites from 1 to S (0 is the depot)
-        for(int i=1; i<camion->nbSites; i++){
+    while(personsFinished < truck->nbCivilians){
+        //1 : for each citiess from 1 to S (0 is the depot)
+        for(int i=1; i<truck->nbcitiess; i++){
             //spreads the bikes evenly
-            //too many bikes in this site
-            tmp_nbBikes = camion->n_Velo;
-            if(sites[i].nb_bikesParked > (camion->nbornes-2) && camion->n_Velo < CAMION_CAPACITE_MAX){
-                while(sites[i].nb_bikesParked > (camion->nbornes-2) && camion->n_Velo < CAMION_CAPACITE_MAX){
+            //too many bikes in this cities
+            tmp_nbBikes = truck->n_bike;
+            if(citiess[i].nb_bikesParked > (truck->nslotss-2) && truck->n_bike < TRUCK_CAPACITE_MAX){
+                while(citiess[i].nb_bikesParked > (truck->nslotss-2) && truck->n_bike < TRUCK_CAPACITE_MAX){
                     sem_wait(&sem_BikeFree[i]);
                     pthread_mutex_lock(&mutex[i]);
-                    camion->n_Velo += 1;
-                    sites[i].nb_bikesParked -= 1;
+                    truck->n_bike += 1;
+                    citiess[i].nb_bikesParked -= 1;
                     pthread_mutex_unlock(&mutex[i]);
-                    sem_post(&sem_BorneFree[i]);
+                    sem_post(&sem_FreeSlot[i]);
                 }
 
                 pthread_mutex_lock(&mutex[i]);
-                printf("truck removes %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", camion->n_Velo-tmp_nbBikes, i, sites[i].nb_bikesParked, sites[i].nb_P_waiting, camion->n_Velo);
+                printf("truck removes %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", truck->n_bike-tmp_nbBikes, i, citiess[i].nb_bikesParked, citiess[i].nb_P_waiting, truck->n_bike);
                 pthread_mutex_unlock(&mutex[i]);
             }
-            // not enough bikes in this site
-            // until he gets at least 2 bikes (or the camion is empty)
-            else if(sites[i].nb_bikesParked < SITE_CAPACITE_MIN && camion->n_Velo > 0){
-                tmp_nbBikes = camion->n_Velo;
-                while(sites[i].nb_bikesParked < SITE_CAPACITE_MIN && camion->n_Velo > 0){
-                    sem_wait(&sem_BorneFree[i]);
+            // not enough bikes in this cities
+            // until he gets at least 2 bikes (or the truck is empty)
+            else if(citiess[i].nb_bikesParked < CITY_CAPACITY_MIN && truck->n_bike > 0){
+                tmp_nbBikes = truck->n_bike;
+                while(citiess[i].nb_bikesParked < CITY_CAPACITY_MIN && truck->n_bike > 0){
+                    sem_wait(&sem_FreeSlot[i]);
                     pthread_mutex_lock(&mutex[i]);
-                    camion->n_Velo -= 1;
-                    sites[i].nb_bikesParked += 1;
+                    truck->n_bike -= 1;
+                    citiess[i].nb_bikesParked += 1;
                     pthread_mutex_unlock(&mutex[i]);
                     sem_post(&sem_BikeFree[i]);
                 }
 
                 pthread_mutex_lock(&mutex[i]);
-                printf("truck adds %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", tmp_nbBikes-camion->n_Velo, i, sites[i].nb_bikesParked, sites[i].nb_P_waiting, camion->n_Velo);
+                printf("truck adds %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", tmp_nbBikes-truck->n_bike, i, citiess[i].nb_bikesParked, citiess[i].nb_P_waiting, truck->n_bike);
                 pthread_mutex_unlock(&mutex[i]);
             }
         }
         //2: goes to the depot to rebalance the truck's content to 2 bycycles
-        tmp_nbBikes = camion->n_Velo;
-        if(camion->n_Velo < CAMION_CAPACITE_TYP){
-            if(sites[DEPOT].nb_bikesParked > 0){
-                while(camion->n_Velo < CAMION_CAPACITE_TYP && sites[DEPOT].nb_bikesParked > 0){
-                    camion->n_Velo += 1;
+        tmp_nbBikes = truck->n_bike;
+        if(truck->n_bike < TRUCK_CAPACITE_TYP){
+            if(citiess[DEPOT].nb_bikesParked > 0){
+                while(truck->n_bike < TRUCK_CAPACITE_TYP && citiess[DEPOT].nb_bikesParked > 0){
+                    truck->n_bike += 1;
                     pthread_mutex_lock(&mutex[DEPOT]);
-                    sites[DEPOT].nb_bikesParked -= 1;
+                    citiess[DEPOT].nb_bikesParked -= 1;
                     pthread_mutex_unlock(&mutex[DEPOT]);
                 }
                 pthread_mutex_lock(&mutex[DEPOT]);
-                printf("(DEPOT) truck gets %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", camion->n_Velo-tmp_nbBikes, DEPOT, sites[DEPOT].nb_bikesParked, sites[DEPOT].nb_P_waiting, camion->n_Velo);
+                printf("(DEPOT) truck gets %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", truck->n_bike-tmp_nbBikes, DEPOT, citiess[DEPOT].nb_bikesParked, citiess[DEPOT].nb_P_waiting, truck->n_bike);
                 pthread_mutex_unlock(&mutex[DEPOT]);
             }
         }
-        else if (camion->n_Velo > CAMION_CAPACITE_TYP){
-            while(camion->n_Velo > CAMION_CAPACITE_TYP){
-                camion->n_Velo -= 1;
+        else if (truck->n_bike > TRUCK_CAPACITE_TYP){
+            while(truck->n_bike > TRUCK_CAPACITE_TYP){
+                truck->n_bike -= 1;
                 pthread_mutex_lock(&mutex[DEPOT]);
-                sites[DEPOT].nb_bikesParked += 1;
+                citiess[DEPOT].nb_bikesParked += 1;
                 pthread_mutex_unlock(&mutex[DEPOT]);
             }
             pthread_mutex_lock(&mutex[DEPOT]);
-            printf("(DEPOT) truck deposit %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", tmp_nbBikes-camion->n_Velo, DEPOT, sites[DEPOT].nb_bikesParked, sites[DEPOT].nb_P_waiting, camion->n_Velo);
+            printf("(DEPOT) truck deposit %d bikes at terminal %d (%d bikes, %d persons waiting, %d left in truck)\n", tmp_nbBikes-truck->n_bike, DEPOT, citiess[DEPOT].nb_bikesParked, citiess[DEPOT].nb_P_waiting, truck->n_bike);
             pthread_mutex_unlock(&mutex[DEPOT]);
         }
         //3: pause betweem 100us up to 199us