diff --git a/maca_common/src/fplm.c b/maca_common/src/fplm.c
index b9b68e3d104fd386a8294019e16a4646c664a1af..22f6f276b2e2cd3455ebd41b970478da1fad442e 100644
--- a/maca_common/src/fplm.c
+++ b/maca_common/src/fplm.c
@@ -9,6 +9,16 @@
 #include"fplm.h"
 #include"hash.h"
 
+fplm_struct *fplm_new(void){
+  fplm_struct *fplm = (fplm_struct *)memalloc(sizeof(fplm_struct));
+  fplm->form_pos_ht = hash_new(1000000);
+  fplm->lemma_array = NULL;
+  fplm->lemma_array_size = 0;
+  fplm->nbelem = 0;
+  return fplm;
+}
+
+
 fplm_struct *fplm_load_file(char *fplm_filename, int debug_mode)
 {
   char form[1000];
@@ -76,8 +86,8 @@ void fplm_free(fplm_struct *fplm)
       if (fplm->lemma_array[i]) free(fplm->lemma_array[i]);
   }
   free(fplm->lemma_array);
-  if(fplm->filename)
-    free(fplm->filename);
+  //  if(fplm->filename)
+  //    free(fplm->filename);
   free(fplm);
 }
 
diff --git a/maca_tools/src/mcf2json.c b/maca_tools/src/mcf2json.c
index 4381177cfd388d8012380286f515dc1ae5fd19a8..a755e535637e6d2a5d3b519c137188dca4318fc6 100644
--- a/maca_tools/src/mcf2json.c
+++ b/maca_tools/src/mcf2json.c
@@ -331,7 +331,7 @@ int main(int argc, char *argv[])
 
   mcd_extract_dico_from_corpus(ctx->mcd_struct, ctx->mcf_filename);
 
-  output_file = (ctx->conll_filename)? myfopen_no_exit(ctx->conll_filename, "w"): stdout;
+  output_file = (ctx->conll_filename)? myfopen_no_exit(ctx->conll_filename, "w", 0): stdout;
   wb = word_buffer_load_mcf(ctx->mcf_filename, ctx->mcd_struct);
 
   print_header(output_file, ctx->mcd_struct);
diff --git a/maca_tools/src/mcf2orfeo.c b/maca_tools/src/mcf2orfeo.c
index e0b2ed0f8fb3b7bf213de4d1dbbfa2b180ed5ae6..d61b5cff45dd356b8d8cfb719deb6c038e59339b 100644
--- a/maca_tools/src/mcf2orfeo.c
+++ b/maca_tools/src/mcf2orfeo.c
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
 
   int index = 1;
   
-  output_file = (ctx->conll_filename)? myfopen_no_exit(ctx->conll_filename, "w"): stdout;
+  output_file = (ctx->conll_filename)? myfopen_no_exit(ctx->conll_filename, "w", 1): stdout;
   
 
   do{
diff --git a/maca_trans_parser/CMakeLists.txt b/maca_trans_parser/CMakeLists.txt
index a002b726467fd44bd8af63c2e99c377eda4d010c..8369fde340c07167f8f616c76d6780c8f2acfcbb 100644
--- a/maca_trans_parser/CMakeLists.txt
+++ b/maca_trans_parser/CMakeLists.txt
@@ -10,12 +10,12 @@ set(SOURCES src/context.c
   src/oracle_tagparser_arc_eager.c
   src/oracle_tagger.c
   src/simple_decoder_parser_arc_eager.c
-  src/oracle_chunker.c
+#  src/oracle_chunker.c
   src/simple_decoder_tagparser_arc_eager.c
-  src/simple_decoder_parser_arc_eager_error_predictor.c
+#  src/simple_decoder_parser_arc_eager_error_predictor.c
   src/simple_decoder_tagger.c
-  src/simple_decoder_chunker.c
-  src/simple_decoder_tagger_error_predictor.c
+#  src/simple_decoder_chunker.c
+#  src/simple_decoder_tagger_error_predictor.c
 #  src/simple_decoder_tagger_bt.c
   src/stack.c
   src/config2feat_vec.c
@@ -161,11 +161,11 @@ target_link_libraries(maca_trans_parser transparse)
 target_link_libraries(maca_trans_parser maca_common)
 install (TARGETS maca_trans_parser DESTINATION bin)
 
-add_executable(maca_error_predictor_parser ./src/maca_error_predictor_parser.c)
-target_link_libraries(maca_error_predictor_parser perceptron)
-target_link_libraries(maca_error_predictor_parser transparse)
-target_link_libraries(maca_error_predictor_parser maca_common)
-install (TARGETS maca_error_predictor_parser DESTINATION bin)
+#add_executable(maca_error_predictor_parser ./src/maca_error_predictor_parser.c)
+#target_link_libraries(maca_error_predictor_parser perceptron)
+#target_link_libraries(maca_error_predictor_parser transparse)
+#target_link_libraries(maca_error_predictor_parser maca_common)
+#install (TARGETS maca_error_predictor_parser DESTINATION bin)
 
 add_executable(maca_trans_tagparser ./src/maca_trans_tagparser.c)
 target_link_libraries(maca_trans_tagparser perceptron)
@@ -185,11 +185,11 @@ target_link_libraries(maca_trans_tagger transparse)
 target_link_libraries(maca_trans_tagger maca_common)
 install (TARGETS maca_trans_tagger DESTINATION bin)
 
-add_executable(maca_trans_chunker ./src/maca_trans_chunker.c)
-target_link_libraries(maca_trans_chunker perceptron)
-target_link_libraries(maca_trans_chunker transparse)
-target_link_libraries(maca_trans_chunker maca_common)
-install (TARGETS maca_trans_chunker DESTINATION bin)
+#add_executable(maca_trans_chunker ./src/maca_trans_chunker.c)
+#target_link_libraries(maca_trans_chunker perceptron)
+#target_link_libraries(maca_trans_chunker transparse)
+#target_link_libraries(maca_trans_chunker maca_common)
+#install (TARGETS maca_trans_chunker DESTINATION bin)
 
 add_executable(maca_trans_morpho ./src/maca_trans_morpho.c)
 target_link_libraries(maca_trans_morpho perceptron)
@@ -197,11 +197,11 @@ target_link_libraries(maca_trans_morpho transparse)
 target_link_libraries(maca_trans_morpho maca_common)
 install (TARGETS maca_trans_morpho DESTINATION bin)
 
-add_executable(maca_error_predictor_tagger ./src/maca_error_predictor_tagger.c)
-target_link_libraries(maca_error_predictor_tagger perceptron)
-target_link_libraries(maca_error_predictor_tagger transparse)
-target_link_libraries(maca_error_predictor_tagger maca_common)
-install (TARGETS maca_error_predictor_tagger DESTINATION bin)
+#add_executable(maca_error_predictor_tagger ./src/maca_error_predictor_tagger.c)
+#target_link_libraries(maca_error_predictor_tagger perceptron)
+#target_link_libraries(maca_error_predictor_tagger transparse)
+#target_link_libraries(maca_error_predictor_tagger maca_common)
+#install (TARGETS maca_error_predictor_tagger DESTINATION bin)
 
 #add_executable(maca_trans_tagger_bt ./src/maca_trans_tagger_bt.c)
 #target_link_libraries(maca_trans_tagger_bt perceptron)
diff --git a/maca_trans_parser/src/classifier.c b/maca_trans_parser/src/classifier.c
index 058018a98e340791c40ccbc9577f2efb95b9e020..42321ef080b0b738798caf2215d7d6e3c17b0c3c 100644
--- a/maca_trans_parser/src/classifier.c
+++ b/maca_trans_parser/src/classifier.c
@@ -4,7 +4,7 @@
 
 classifier *classifier_new(char *name)
 {
-  classifier *classif = memalloc(sizeof(classifier));
+  classifier *classif = (classifier *)memalloc(sizeof(classifier));
   char string[1000];
   
   classif->name = strdup(name);
@@ -253,7 +253,7 @@ classifier *classifier_read_full(char *filename, char *absolute_path, dico_vec *
       fprintf(stderr, "cannot build output tagset, tape alphabets must be specified in file %s\n", filename);
       exit(1);
     }
-    d_labels = dico_vec_get_dico(classif->d_tapes, "LABEL");
+    d_labels = dico_vec_get_dico(classif->d_tapes, (char *) "LABEL");
     if(d_labels == NULL){
       fprintf(stderr, "cannot find syntactic labels in file %s\n", classif->d_tapes_filename);
       exit(1);
@@ -266,7 +266,7 @@ classifier *classifier_read_full(char *filename, char *absolute_path, dico_vec *
       fprintf(stderr, "cannot build output tagset, tape alphabets must be specified in file %s\n", filename);
       exit(1);
     }
-    d_labels = dico_vec_get_dico(classif->d_tapes, "POS");
+    d_labels = dico_vec_get_dico(classif->d_tapes, (char *) "POS");
     if(d_labels == NULL){
       fprintf(stderr, "cannot find pos tags in file %s\n", classif->d_tapes_filename);
       exit(1);
@@ -279,7 +279,7 @@ classifier *classifier_read_full(char *filename, char *absolute_path, dico_vec *
       fprintf(stderr, "cannot build output tagset, tape alphabets must be specified in file %s\n", filename);
       exit(1);
     }
-    d_labels = dico_vec_get_dico(classif->d_tapes, "FEATS");
+    d_labels = dico_vec_get_dico(classif->d_tapes, (char *) "FEATS");
     if(d_labels == NULL){
       fprintf(stderr, "cannot feats pos tags in file %s\n", classif->d_tapes_filename);
       exit(1);
diff --git a/maca_trans_parser/src/classifier_vec.c b/maca_trans_parser/src/classifier_vec.c
index 3b6a7c9374205dcab59133cb59edff18d9a6fce0..5ac3190fd5f576f7ef6eccbc1b6bdc4bf481a9c0 100644
--- a/maca_trans_parser/src/classifier_vec.c
+++ b/maca_trans_parser/src/classifier_vec.c
@@ -7,7 +7,7 @@
 
 classifier_vec *classifier_vec_new(void)
 {
-  classifier_vec *classif_vec = memalloc(sizeof(classifier_vec));
+  classifier_vec *classif_vec = (classifier_vec *)memalloc(sizeof(classifier_vec));
   classif_vec->nb = 0;
   classif_vec->array = NULL;
   classif_vec->ht = hash_new(10);
diff --git a/maca_trans_parser/src/context.c b/maca_trans_parser/src/context.c
index 7a60a4dbada924d76b8b32a743244e1e940a41bf..b23522f8cfef117cf3820097d741d5adfc2627a6 100644
--- a/maca_trans_parser/src/context.c
+++ b/maca_trans_parser/src/context.c
@@ -235,7 +235,7 @@ context *context_read_options(int argc, char *argv[])
       {"f2p",                 required_argument, 0, 'P'},
       {"cla",                 required_argument, 0, 'y'},
       {"traces",              required_argument, 0, 'T'},
-      {"tm",                  required_argument, 0, 'X'}
+      {"tm",                  required_argument, 0, 'X'},
       {"traces",              required_argument, 0, 'T'},
       {"json",                required_argument, 0, 'J'},
       {"dnn_model",           required_argument, 0, 'N'},
diff --git a/maca_trans_parser/src/maca_tm_decoder.c b/maca_trans_parser/src/maca_tm_decoder.c
index f532ea1fc3a0279f9fc41cde9f88159762ab6af1..4ed0c12e79a75d8636df0bc95249436da8a70adf 100644
--- a/maca_trans_parser/src/maca_tm_decoder.c
+++ b/maca_trans_parser/src/maca_tm_decoder.c
@@ -226,7 +226,7 @@ void maca_tm_decoder(context *ctx)
   dico *dico_labels = dico_vec_get_dico(tm_get_d_tapes(ctx->machine), (char *)"LABEL");
   dico *dico_morpho = dico_vec_get_dico(tm_get_d_tapes(ctx->machine), (char *)"FEATS");
   int result;
-  fplm_struct *fplm = fplm_load(ctx->fplm_filename, ctx->debug_mode);
+  fplm_struct *fplm = fplm_load_file(ctx->fplm_filename, ctx->debug_mode);
   char form_str[200];
   char *pos_str;
   char *lemma_str;
diff --git a/maca_trans_parser/src/maca_trans_lemmatizer.c b/maca_trans_parser/src/maca_trans_lemmatizer.c
index 1240fb093489579911358fd75dac6cee226aa830..92e2e8637d9be8c6b606f42d03af1d4b2edc74c9 100644
--- a/maca_trans_parser/src/maca_trans_lemmatizer.c
+++ b/maca_trans_parser/src/maca_trans_lemmatizer.c
@@ -111,6 +111,7 @@ void print_word(word *w, mcd *mcd_struct, char *lemma)
 int main(int argc, char *argv[])
 {
   context *ctx = context_read_options(argc, argv);
+  feat_vec *fv = feat_vec_new(10);
   word *b0;
   char lemma[200];
   char form[200];
diff --git a/maca_trans_parser/src/mvt_tagset.c b/maca_trans_parser/src/mvt_tagset.c
index 850ff73f4eec6600b4ec3f8ec136af97acbcc8c0..9bf8d500e0a0a6d47e8e6b8ce2650758e750254e 100644
--- a/maca_trans_parser/src/mvt_tagset.c
+++ b/maca_trans_parser/src/mvt_tagset.c
@@ -6,7 +6,7 @@
 
 mvt_tagset *mvt_tagset_new(char *name, dico *d_labels)
 {
-  mvt_tagset *t = memalloc(sizeof(mvt_tagset));
+  mvt_tagset *t = (mvt_tagset *)memalloc(sizeof(mvt_tagset));
   int i;
   t->nbelem = 0;
   for(i=0; i < MVT_TYPES_NB; i++){
@@ -118,7 +118,7 @@ void mvt_tagset_print(mvt_tagset *t)
 
 mvt_tagset *mvt_tagset_parser(dico *d_labels)
 {
-  mvt_tagset *t = mvt_tagset_new("parser", d_labels);
+  mvt_tagset *t = mvt_tagset_new((char *)"parser", d_labels);
   t->start[MVT_SHIFT] = t->end[MVT_SHIFT] = t->nbelem++;
 
   t->start[MVT_REDUCE] = t->end[MVT_REDUCE] = t->nbelem++;
@@ -137,7 +137,7 @@ mvt_tagset *mvt_tagset_parser(dico *d_labels)
 
 mvt_tagset *mvt_tagset_tagger(dico *d_labels)
 {
-  mvt_tagset *t = mvt_tagset_new("tagger", d_labels);
+  mvt_tagset *t = mvt_tagset_new((char *)"tagger", d_labels);
   t->start[MVT_FWD] = t->end[MVT_FWD] = t->nbelem++;
   t->start[MVT_POS] = t->nbelem;
   t->nbelem += d_labels->nbelem;
@@ -149,7 +149,7 @@ mvt_tagset *mvt_tagset_tagger(dico *d_labels)
 
 mvt_tagset *mvt_tagset_morpho(dico *d_labels)
 {
-  mvt_tagset *t = mvt_tagset_new("morpho", d_labels);
+  mvt_tagset *t = mvt_tagset_new((char *)"morpho", d_labels);
   t->start[MVT_FWD] = t->end[MVT_FWD] = t->nbelem++;
   t->start[MVT_MORPHO] = t->nbelem;
   t->nbelem += d_labels->nbelem;
@@ -161,7 +161,7 @@ mvt_tagset *mvt_tagset_morpho(dico *d_labels)
 
 mvt_tagset *mvt_tagset_std(void)
 {
-  mvt_tagset *t = mvt_tagset_new("std", NULL);
+  mvt_tagset *t = mvt_tagset_new((char *)"std", NULL);
   t->start[MVT_FWD] = t->end[MVT_FWD] = t->nbelem++;
 
    /* mvt_tagset_print(t);  */
diff --git a/maca_trans_parser/src/simple_decoder_tagger.c b/maca_trans_parser/src/simple_decoder_tagger.c
index eb6830d6f826daa9dd957a995160d55b135888eb..5a0072743fc7af3908c7fa7875af1af525c6f100 100644
--- a/maca_trans_parser/src/simple_decoder_tagger.c
+++ b/maca_trans_parser/src/simple_decoder_tagger.c
@@ -100,7 +100,7 @@ void simple_decoder_tagger(context *ctx)
   word *b0;
   classifier *classif;
   dico *dico_pos = dico_vec_get_dico(classifier_get_d_tapes(ctx->machine->start->classif), (char *)"POS");
-  fplm_struct *fplm = fplm_load(ctx->fplm_filename, ctx->debug_mode);
+  fplm_struct *fplm = fplm_load_file(ctx->fplm_filename, ctx->debug_mode);
   
   while(!config_is_terminal(c)){
     if(ctx->f2p)
diff --git a/maca_trans_parser/src/simple_decoder_tagparser_arc_eager.c b/maca_trans_parser/src/simple_decoder_tagparser_arc_eager.c
index d757681291f785425b4e5caf9719235fb520d569..611173c8e5dda1c5764e9a7cb431ccf826ca6998 100644
--- a/maca_trans_parser/src/simple_decoder_tagparser_arc_eager.c
+++ b/maca_trans_parser/src/simple_decoder_tagparser_arc_eager.c
@@ -106,7 +106,7 @@ void simple_decoder_tagparser_arc_eager(context *ctx)
   dico *dico_forms = dico_vec_get_dico(classifier_get_d_tapes(ctx->machine->start->classif), (char *)"FORM");
   dico *dico_labels = dico_vec_get_dico(classifier_get_d_tapes(ctx->machine->start->classif), (char *)"LABEL");
   int result;
-  fplm_struct *fplm = fplm_load(ctx->fplm_filename, ctx->debug_mode);
+  fplm_struct *fplm = fplm_load_file(ctx->fplm_filename, ctx->debug_mode);
   char form_str[200];
   char *pos_str;
   char *lemma_str;
diff --git a/maca_trans_parser/src/tm.c b/maca_trans_parser/src/tm.c
index 1da0b0af974941680162eae34ad054a6dda686cc..f226a5f261ed96af9dd9652f5e8500a27aea0cf3 100644
--- a/maca_trans_parser/src/tm.c
+++ b/maca_trans_parser/src/tm.c
@@ -26,7 +26,7 @@ int tm_get_morpho_state(tm *machine)
 
 tm_transition *tm_transition_new(int label, int destination, tm_transition *next)
 {
-  tm_transition *transition = memalloc(sizeof(tm_transition));
+  tm_transition *transition = (tm_transition *)memalloc(sizeof(tm_transition));
   transition->label = label;
   transition->destination = destination;
   transition->next = next;
@@ -35,7 +35,7 @@ tm_transition *tm_transition_new(int label, int destination, tm_transition *next
 
 tm_state *tm_state_new(char *name, classifier *classif, int classifier_nb, int is_accept)
 {
-  tm_state *state = memalloc(sizeof(tm_state));
+  tm_state *state = (tm_state *) memalloc(sizeof(tm_state));
   state->num = -1;
   state->name = strdup(name);
   state->trans_list = NULL;
@@ -51,9 +51,9 @@ tm_state *tm_state_new(char *name, classifier *classif, int classifier_nb, int i
 
 tm *tm_new(void)
 {
-  tm *machine = memalloc(sizeof(tm));
+  tm *machine = (tm *)memalloc(sizeof(tm));
   machine->classif_vec = classifier_vec_new();
-  machine->d_states = dico_new("d_states", 10);
+  machine->d_states = dico_new((char *)"d_states", 10);
   machine->num_states = 0;
   machine->state_array = NULL;
   machine->start = NULL;
@@ -65,7 +65,7 @@ int tm_add_state(tm *machine, tm_state *state)
   state->num = dico_add(machine->d_states, state->name);
   if(state->num >= machine->state_array_size){
     machine->state_array_size = 2 * (machine->state_array_size + 1);
-    machine->state_array = realloc(machine->state_array, (machine->state_array_size * sizeof(tm_state *)));
+    machine->state_array = (tm_state **)realloc(machine->state_array, (machine->state_array_size * sizeof(tm_state *)));
   }
   machine->state_array[state->num] = state;
   machine->num_states++;