diff --git a/maca_common/CMakeLists.txt b/maca_common/CMakeLists.txt
index 75b9fad8808f8e5a646425313efde9c554b62ae0..503e9214c5a8190648c7c237e0e7e5f96b12cd54 100644
--- a/maca_common/CMakeLists.txt
+++ b/maca_common/CMakeLists.txt
@@ -9,6 +9,11 @@ set(SOURCES  src/util.c
  src/sentence.c
  src/word_buffer.c
  src/trie.c
+  src/feat_desc.c
+  src/feat_lib.c
+  src/feat_model.c
+
+
 )
 
 #compiling library
diff --git a/maca_trans_parser/src/feat_desc.h b/maca_common/include/feat_desc.h
similarity index 55%
rename from maca_trans_parser/src/feat_desc.h
rename to maca_common/include/feat_desc.h
index e32390d1691f76dc3bb412bf01c1d3d5d1a26971..62dd7c9725e112c81edf8872074b61915d3bb212 100644
--- a/maca_trans_parser/src/feat_desc.h
+++ b/maca_common/include/feat_desc.h
@@ -1,7 +1,7 @@
 #ifndef __FEAT_DESC__
 #define __FEAT_DESC__
 
-#include "feat_fct.h"
+typedef int (*feat_fct) (void *c);
 
 typedef struct {
   char *name;
@@ -19,11 +19,11 @@ typedef struct {
 #include "util.h"
 
 
-feat_desc *feat_desc_new(void);
-void feat_desc_free(feat_desc *fd);
-feat_desc *feat_desc_add(feat_desc *fd, simple_feat_desc *sfd);
+feat_desc        *feat_desc_new(void);
+void              feat_desc_free(feat_desc *fd);
+feat_desc        *feat_desc_add(feat_desc *fd, simple_feat_desc *sfd);
 simple_feat_desc *simple_feat_desc_new(char *name, int type, feat_fct fct);
-void simple_feat_desc_free(simple_feat_desc *sfd);
+void              simple_feat_desc_free(simple_feat_desc *sfd);
 
 #endif
 
diff --git a/maca_common/include/feat_lib.h b/maca_common/include/feat_lib.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef4f7aa6aa4cc1d28f6e28c45ea3a5b0d4b3a332
--- /dev/null
+++ b/maca_common/include/feat_lib.h
@@ -0,0 +1,18 @@
+#ifndef __FEAT_LIB__
+#define __FEAT_LIB__
+
+#include "feat_desc.h"
+#include "dico.h"
+
+typedef struct {
+  int                nbelem;
+  dico              *d_features;
+  simple_feat_desc **array;
+} feat_lib;
+
+feat_lib         *feat_lib_new(void);
+void              feat_lib_add(feat_lib *fl, int feature_type, char *feature_name, feat_fct feature_fct);
+simple_feat_desc *feat_lib_get_simple_feat_desc(feat_lib *fl, char *feat_name);
+feat_lib         *feat_lib_build(void);
+void              feat_lib_free(feat_lib *fl);
+#endif
diff --git a/maca_common/include/feat_model.h b/maca_common/include/feat_model.h
new file mode 100644
index 0000000000000000000000000000000000000000..f7c234cd0ea14ca4015cfa93f1826ecc2e7acc00
--- /dev/null
+++ b/maca_common/include/feat_model.h
@@ -0,0 +1,28 @@
+#ifndef __FEAT_MODEL__
+#define __FEAT_MODEL__
+
+#include "feat_desc.h"
+#include "feat_lib.h"
+
+typedef struct {
+  char string[2048];
+  char *name;
+  int nbelem;
+  feat_desc **array;
+  int dim;
+  feat_lib *fl; // stores all simple features 
+} feat_model;
+
+/* #include "config.h" */
+#include "dico.h"
+#include "mcd.h"
+
+void        feat_model_free(feat_model *fm);
+feat_model *feat_model_new(char *name);
+void        feat_model_print(FILE *f, feat_model *fm);
+feat_desc  *feat_model_add(feat_model *fm, feat_desc *fd);
+feat_model *feat_model_read(char *filename, feat_lib *fl, int verbose);
+void        feat_model_compute_ranges(feat_model *fm, mcd *m, int mvt_nb);
+int         feat_model_get_type_feat_n(feat_model *fm, int n);
+
+#endif
diff --git a/maca_trans_parser/src/feat_desc.c b/maca_common/src/feat_desc.c
similarity index 100%
rename from maca_trans_parser/src/feat_desc.c
rename to maca_common/src/feat_desc.c
diff --git a/maca_common/src/feat_lib.c b/maca_common/src/feat_lib.c
new file mode 100644
index 0000000000000000000000000000000000000000..a47c9b6176d87ffd323b13aa5c64bb1e84c9539a
--- /dev/null
+++ b/maca_common/src/feat_lib.c
@@ -0,0 +1,42 @@
+#include "feat_lib.h"
+/* #include "feat_types.h" */
+/* #include "feat_fct.h" */
+
+void feat_lib_add(feat_lib *fl, int feature_type, char *feature_name, feat_fct feature_fct)
+{
+  int feature_nb = dico_add(fl->d_features, feature_name); 
+  fl->array = (simple_feat_desc **)realloc(fl->array, (feature_nb + 1) * sizeof(simple_feat_desc *));
+  fl->array[feature_nb] = simple_feat_desc_new(feature_name, feature_type, feature_fct);
+  fl->nbelem = feature_nb+1;
+}
+
+simple_feat_desc *feat_lib_get_simple_feat_desc(feat_lib *fl, char *feat_name)
+{
+  int index = dico_string2int(fl->d_features, feat_name);
+  if(index == -1){
+    fprintf(stderr, "features function %s unknown\n", feat_name);
+    return NULL;
+  }
+  return fl->array[index];
+}
+
+feat_lib *feat_lib_new(void)
+{
+  feat_lib *fl = (feat_lib *)memalloc(sizeof(feat_lib));
+  fl->nbelem = 0;
+  fl->d_features = dico_new(NULL, 100);
+  fl->array = NULL;
+  return fl;
+}
+
+void feat_lib_free(feat_lib *fl) {
+
+    for(int i=0; i < fl->nbelem; ++i) {
+	simple_feat_desc_free(fl->array[i]);
+    }
+    dico_free(fl->d_features);
+    free(fl->array);
+    free(fl); // ne devrait pas etre en commentaire
+
+}
+
diff --git a/maca_trans_parser/src/feat_model.c b/maca_common/src/feat_model.c
similarity index 74%
rename from maca_trans_parser/src/feat_model.c
rename to maca_common/src/feat_model.c
index 9ee83b2a409cdce93e224528d7a7644680fe5fd9..f28baecac3462b2587eac26d4ef4c45a3db027e8 100644
--- a/maca_trans_parser/src/feat_model.c
+++ b/maca_common/src/feat_model.c
@@ -5,8 +5,8 @@
 #include "feat_model.h"
 #include "feat_lib.h"
 #include "feat_desc.h"
-#include "feat_types.h"
-#include "config2feat_vec.h"
+/* #include "feat_types.h" */
+/* #include "config2feat_vec.h" */
 
 /* returns type of the nth feature in fm */
 /* if it is a complex feature, or if n is too large, returns -1 */
@@ -50,7 +50,7 @@ void feat_model_free(feat_model *fm)
   free(fm);
 }
 
-feat_model *feat_model_read(char *filename, int verbose)
+feat_model *feat_model_read(char *filename, feat_lib *fl, int verbose)
 {
   FILE *f = myfopen(filename, "r");
   feat_model *fm = feat_model_new(filename);
@@ -58,10 +58,13 @@ feat_model *feat_model_read(char *filename, int verbose)
   char buffer[1000]; /* ugly */
   char *feat_name;
   //feat_lib *fl
-  fm->fl = feat_lib_build(); // must be preserved in feature_model to delete correctly features at the end
+  /*fm->fl = feat_lib_build();*/ // must be preserved in feature_model to delete correctly features at the end
   simple_feat_desc *sfd;
   feat_desc *fd;
 
+
+    fm->fl = fl;
+
   while(fgets(buffer, 1000, f)){
     if(feof(f)) break;
     if((buffer[0] == '\n') || (buffer[0] == '#')) continue;
@@ -82,7 +85,8 @@ feat_model *feat_model_read(char *filename, int verbose)
   return fm;
 }
 
-
+void feat_model_compute_ranges(feat_model *fm, mcd *m, int mvt_nb){}
+#if(0)
 void feat_model_compute_ranges(feat_model *fm, mcd *m, int mvt_nb)
 {
   int i;
@@ -118,7 +122,7 @@ void feat_model_compute_ranges(feat_model *fm, mcd *m, int mvt_nb)
   }
   fm->dim = total;
 }
-
+#endif
 void catenate_int(char *string, int val)
 {
   char s[10];
@@ -126,34 +130,6 @@ void catenate_int(char *string, int val)
   strcat(string, s);
 }
 
-int feat_model_get_feat_value_fann(feat_model *fm, config *c, int feat_nb)
-{
-  feat_desc *fd = fm->array[feat_nb];
-  /* fm must be exclusively  composed of simple features */
-  return fd->array[0]->fct(c);
-}
-
-int feat_model_get_feat_value_cff(feat_model *fm, config *c, dico *dico_features, int feat_nb, int mode)
-{
-  feat_desc *fd = fm->array[feat_nb];
-  int i;
-  int feat_val;
-
-  /*  the name of the feature is built in fm->string and its value in the dictionnary (dico_features) is returned */
-  fm->string[0] = '\0';
-  for(i=0; i < fd->nbelem; i++){
-    strcat(fm->string, fd->array[i]->name);
-    feat_val = fd->array[i]->fct(c);
-    catenate_int(fm->string, feat_val);
-  }
- 
-  if(mode == LOOKUP_MODE){
-    if(fm->string)
-    /* printf("fmstring = %s\n", fm->string); */
-    return dico_string2int(dico_features, fm->string);
-  } 
-  return dico_add(dico_features, fm->string);
-}
 
 
 feat_model *feat_model_new(char *name)
diff --git a/maca_trans_parser/CMakeLists.txt b/maca_trans_parser/CMakeLists.txt
index 18eea288854f1103bcf85ffa2d439941a172ca50..8864690f5dc0def405570b0921d97b8229d5f609 100644
--- a/maca_trans_parser/CMakeLists.txt
+++ b/maca_trans_parser/CMakeLists.txt
@@ -1,5 +1,4 @@
 set(SOURCES src/context.c
-  src/feat_desc.c
   src/movements.c
   src/movement_parser_arc_eager.c
   src/movement_tagparser_arc_eager.c
@@ -15,18 +14,17 @@ set(SOURCES src/context.c
   src/simple_decoder_tagparser_arc_eager.c
 #  src/simple_decoder_forrest.c
   src/simple_decoder_tagger.c
-  src/simple_decoder_tagger_bt.c
-  src/feat_lib.c
+#  src/simple_decoder_tagger_bt.c
   src/stack.c
   src/config2feat_vec.c
   src/depset.c
-  src/feat_model.c
   src/config.c
 #  src/queue.c
   # src/beam.c
   src/feat_types.c
   src/mvt.c
   src/mvt_stack.c
+
   )
 
 #compiling library
@@ -42,11 +40,11 @@ target_link_libraries(maca_trans_tagger_mcf2cff transparse)
 target_link_libraries(maca_trans_tagger_mcf2cff maca_common)
 install (TARGETS maca_trans_tagger_mcf2cff DESTINATION bin)
 
-add_executable(maca_trans_tagger_mcf2cff_bt ./src/maca_trans_tagger_mcf2cff_bt.c)
-target_link_libraries(maca_trans_tagger_mcf2cff_bt perceptron)
-target_link_libraries(maca_trans_tagger_mcf2cff_bt transparse)
-target_link_libraries(maca_trans_tagger_mcf2cff_bt maca_common)
-install (TARGETS maca_trans_tagger_mcf2cff_bt DESTINATION bin)
+#add_executable(maca_trans_tagger_mcf2cff_bt ./src/maca_trans_tagger_mcf2cff_bt.c)
+#target_link_libraries(maca_trans_tagger_mcf2cff_bt perceptron)
+#target_link_libraries(maca_trans_tagger_mcf2cff_bt transparse)
+#target_link_libraries(maca_trans_tagger_mcf2cff_bt maca_common)
+#install (TARGETS maca_trans_tagger_mcf2cff_bt DESTINATION bin)
 
 #add_executable(maca_trans_parser_mcf2fann ./src/maca_trans_parser_mcf2fann.c)
 #target_link_libraries(maca_trans_parser_mcf2fann perceptron)
@@ -102,11 +100,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_tagger_bt ./src/maca_trans_tagger_bt.c)
-target_link_libraries(maca_trans_tagger_bt perceptron)
-target_link_libraries(maca_trans_tagger_bt transparse)
-target_link_libraries(maca_trans_tagger_bt maca_common)
-install (TARGETS maca_trans_tagger_bt DESTINATION bin)
+#add_executable(maca_trans_tagger_bt ./src/maca_trans_tagger_bt.c)
+#target_link_libraries(maca_trans_tagger_bt perceptron)
+#target_link_libraries(maca_trans_tagger_bt transparse)
+#target_link_libraries(maca_trans_tagger_bt maca_common)
+#install (TARGETS maca_trans_tagger_bt DESTINATION bin)
 
 #add_executable(maca_trans_parser_train ./src/train_perceptron.c)
 #target_compile_options(maca_trans_parser_train INTERFACE -Wall)
diff --git a/maca_trans_parser/src/cff2fann.c b/maca_trans_parser/src/cff2fann.c
index 2167fa8d0108633ea55e3b3802bb271d3b94157d..93c49b32e47af548612b5b4b67263dd9ffa1cb5d 100644
--- a/maca_trans_parser/src/cff2fann.c
+++ b/maca_trans_parser/src/cff2fann.c
@@ -100,7 +100,7 @@ int main(int argc, char *argv[])
 
   ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
 
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
 
   look_for_number_of_features_and_classes(ctx->input_filename, &nb_feat, &nb_class);
   ctx->mvt_nb = nb_class;
diff --git a/maca_trans_parser/src/config2feat_vec.c b/maca_trans_parser/src/config2feat_vec.c
index 47916fa1bd85436d2d216e8181ecf1a51820eb52..0b63b1633ca98ed0d4b7c6d6eea27e37a3e7001d 100644
--- a/maca_trans_parser/src/config2feat_vec.c
+++ b/maca_trans_parser/src/config2feat_vec.c
@@ -5,12 +5,44 @@
 #include"feat_model.h"
 #include"config2feat_vec.h"
 
+
+int get_feat_value_fann(feat_model *fm, config *c, int feat_nb)
+{
+  feat_desc *fd = fm->array[feat_nb];
+  /* fm must be exclusively  composed of simple features */
+  return fd->array[0]->fct(c);
+}
+
+int get_feat_value_cff(feat_model *fm, config *c, dico *dico_features, int feat_nb, int mode)
+{
+  feat_desc *fd = fm->array[feat_nb];
+  int i;
+  int feat_val;
+
+  /*  the name of the feature is built in fm->string and its value in the dictionnary (dico_features) is returned */
+  fm->string[0] = '\0';
+  for(i=0; i < fd->nbelem; i++){
+    strcat(fm->string, fd->array[i]->name);
+    feat_val = fd->array[i]->fct(c);
+    catenate_int(fm->string, feat_val);
+  }
+ 
+  if(mode == LOOKUP_MODE){
+    if(fm->string)
+    /* printf("fmstring = %s\n", fm->string); */
+    return dico_string2int(dico_features, fm->string);
+  } 
+  return dico_add(dico_features, fm->string);
+}
+
+
+
 feat_vec *config2feat_vec_fann(feat_model *fm, config *c, feat_vec *fv, int mode)
 {
   int i;
   feat_vec_empty(fv);
   for(i=0; i < fm->nbelem; i++)
-    feat_vec_add(fv, feat_model_get_feat_value_fann(fm, c, i));
+    feat_vec_add(fv, get_feat_value_fann(fm, c, i));
   return fv;
 }
 
@@ -19,7 +51,7 @@ feat_vec *config2feat_vec_cff(feat_model *fm, config *c, dico *dico_features, fe
   int i;
   feat_vec_empty(fv);
   for(i=0; i < fm->nbelem; i++)
-    feat_vec_add(fv, feat_model_get_feat_value_cff(fm, c, dico_features, i, mode));
+    feat_vec_add(fv, get_feat_value_cff(fm, c, dico_features, i, mode));
   return fv;
 }
 
diff --git a/maca_trans_parser/src/config2feat_vec.h b/maca_trans_parser/src/config2feat_vec.h
index de5fd974007bea2c725c0365e6773f4c6b45f178..2e661a13cbcbe472a967ea6f9ca93df9ec2038cf 100644
--- a/maca_trans_parser/src/config2feat_vec.h
+++ b/maca_trans_parser/src/config2feat_vec.h
@@ -15,6 +15,11 @@
 
 feat_vec *config2feat_vec_fann(feat_model *fm, config *c, feat_vec *fv, int mode);
 feat_vec *config2feat_vec_cff(feat_model *fm, config *c, dico *dico_features, feat_vec *fv, int mode);
+
+/* int         feat_model_get_feat_value_fann(feat_model *fm, config *c, int feat_nb); */
+/* int         feat_model_get_feat_value_cff(feat_model *fm, config *c, dico *dico_features, int feat_nb, int mode); */
+
+
 /*
 feat_vec *config2feat_vec(config *c, dico *dico_features, feat_vec *fv, int mode);
 feat_vec *config2feat_vec_add_features(config *c, dico *dico_features, feat_vec *fv);
diff --git a/maca_trans_parser/src/feat_fct.c b/maca_trans_parser/src/feat_fct.c
index 608c53baa35fe23793a780235c8a78bfdf7b8117..ec84300011c7bbd72c51601c9cf1774455f8cfb4 100644
--- a/maca_trans_parser/src/feat_fct.c
+++ b/maca_trans_parser/src/feat_fct.c
@@ -5,160 +5,162 @@
 #include"stack.h"
 #include"feat_fct.h"
 #include"feat_types.h"
+#include"config.h"
+
 
 /* word features */
 
 /* words in the stack */
-int s0g(config *c) {return (word_get_gov(stack_s0(config_get_stack(c))) == WORD_INVALID_GOV) ? 0 : 1;}
-int s0sf(config *c) {return word_get_label(stack_s0(config_get_stack(c)));}
-
-int s0f(config *c) {return word_get_form(stack_s0(config_get_stack(c)));}
-int s0l(config *c) {return word_get_lemma(stack_s0(config_get_stack(c)));}
-int s0c(config *c) {return word_get_cpos(stack_s0(config_get_stack(c)));}
-int s0p(config *c) {return word_get_pos(stack_s0(config_get_stack(c)));}
-int s0m(config *c) {return word_get_feats(stack_s0(config_get_stack(c)));}
-int s0s(config *c) {return word_get_stag(stack_s0(config_get_stack(c)));}
-int s0A(config *c) {return word_get_A(stack_s0(config_get_stack(c)));}
-int s0B(config *c) {return word_get_B(stack_s0(config_get_stack(c)));}
-int s0C(config *c) {return word_get_C(stack_s0(config_get_stack(c)));}
-int s0D(config *c) {return word_get_D(stack_s0(config_get_stack(c)));}
-int s0E(config *c) {return word_get_E(stack_s0(config_get_stack(c)));}
-int s0F(config *c) {return word_get_F(stack_s0(config_get_stack(c)));}
-int s0G(config *c) {return word_get_G(stack_s0(config_get_stack(c)));}
-int s0H(config *c) {return word_get_H(stack_s0(config_get_stack(c)));}
-int s0I(config *c) {return word_get_I(stack_s0(config_get_stack(c)));}
-int s0J(config *c) {return word_get_J(stack_s0(config_get_stack(c)));}
-int s0K(config *c) {return word_get_K(stack_s0(config_get_stack(c)));}
-int s0L(config *c) {return word_get_L(stack_s0(config_get_stack(c)));}
-int s0M(config *c) {return word_get_M(stack_s0(config_get_stack(c)));}
-int s0N(config *c) {return word_get_N(stack_s0(config_get_stack(c)));}
-int s0O(config *c) {return word_get_O(stack_s0(config_get_stack(c)));}
-int s0P(config *c) {return word_get_P(stack_s0(config_get_stack(c)));}
-int s0Q(config *c) {return word_get_Q(stack_s0(config_get_stack(c)));}
-int s0R(config *c) {return word_get_R(stack_s0(config_get_stack(c)));}
-int s0S(config *c) {return word_get_S(stack_s0(config_get_stack(c)));}
-int s0T(config *c) {return word_get_T(stack_s0(config_get_stack(c)));}
-int s0U(config *c) {return word_get_U(stack_s0(config_get_stack(c)));}
-int s0V(config *c) {return word_get_V(stack_s0(config_get_stack(c)));}
-int s0W(config *c) {return word_get_W(stack_s0(config_get_stack(c)));}
-int s0X(config *c) {return word_get_X(stack_s0(config_get_stack(c)));}
-int s0Y(config *c) {return word_get_Y(stack_s0(config_get_stack(c)));}
-int s0Z(config *c) {return word_get_Z(stack_s0(config_get_stack(c)));}
-
-int s0U1(config *c) {return word_get_U1(stack_s0(config_get_stack(c)));}
-int s0sgn(config *c) {return word_get_signature(stack_s0(config_get_stack(c)));}
-
-int s1g(config *c)  {return (word_get_gov(stack_s1(config_get_stack(c))) == WORD_INVALID_GOV) ? 0 : 1;}
-int s1sf(config *c) {return word_get_label(stack_s1(config_get_stack(c)));}
-
-int s1f(config *c) {return word_get_form(stack_s1(config_get_stack(c)));}
-int s1l(config *c) {return word_get_lemma(stack_s1(config_get_stack(c)));}
-int s1c(config *c) {return word_get_cpos(stack_s1(config_get_stack(c)));}
-int s1p(config *c) {return word_get_pos(stack_s1(config_get_stack(c)));}
-int s1m(config *c) {return word_get_feats(stack_s1(config_get_stack(c)));}
-int s1s(config *c) {return word_get_stag(stack_s1(config_get_stack(c)));}
-int s1A(config *c) {return word_get_A(stack_s1(config_get_stack(c)));}
-int s1B(config *c) {return word_get_B(stack_s1(config_get_stack(c)));}
-int s1C(config *c) {return word_get_C(stack_s1(config_get_stack(c)));}
-int s1D(config *c) {return word_get_D(stack_s1(config_get_stack(c)));}
-int s1E(config *c) {return word_get_E(stack_s1(config_get_stack(c)));}
-int s1F(config *c) {return word_get_F(stack_s1(config_get_stack(c)));}
-int s1G(config *c) {return word_get_G(stack_s1(config_get_stack(c)));}
-int s1H(config *c) {return word_get_H(stack_s1(config_get_stack(c)));}
-int s1I(config *c) {return word_get_I(stack_s1(config_get_stack(c)));}
-int s1J(config *c) {return word_get_J(stack_s1(config_get_stack(c)));}
-int s1K(config *c) {return word_get_K(stack_s1(config_get_stack(c)));}
-int s1L(config *c) {return word_get_L(stack_s1(config_get_stack(c)));}
-int s1M(config *c) {return word_get_M(stack_s1(config_get_stack(c)));}
-int s1N(config *c) {return word_get_N(stack_s1(config_get_stack(c)));}
-int s1O(config *c) {return word_get_O(stack_s1(config_get_stack(c)));}
-int s1P(config *c) {return word_get_P(stack_s1(config_get_stack(c)));}
-int s1Q(config *c) {return word_get_Q(stack_s1(config_get_stack(c)));}
-int s1R(config *c) {return word_get_R(stack_s1(config_get_stack(c)));}
-int s1S(config *c) {return word_get_S(stack_s1(config_get_stack(c)));}
-int s1T(config *c) {return word_get_T(stack_s1(config_get_stack(c)));}
-int s1U(config *c) {return word_get_U(stack_s1(config_get_stack(c)));}
-int s1V(config *c) {return word_get_V(stack_s1(config_get_stack(c)));}
-int s1W(config *c) {return word_get_W(stack_s1(config_get_stack(c)));}
-int s1X(config *c) {return word_get_X(stack_s1(config_get_stack(c)));}
-int s1Y(config *c) {return word_get_Y(stack_s1(config_get_stack(c)));}
-int s1Z(config *c) {return word_get_Z(stack_s1(config_get_stack(c)));}
-
-int s2f(config *c) {return word_get_form(stack_s2(config_get_stack(c)));}
-int s2l(config *c) {return word_get_lemma(stack_s2(config_get_stack(c)));}
-int s2c(config *c) {return word_get_cpos(stack_s2(config_get_stack(c)));}
-int s2p(config *c) {return word_get_pos(stack_s2(config_get_stack(c)));}
-int s2m(config *c) {return word_get_feats(stack_s2(config_get_stack(c)));}
-int s2s(config *c) {return word_get_stag(stack_s2(config_get_stack(c)));}
-int s2A(config *c) {return word_get_A(stack_s2(config_get_stack(c)));}
-int s2B(config *c) {return word_get_B(stack_s2(config_get_stack(c)));}
-int s2C(config *c) {return word_get_C(stack_s2(config_get_stack(c)));}
-int s2D(config *c) {return word_get_D(stack_s2(config_get_stack(c)));}
-int s2E(config *c) {return word_get_E(stack_s2(config_get_stack(c)));}
-int s2F(config *c) {return word_get_F(stack_s2(config_get_stack(c)));}
-int s2G(config *c) {return word_get_G(stack_s2(config_get_stack(c)));}
-int s2H(config *c) {return word_get_H(stack_s2(config_get_stack(c)));}
-int s2I(config *c) {return word_get_I(stack_s2(config_get_stack(c)));}
-int s2J(config *c) {return word_get_J(stack_s2(config_get_stack(c)));}
-int s2K(config *c) {return word_get_K(stack_s2(config_get_stack(c)));}
-int s2L(config *c) {return word_get_L(stack_s2(config_get_stack(c)));}
-int s2M(config *c) {return word_get_M(stack_s2(config_get_stack(c)));}
-int s2N(config *c) {return word_get_N(stack_s2(config_get_stack(c)));}
-int s2O(config *c) {return word_get_O(stack_s2(config_get_stack(c)));}
-int s2P(config *c) {return word_get_P(stack_s2(config_get_stack(c)));}
-int s2Q(config *c) {return word_get_Q(stack_s2(config_get_stack(c)));}
-int s2R(config *c) {return word_get_R(stack_s2(config_get_stack(c)));}
-int s2S(config *c) {return word_get_S(stack_s2(config_get_stack(c)));}
-int s2T(config *c) {return word_get_T(stack_s2(config_get_stack(c)));}
-int s2U(config *c) {return word_get_U(stack_s2(config_get_stack(c)));}
-int s2V(config *c) {return word_get_V(stack_s2(config_get_stack(c)));}
-int s2W(config *c) {return word_get_W(stack_s2(config_get_stack(c)));}
-int s2X(config *c) {return word_get_X(stack_s2(config_get_stack(c)));}
-int s2Y(config *c) {return word_get_Y(stack_s2(config_get_stack(c)));}
-int s2Z(config *c) {return word_get_Z(stack_s2(config_get_stack(c)));}
-
-int s3f(config *c) {return word_get_form(stack_s3(config_get_stack(c)));}
-int s3l(config *c) {return word_get_lemma(stack_s3(config_get_stack(c)));}
-int s3c(config *c) {return word_get_cpos(stack_s3(config_get_stack(c)));}
-int s3p(config *c) {return word_get_pos(stack_s3(config_get_stack(c)));}
-int s3m(config *c) {return word_get_feats(stack_s3(config_get_stack(c)));}
-int s3s(config *c) {return word_get_stag(stack_s3(config_get_stack(c)));}
-int s3A(config *c) {return word_get_A(stack_s3(config_get_stack(c)));}
-int s3B(config *c) {return word_get_B(stack_s3(config_get_stack(c)));}
-int s3C(config *c) {return word_get_C(stack_s3(config_get_stack(c)));}
-int s3D(config *c) {return word_get_D(stack_s3(config_get_stack(c)));}
-int s3E(config *c) {return word_get_E(stack_s3(config_get_stack(c)));}
-int s3F(config *c) {return word_get_F(stack_s3(config_get_stack(c)));}
-int s3G(config *c) {return word_get_G(stack_s3(config_get_stack(c)));}
-int s3H(config *c) {return word_get_H(stack_s3(config_get_stack(c)));}
-int s3I(config *c) {return word_get_I(stack_s3(config_get_stack(c)));}
-int s3J(config *c) {return word_get_J(stack_s3(config_get_stack(c)));}
-int s3K(config *c) {return word_get_K(stack_s3(config_get_stack(c)));}
-int s3L(config *c) {return word_get_L(stack_s3(config_get_stack(c)));}
-int s3M(config *c) {return word_get_M(stack_s3(config_get_stack(c)));}
-int s3N(config *c) {return word_get_N(stack_s3(config_get_stack(c)));}
-int s3O(config *c) {return word_get_O(stack_s3(config_get_stack(c)));}
-int s3P(config *c) {return word_get_P(stack_s3(config_get_stack(c)));}
-int s3Q(config *c) {return word_get_Q(stack_s3(config_get_stack(c)));}
-int s3R(config *c) {return word_get_R(stack_s3(config_get_stack(c)));}
-int s3S(config *c) {return word_get_S(stack_s3(config_get_stack(c)));}
-int s3T(config *c) {return word_get_T(stack_s3(config_get_stack(c)));}
-int s3U(config *c) {return word_get_U(stack_s3(config_get_stack(c)));}
-int s3V(config *c) {return word_get_V(stack_s3(config_get_stack(c)));}
-int s3W(config *c) {return word_get_W(stack_s3(config_get_stack(c)));}
-int s3X(config *c) {return word_get_X(stack_s3(config_get_stack(c)));}
-int s3Y(config *c) {return word_get_Y(stack_s3(config_get_stack(c)));}
-int s3Z(config *c) {return word_get_Z(stack_s3(config_get_stack(c)));}
+int s0g(void *c) {return (word_get_gov(stack_s0(config_get_stack((config *) c))) == WORD_INVALID_GOV) ? 0 : 1;}
+int s0sf(void *c) {return word_get_label(stack_s0(config_get_stack((config *) c)));}
+
+int s0f(void *c) {return word_get_form(stack_s0(config_get_stack((config *) c)));}
+int s0l(void *c) {return word_get_lemma(stack_s0(config_get_stack((config *) c)));}
+int s0c(void *c) {return word_get_cpos(stack_s0(config_get_stack((config *) c)));}
+int s0p(void *c) {return word_get_pos(stack_s0(config_get_stack((config *) c)));}
+int s0m(void *c) {return word_get_feats(stack_s0(config_get_stack((config *) c)));}
+int s0s(void *c) {return word_get_stag(stack_s0(config_get_stack((config *) c)));}
+int s0A(void *c) {return word_get_A(stack_s0(config_get_stack((config *) c)));}
+int s0B(void *c) {return word_get_B(stack_s0(config_get_stack((config *) c)));}
+int s0C(void *c) {return word_get_C(stack_s0(config_get_stack((config *) c)));}
+int s0D(void *c) {return word_get_D(stack_s0(config_get_stack((config *) c)));}
+int s0E(void *c) {return word_get_E(stack_s0(config_get_stack((config *) c)));}
+int s0F(void *c) {return word_get_F(stack_s0(config_get_stack((config *) c)));}
+int s0G(void *c) {return word_get_G(stack_s0(config_get_stack((config *) c)));}
+int s0H(void *c) {return word_get_H(stack_s0(config_get_stack((config *) c)));}
+int s0I(void *c) {return word_get_I(stack_s0(config_get_stack((config *) c)));}
+int s0J(void *c) {return word_get_J(stack_s0(config_get_stack((config *) c)));}
+int s0K(void *c) {return word_get_K(stack_s0(config_get_stack((config *) c)));}
+int s0L(void *c) {return word_get_L(stack_s0(config_get_stack((config *) c)));}
+int s0M(void *c) {return word_get_M(stack_s0(config_get_stack((config *) c)));}
+int s0N(void *c) {return word_get_N(stack_s0(config_get_stack((config *) c)));}
+int s0O(void *c) {return word_get_O(stack_s0(config_get_stack((config *) c)));}
+int s0P(void *c) {return word_get_P(stack_s0(config_get_stack((config *) c)));}
+int s0Q(void *c) {return word_get_Q(stack_s0(config_get_stack((config *) c)));}
+int s0R(void *c) {return word_get_R(stack_s0(config_get_stack((config *) c)));}
+int s0S(void *c) {return word_get_S(stack_s0(config_get_stack((config *) c)));}
+int s0T(void *c) {return word_get_T(stack_s0(config_get_stack((config *) c)));}
+int s0U(void *c) {return word_get_U(stack_s0(config_get_stack((config *) c)));}
+int s0V(void *c) {return word_get_V(stack_s0(config_get_stack((config *) c)));}
+int s0W(void *c) {return word_get_W(stack_s0(config_get_stack((config *) c)));}
+int s0X(void *c) {return word_get_X(stack_s0(config_get_stack((config *) c)));}
+int s0Y(void *c) {return word_get_Y(stack_s0(config_get_stack((config *) c)));}
+int s0Z(void *c) {return word_get_Z(stack_s0(config_get_stack((config *) c)));}
+
+int s0U1(void *c) {return word_get_U1(stack_s0(config_get_stack((config *) c)));}
+int s0sgn(void *c) {return word_get_signature(stack_s0(config_get_stack((config *) c)));}
+
+int s1g(void *c)  {return (word_get_gov(stack_s1(config_get_stack((config *) c))) == WORD_INVALID_GOV) ? 0 : 1;}
+int s1sf(void *c) {return word_get_label(stack_s1(config_get_stack((config *) c)));}
+
+int s1f(void *c) {return word_get_form(stack_s1(config_get_stack((config *) c)));}
+int s1l(void *c) {return word_get_lemma(stack_s1(config_get_stack((config *) c)));}
+int s1c(void *c) {return word_get_cpos(stack_s1(config_get_stack((config *) c)));}
+int s1p(void *c) {return word_get_pos(stack_s1(config_get_stack((config *) c)));}
+int s1m(void *c) {return word_get_feats(stack_s1(config_get_stack((config *) c)));}
+int s1s(void *c) {return word_get_stag(stack_s1(config_get_stack((config *) c)));}
+int s1A(void *c) {return word_get_A(stack_s1(config_get_stack((config *) c)));}
+int s1B(void *c) {return word_get_B(stack_s1(config_get_stack((config *) c)));}
+int s1C(void *c) {return word_get_C(stack_s1(config_get_stack((config *) c)));}
+int s1D(void *c) {return word_get_D(stack_s1(config_get_stack((config *) c)));}
+int s1E(void *c) {return word_get_E(stack_s1(config_get_stack((config *) c)));}
+int s1F(void *c) {return word_get_F(stack_s1(config_get_stack((config *) c)));}
+int s1G(void *c) {return word_get_G(stack_s1(config_get_stack((config *) c)));}
+int s1H(void *c) {return word_get_H(stack_s1(config_get_stack((config *) c)));}
+int s1I(void *c) {return word_get_I(stack_s1(config_get_stack((config *) c)));}
+int s1J(void *c) {return word_get_J(stack_s1(config_get_stack((config *) c)));}
+int s1K(void *c) {return word_get_K(stack_s1(config_get_stack((config *) c)));}
+int s1L(void *c) {return word_get_L(stack_s1(config_get_stack((config *) c)));}
+int s1M(void *c) {return word_get_M(stack_s1(config_get_stack((config *) c)));}
+int s1N(void *c) {return word_get_N(stack_s1(config_get_stack((config *) c)));}
+int s1O(void *c) {return word_get_O(stack_s1(config_get_stack((config *) c)));}
+int s1P(void *c) {return word_get_P(stack_s1(config_get_stack((config *) c)));}
+int s1Q(void *c) {return word_get_Q(stack_s1(config_get_stack((config *) c)));}
+int s1R(void *c) {return word_get_R(stack_s1(config_get_stack((config *) c)));}
+int s1S(void *c) {return word_get_S(stack_s1(config_get_stack((config *) c)));}
+int s1T(void *c) {return word_get_T(stack_s1(config_get_stack((config *) c)));}
+int s1U(void *c) {return word_get_U(stack_s1(config_get_stack((config *) c)));}
+int s1V(void *c) {return word_get_V(stack_s1(config_get_stack((config *) c)));}
+int s1W(void *c) {return word_get_W(stack_s1(config_get_stack((config *) c)));}
+int s1X(void *c) {return word_get_X(stack_s1(config_get_stack((config *) c)));}
+int s1Y(void *c) {return word_get_Y(stack_s1(config_get_stack((config *) c)));}
+int s1Z(void *c) {return word_get_Z(stack_s1(config_get_stack((config *) c)));}
+
+int s2f(void *c) {return word_get_form(stack_s2(config_get_stack((config *) c)));}
+int s2l(void *c) {return word_get_lemma(stack_s2(config_get_stack((config *) c)));}
+int s2c(void *c) {return word_get_cpos(stack_s2(config_get_stack((config *) c)));}
+int s2p(void *c) {return word_get_pos(stack_s2(config_get_stack((config *) c)));}
+int s2m(void *c) {return word_get_feats(stack_s2(config_get_stack((config *) c)));}
+int s2s(void *c) {return word_get_stag(stack_s2(config_get_stack((config *) c)));}
+int s2A(void *c) {return word_get_A(stack_s2(config_get_stack((config *) c)));}
+int s2B(void *c) {return word_get_B(stack_s2(config_get_stack((config *) c)));}
+int s2C(void *c) {return word_get_C(stack_s2(config_get_stack((config *) c)));}
+int s2D(void *c) {return word_get_D(stack_s2(config_get_stack((config *) c)));}
+int s2E(void *c) {return word_get_E(stack_s2(config_get_stack((config *) c)));}
+int s2F(void *c) {return word_get_F(stack_s2(config_get_stack((config *) c)));}
+int s2G(void *c) {return word_get_G(stack_s2(config_get_stack((config *) c)));}
+int s2H(void *c) {return word_get_H(stack_s2(config_get_stack((config *) c)));}
+int s2I(void *c) {return word_get_I(stack_s2(config_get_stack((config *) c)));}
+int s2J(void *c) {return word_get_J(stack_s2(config_get_stack((config *) c)));}
+int s2K(void *c) {return word_get_K(stack_s2(config_get_stack((config *) c)));}
+int s2L(void *c) {return word_get_L(stack_s2(config_get_stack((config *) c)));}
+int s2M(void *c) {return word_get_M(stack_s2(config_get_stack((config *) c)));}
+int s2N(void *c) {return word_get_N(stack_s2(config_get_stack((config *) c)));}
+int s2O(void *c) {return word_get_O(stack_s2(config_get_stack((config *) c)));}
+int s2P(void *c) {return word_get_P(stack_s2(config_get_stack((config *) c)));}
+int s2Q(void *c) {return word_get_Q(stack_s2(config_get_stack((config *) c)));}
+int s2R(void *c) {return word_get_R(stack_s2(config_get_stack((config *) c)));}
+int s2S(void *c) {return word_get_S(stack_s2(config_get_stack((config *) c)));}
+int s2T(void *c) {return word_get_T(stack_s2(config_get_stack((config *) c)));}
+int s2U(void *c) {return word_get_U(stack_s2(config_get_stack((config *) c)));}
+int s2V(void *c) {return word_get_V(stack_s2(config_get_stack((config *) c)));}
+int s2W(void *c) {return word_get_W(stack_s2(config_get_stack((config *) c)));}
+int s2X(void *c) {return word_get_X(stack_s2(config_get_stack((config *) c)));}
+int s2Y(void *c) {return word_get_Y(stack_s2(config_get_stack((config *) c)));}
+int s2Z(void *c) {return word_get_Z(stack_s2(config_get_stack((config *) c)));}
+
+int s3f(void *c) {return word_get_form(stack_s3(config_get_stack((config *) c)));}
+int s3l(void *c) {return word_get_lemma(stack_s3(config_get_stack((config *) c)));}
+int s3c(void *c) {return word_get_cpos(stack_s3(config_get_stack((config *) c)));}
+int s3p(void *c) {return word_get_pos(stack_s3(config_get_stack((config *) c)));}
+int s3m(void *c) {return word_get_feats(stack_s3(config_get_stack((config *) c)));}
+int s3s(void *c) {return word_get_stag(stack_s3(config_get_stack((config *) c)));}
+int s3A(void *c) {return word_get_A(stack_s3(config_get_stack((config *) c)));}
+int s3B(void *c) {return word_get_B(stack_s3(config_get_stack((config *) c)));}
+int s3C(void *c) {return word_get_C(stack_s3(config_get_stack((config *) c)));}
+int s3D(void *c) {return word_get_D(stack_s3(config_get_stack((config *) c)));}
+int s3E(void *c) {return word_get_E(stack_s3(config_get_stack((config *) c)));}
+int s3F(void *c) {return word_get_F(stack_s3(config_get_stack((config *) c)));}
+int s3G(void *c) {return word_get_G(stack_s3(config_get_stack((config *) c)));}
+int s3H(void *c) {return word_get_H(stack_s3(config_get_stack((config *) c)));}
+int s3I(void *c) {return word_get_I(stack_s3(config_get_stack((config *) c)));}
+int s3J(void *c) {return word_get_J(stack_s3(config_get_stack((config *) c)));}
+int s3K(void *c) {return word_get_K(stack_s3(config_get_stack((config *) c)));}
+int s3L(void *c) {return word_get_L(stack_s3(config_get_stack((config *) c)));}
+int s3M(void *c) {return word_get_M(stack_s3(config_get_stack((config *) c)));}
+int s3N(void *c) {return word_get_N(stack_s3(config_get_stack((config *) c)));}
+int s3O(void *c) {return word_get_O(stack_s3(config_get_stack((config *) c)));}
+int s3P(void *c) {return word_get_P(stack_s3(config_get_stack((config *) c)));}
+int s3Q(void *c) {return word_get_Q(stack_s3(config_get_stack((config *) c)));}
+int s3R(void *c) {return word_get_R(stack_s3(config_get_stack((config *) c)));}
+int s3S(void *c) {return word_get_S(stack_s3(config_get_stack((config *) c)));}
+int s3T(void *c) {return word_get_T(stack_s3(config_get_stack((config *) c)));}
+int s3U(void *c) {return word_get_U(stack_s3(config_get_stack((config *) c)));}
+int s3V(void *c) {return word_get_V(stack_s3(config_get_stack((config *) c)));}
+int s3W(void *c) {return word_get_W(stack_s3(config_get_stack((config *) c)));}
+int s3X(void *c) {return word_get_X(stack_s3(config_get_stack((config *) c)));}
+int s3Y(void *c) {return word_get_Y(stack_s3(config_get_stack((config *) c)));}
+int s3Z(void *c) {return word_get_Z(stack_s3(config_get_stack((config *) c)));}
 
 /* words in the buffer */
 
-int b0g(config *c) {return (word_get_gov(word_buffer_b0(config_get_buffer(c))) == WORD_INVALID_GOV) ? 0 : 1;}
-int b0sf(config *c) {return word_get_label(word_buffer_b0(config_get_buffer(c)));}
+int b0g(void *c) {return (word_get_gov(word_buffer_b0(config_get_buffer((config *) c))) == WORD_INVALID_GOV) ? 0 : 1;}
+int b0sf(void *c) {return word_get_label(word_buffer_b0(config_get_buffer((config *) c)));}
 
 
-int b0len(config *c) {
+int b0len(void *c) {
   int len = 0;
-  word *w = word_buffer_b0(config_get_buffer(c));
+  word *w = word_buffer_b0(config_get_buffer((config *) c));
   if(w->input)
     len = strlen(w->input);
   return (len > 7)? 7 : len;
@@ -166,262 +168,263 @@ int b0len(config *c) {
 
 
 
-int b0f(config *c) {return word_get_form(word_buffer_b0(config_get_buffer(c)));}
-int b0l(config *c) {return word_get_lemma(word_buffer_b0(config_get_buffer(c)));}
-int b0c(config *c) {return word_get_cpos(word_buffer_b0(config_get_buffer(c)));}
-int b0p(config *c) {return word_get_pos(word_buffer_b0(config_get_buffer(c)));}
-int b0m(config *c) {return word_get_feats(word_buffer_b0(config_get_buffer(c)));}
-int b0s(config *c) {return word_get_stag(word_buffer_b0(config_get_buffer(c)));}
-int b0A(config *c) {return word_get_A(word_buffer_b0(config_get_buffer(c)));}
-int b0B(config *c) {return word_get_B(word_buffer_b0(config_get_buffer(c)));}
-int b0C(config *c) {return word_get_C(word_buffer_b0(config_get_buffer(c)));}
-int b0D(config *c) {return word_get_D(word_buffer_b0(config_get_buffer(c)));}
-int b0E(config *c) {return word_get_E(word_buffer_b0(config_get_buffer(c)));}
-int b0F(config *c) {return word_get_F(word_buffer_b0(config_get_buffer(c)));}
-int b0G(config *c) {return word_get_G(word_buffer_b0(config_get_buffer(c)));}
-int b0H(config *c) {return word_get_H(word_buffer_b0(config_get_buffer(c)));}
-int b0I(config *c) {return word_get_I(word_buffer_b0(config_get_buffer(c)));}
-int b0J(config *c) {return word_get_J(word_buffer_b0(config_get_buffer(c)));}
-int b0K(config *c) {return word_get_K(word_buffer_b0(config_get_buffer(c)));}
-int b0L(config *c) {return word_get_L(word_buffer_b0(config_get_buffer(c)));}
-int b0M(config *c) {return word_get_M(word_buffer_b0(config_get_buffer(c)));}
-int b0N(config *c) {return word_get_N(word_buffer_b0(config_get_buffer(c)));}
-int b0O(config *c) {return word_get_O(word_buffer_b0(config_get_buffer(c)));}
-int b0P(config *c) {return word_get_P(word_buffer_b0(config_get_buffer(c)));}
-int b0Q(config *c) {return word_get_Q(word_buffer_b0(config_get_buffer(c)));}
-int b0R(config *c) {return word_get_R(word_buffer_b0(config_get_buffer(c)));}
-int b0S(config *c) {return word_get_S(word_buffer_b0(config_get_buffer(c)));}
-int b0T(config *c) {return word_get_T(word_buffer_b0(config_get_buffer(c)));}
-int b0U(config *c) {return word_get_U(word_buffer_b0(config_get_buffer(c)));}
-int b0V(config *c) {return word_get_V(word_buffer_b0(config_get_buffer(c)));}
-int b0W(config *c) {return word_get_W(word_buffer_b0(config_get_buffer(c)));}
-int b0X(config *c) {return word_get_X(word_buffer_b0(config_get_buffer(c)));}
-int b0Y(config *c) {return word_get_Y(word_buffer_b0(config_get_buffer(c)));}
-int b0Z(config *c) {return word_get_Z(word_buffer_b0(config_get_buffer(c)));}
-
-int b0U1(config *c) {return word_get_U1(word_buffer_b0(config_get_buffer(c)));}
-int b0sgn(config *c) {return word_get_signature(word_buffer_b0(config_get_buffer(c)));}
-
-int b1f(config *c) {return word_get_form(word_buffer_b1(config_get_buffer(c)));}
-int b1l(config *c) {return word_get_lemma(word_buffer_b1(config_get_buffer(c)));}
-int b1c(config *c) {return word_get_cpos(word_buffer_b1(config_get_buffer(c)));}
-int b1p(config *c) {return word_get_pos(word_buffer_b1(config_get_buffer(c)));}
-int b1m(config *c) {return word_get_feats(word_buffer_b1(config_get_buffer(c)));}
-int b1s(config *c) {return word_get_stag(word_buffer_b1(config_get_buffer(c)));}
-int b1A(config *c) {return word_get_A(word_buffer_b1(config_get_buffer(c)));}
-int b1B(config *c) {return word_get_B(word_buffer_b1(config_get_buffer(c)));}
-int b1C(config *c) {return word_get_C(word_buffer_b1(config_get_buffer(c)));}
-int b1D(config *c) {return word_get_D(word_buffer_b1(config_get_buffer(c)));}
-int b1E(config *c) {return word_get_E(word_buffer_b1(config_get_buffer(c)));}
-int b1F(config *c) {return word_get_F(word_buffer_b1(config_get_buffer(c)));}
-int b1G(config *c) {return word_get_G(word_buffer_b1(config_get_buffer(c)));}
-int b1H(config *c) {return word_get_H(word_buffer_b1(config_get_buffer(c)));}
-int b1I(config *c) {return word_get_I(word_buffer_b1(config_get_buffer(c)));}
-int b1J(config *c) {return word_get_J(word_buffer_b1(config_get_buffer(c)));}
-int b1K(config *c) {return word_get_K(word_buffer_b1(config_get_buffer(c)));}
-int b1L(config *c) {return word_get_L(word_buffer_b1(config_get_buffer(c)));}
-int b1M(config *c) {return word_get_M(word_buffer_b1(config_get_buffer(c)));}
-int b1N(config *c) {return word_get_N(word_buffer_b1(config_get_buffer(c)));}
-int b1O(config *c) {return word_get_O(word_buffer_b1(config_get_buffer(c)));}
-int b1P(config *c) {return word_get_P(word_buffer_b1(config_get_buffer(c)));}
-int b1Q(config *c) {return word_get_Q(word_buffer_b1(config_get_buffer(c)));}
-int b1R(config *c) {return word_get_R(word_buffer_b1(config_get_buffer(c)));}
-int b1S(config *c) {return word_get_S(word_buffer_b1(config_get_buffer(c)));}
-int b1T(config *c) {return word_get_T(word_buffer_b1(config_get_buffer(c)));}
-int b1U(config *c) {return word_get_U(word_buffer_b1(config_get_buffer(c)));}
-int b1V(config *c) {return word_get_V(word_buffer_b1(config_get_buffer(c)));}
-int b1W(config *c) {return word_get_W(word_buffer_b1(config_get_buffer(c)));}
-int b1X(config *c) {return word_get_X(word_buffer_b1(config_get_buffer(c)));}
-int b1Y(config *c) {return word_get_Y(word_buffer_b1(config_get_buffer(c)));}
-int b1Z(config *c) {return word_get_Z(word_buffer_b1(config_get_buffer(c)));}
-
-int b1U1(config *c) {return word_get_U1(word_buffer_b1(config_get_buffer(c)));}
-int b1sgn(config *c) {return word_get_signature(word_buffer_b1(config_get_buffer(c)));}
-
-int b2f(config *c) {return word_get_form(word_buffer_b2(config_get_buffer(c)));}
-int b2l(config *c) {return word_get_lemma(word_buffer_b2(config_get_buffer(c)));}
-int b2c(config *c) {return word_get_cpos(word_buffer_b2(config_get_buffer(c)));}
-int b2p(config *c) {return word_get_pos(word_buffer_b2(config_get_buffer(c)));}
-int b2m(config *c) {return word_get_feats(word_buffer_b2(config_get_buffer(c)));}
-int b2s(config *c) {return word_get_stag(word_buffer_b2(config_get_buffer(c)));}
-int b2A(config *c) {return word_get_A(word_buffer_b2(config_get_buffer(c)));}
-int b2B(config *c) {return word_get_B(word_buffer_b2(config_get_buffer(c)));}
-int b2C(config *c) {return word_get_C(word_buffer_b2(config_get_buffer(c)));}
-int b2D(config *c) {return word_get_D(word_buffer_b2(config_get_buffer(c)));}
-int b2E(config *c) {return word_get_E(word_buffer_b2(config_get_buffer(c)));}
-int b2F(config *c) {return word_get_F(word_buffer_b2(config_get_buffer(c)));}
-int b2G(config *c) {return word_get_G(word_buffer_b2(config_get_buffer(c)));}
-int b2H(config *c) {return word_get_H(word_buffer_b2(config_get_buffer(c)));}
-int b2I(config *c) {return word_get_I(word_buffer_b2(config_get_buffer(c)));}
-int b2J(config *c) {return word_get_J(word_buffer_b2(config_get_buffer(c)));}
-int b2K(config *c) {return word_get_K(word_buffer_b2(config_get_buffer(c)));}
-int b2L(config *c) {return word_get_L(word_buffer_b2(config_get_buffer(c)));}
-int b2M(config *c) {return word_get_M(word_buffer_b2(config_get_buffer(c)));}
-int b2N(config *c) {return word_get_N(word_buffer_b2(config_get_buffer(c)));}
-int b2O(config *c) {return word_get_O(word_buffer_b2(config_get_buffer(c)));}
-int b2P(config *c) {return word_get_P(word_buffer_b2(config_get_buffer(c)));}
-int b2Q(config *c) {return word_get_Q(word_buffer_b2(config_get_buffer(c)));}
-int b2R(config *c) {return word_get_R(word_buffer_b2(config_get_buffer(c)));}
-int b2S(config *c) {return word_get_S(word_buffer_b2(config_get_buffer(c)));}
-int b2T(config *c) {return word_get_T(word_buffer_b2(config_get_buffer(c)));}
-int b2U(config *c) {return word_get_U(word_buffer_b2(config_get_buffer(c)));}
-int b2V(config *c) {return word_get_V(word_buffer_b2(config_get_buffer(c)));}
-int b2W(config *c) {return word_get_W(word_buffer_b2(config_get_buffer(c)));}
-int b2X(config *c) {return word_get_X(word_buffer_b2(config_get_buffer(c)));}
-int b2Y(config *c) {return word_get_Y(word_buffer_b2(config_get_buffer(c)));}
-int b2Z(config *c) {return word_get_Z(word_buffer_b2(config_get_buffer(c)));}
-
-int b2U1(config *c) {return word_get_U1(word_buffer_b2(config_get_buffer(c)));}
-int b2sgn(config *c) {return word_get_signature(word_buffer_b2(config_get_buffer(c)));}
-
-
-
-int b3f(config *c) {return word_get_form(word_buffer_b3(config_get_buffer(c)));}
-int b3l(config *c) {return word_get_lemma(word_buffer_b3(config_get_buffer(c)));}
-int b3c(config *c) {return word_get_cpos(word_buffer_b3(config_get_buffer(c)));}
-int b3p(config *c) {return word_get_pos(word_buffer_b3(config_get_buffer(c)));}
-int b3m(config *c) {return word_get_feats(word_buffer_b3(config_get_buffer(c)));}
-int b3s(config *c) {return word_get_stag(word_buffer_b3(config_get_buffer(c)));}
-int b3A(config *c) {return word_get_A(word_buffer_b3(config_get_buffer(c)));}
-int b3B(config *c) {return word_get_B(word_buffer_b3(config_get_buffer(c)));}
-int b3C(config *c) {return word_get_C(word_buffer_b3(config_get_buffer(c)));}
-int b3D(config *c) {return word_get_D(word_buffer_b3(config_get_buffer(c)));}
-int b3E(config *c) {return word_get_E(word_buffer_b3(config_get_buffer(c)));}
-int b3F(config *c) {return word_get_F(word_buffer_b3(config_get_buffer(c)));}
-int b3G(config *c) {return word_get_G(word_buffer_b3(config_get_buffer(c)));}
-int b3H(config *c) {return word_get_H(word_buffer_b3(config_get_buffer(c)));}
-int b3I(config *c) {return word_get_I(word_buffer_b3(config_get_buffer(c)));}
-int b3J(config *c) {return word_get_J(word_buffer_b3(config_get_buffer(c)));}
-int b3K(config *c) {return word_get_K(word_buffer_b3(config_get_buffer(c)));}
-int b3L(config *c) {return word_get_L(word_buffer_b3(config_get_buffer(c)));}
-int b3M(config *c) {return word_get_M(word_buffer_b3(config_get_buffer(c)));}
-int b3N(config *c) {return word_get_N(word_buffer_b3(config_get_buffer(c)));}
-int b3O(config *c) {return word_get_O(word_buffer_b3(config_get_buffer(c)));}
-int b3P(config *c) {return word_get_P(word_buffer_b3(config_get_buffer(c)));}
-int b3Q(config *c) {return word_get_Q(word_buffer_b3(config_get_buffer(c)));}
-int b3R(config *c) {return word_get_R(word_buffer_b3(config_get_buffer(c)));}
-int b3S(config *c) {return word_get_S(word_buffer_b3(config_get_buffer(c)));}
-int b3T(config *c) {return word_get_T(word_buffer_b3(config_get_buffer(c)));}
-int b3U(config *c) {return word_get_U(word_buffer_b3(config_get_buffer(c)));}
-int b3V(config *c) {return word_get_V(word_buffer_b3(config_get_buffer(c)));}
-int b3W(config *c) {return word_get_W(word_buffer_b3(config_get_buffer(c)));}
-int b3X(config *c) {return word_get_X(word_buffer_b3(config_get_buffer(c)));}
-int b3Y(config *c) {return word_get_Y(word_buffer_b3(config_get_buffer(c)));}
-int b3Z(config *c) {return word_get_Z(word_buffer_b3(config_get_buffer(c)));}
-
-int bm1f(config *c) {return word_get_form(word_buffer_bm1(config_get_buffer(c)));}
-int bm1l(config *c) {return word_get_lemma(word_buffer_bm1(config_get_buffer(c)));}
-int bm1c(config *c) {return word_get_cpos(word_buffer_bm1(config_get_buffer(c)));}
-int bm1p(config *c) {return word_get_pos(word_buffer_bm1(config_get_buffer(c)));}
-int bm1m(config *c) {return word_get_feats(word_buffer_bm1(config_get_buffer(c)));}
-int bm1s(config *c) {return word_get_stag(word_buffer_bm1(config_get_buffer(c)));}
-int bm1A(config *c) {return word_get_A(word_buffer_bm1(config_get_buffer(c)));}
-int bm1B(config *c) {return word_get_B(word_buffer_bm1(config_get_buffer(c)));}
-int bm1C(config *c) {return word_get_C(word_buffer_bm1(config_get_buffer(c)));}
-int bm1D(config *c) {return word_get_D(word_buffer_bm1(config_get_buffer(c)));}
-int bm1E(config *c) {return word_get_E(word_buffer_bm1(config_get_buffer(c)));}
-int bm1F(config *c) {return word_get_F(word_buffer_bm1(config_get_buffer(c)));}
-int bm1G(config *c) {return word_get_G(word_buffer_bm1(config_get_buffer(c)));}
-int bm1H(config *c) {return word_get_H(word_buffer_bm1(config_get_buffer(c)));}
-int bm1I(config *c) {return word_get_I(word_buffer_bm1(config_get_buffer(c)));}
-int bm1J(config *c) {return word_get_J(word_buffer_bm1(config_get_buffer(c)));}
-int bm1K(config *c) {return word_get_K(word_buffer_bm1(config_get_buffer(c)));}
-int bm1L(config *c) {return word_get_L(word_buffer_bm1(config_get_buffer(c)));}
-int bm1M(config *c) {return word_get_M(word_buffer_bm1(config_get_buffer(c)));}
-int bm1N(config *c) {return word_get_N(word_buffer_bm1(config_get_buffer(c)));}
-int bm1O(config *c) {return word_get_O(word_buffer_bm1(config_get_buffer(c)));}
-int bm1P(config *c) {return word_get_P(word_buffer_bm1(config_get_buffer(c)));}
-int bm1Q(config *c) {return word_get_Q(word_buffer_bm1(config_get_buffer(c)));}
-int bm1R(config *c) {return word_get_R(word_buffer_bm1(config_get_buffer(c)));}
-int bm1S(config *c) {return word_get_S(word_buffer_bm1(config_get_buffer(c)));}
-int bm1T(config *c) {return word_get_T(word_buffer_bm1(config_get_buffer(c)));}
-int bm1U(config *c) {return word_get_U(word_buffer_bm1(config_get_buffer(c)));}
-int bm1V(config *c) {return word_get_V(word_buffer_bm1(config_get_buffer(c)));}
-int bm1W(config *c) {return word_get_W(word_buffer_bm1(config_get_buffer(c)));}
-int bm1X(config *c) {return word_get_X(word_buffer_bm1(config_get_buffer(c)));}
-int bm1Y(config *c) {return word_get_Y(word_buffer_bm1(config_get_buffer(c)));}
-int bm1Z(config *c) {return word_get_Z(word_buffer_bm1(config_get_buffer(c)));}
-
-int bm1U1(config *c) {return word_get_U1(word_buffer_bm1(config_get_buffer(c)));}
-int bm1sgn(config *c) {return word_get_signature(word_buffer_bm1(config_get_buffer(c)));}
-
-int bm2f(config *c) {return word_get_form(word_buffer_bm2(config_get_buffer(c)));}
-int bm2l(config *c) {return word_get_lemma(word_buffer_bm2(config_get_buffer(c)));}
-int bm2c(config *c) {return word_get_cpos(word_buffer_bm2(config_get_buffer(c)));}
-int bm2p(config *c) {return word_get_pos(word_buffer_bm2(config_get_buffer(c)));}
-int bm2m(config *c) {return word_get_feats(word_buffer_bm2(config_get_buffer(c)));}
-int bm2s(config *c) {return word_get_stag(word_buffer_bm2(config_get_buffer(c)));}
-int bm2A(config *c) {return word_get_A(word_buffer_bm2(config_get_buffer(c)));}
-int bm2B(config *c) {return word_get_B(word_buffer_bm2(config_get_buffer(c)));}
-int bm2C(config *c) {return word_get_C(word_buffer_bm2(config_get_buffer(c)));}
-int bm2D(config *c) {return word_get_D(word_buffer_bm2(config_get_buffer(c)));}
-int bm2E(config *c) {return word_get_E(word_buffer_bm2(config_get_buffer(c)));}
-int bm2F(config *c) {return word_get_F(word_buffer_bm2(config_get_buffer(c)));}
-int bm2G(config *c) {return word_get_G(word_buffer_bm2(config_get_buffer(c)));}
-int bm2H(config *c) {return word_get_H(word_buffer_bm2(config_get_buffer(c)));}
-int bm2I(config *c) {return word_get_I(word_buffer_bm2(config_get_buffer(c)));}
-int bm2J(config *c) {return word_get_J(word_buffer_bm2(config_get_buffer(c)));}
-int bm2K(config *c) {return word_get_K(word_buffer_bm2(config_get_buffer(c)));}
-int bm2L(config *c) {return word_get_L(word_buffer_bm2(config_get_buffer(c)));}
-int bm2M(config *c) {return word_get_M(word_buffer_bm2(config_get_buffer(c)));}
-int bm2N(config *c) {return word_get_N(word_buffer_bm2(config_get_buffer(c)));}
-int bm2O(config *c) {return word_get_O(word_buffer_bm2(config_get_buffer(c)));}
-int bm2P(config *c) {return word_get_P(word_buffer_bm2(config_get_buffer(c)));}
-int bm2Q(config *c) {return word_get_Q(word_buffer_bm2(config_get_buffer(c)));}
-int bm2R(config *c) {return word_get_R(word_buffer_bm2(config_get_buffer(c)));}
-int bm2S(config *c) {return word_get_S(word_buffer_bm2(config_get_buffer(c)));}
-int bm2T(config *c) {return word_get_T(word_buffer_bm2(config_get_buffer(c)));}
-int bm2U(config *c) {return word_get_U(word_buffer_bm2(config_get_buffer(c)));}
-int bm2V(config *c) {return word_get_V(word_buffer_bm2(config_get_buffer(c)));}
-int bm2W(config *c) {return word_get_W(word_buffer_bm2(config_get_buffer(c)));}
-int bm2X(config *c) {return word_get_X(word_buffer_bm2(config_get_buffer(c)));}
-int bm2Y(config *c) {return word_get_Y(word_buffer_bm2(config_get_buffer(c)));}
-int bm2Z(config *c) {return word_get_Z(word_buffer_bm2(config_get_buffer(c)));}
-
-int bm3f(config *c) {return word_get_form(word_buffer_bm3(config_get_buffer(c)));}
-int bm3l(config *c) {return word_get_lemma(word_buffer_bm3(config_get_buffer(c)));}
-int bm3c(config *c) {return word_get_cpos(word_buffer_bm3(config_get_buffer(c)));}
-int bm3p(config *c) {return word_get_pos(word_buffer_bm3(config_get_buffer(c)));}
-int bm3m(config *c) {return word_get_feats(word_buffer_bm3(config_get_buffer(c)));}
-int bm3s(config *c) {return word_get_stag(word_buffer_bm3(config_get_buffer(c)));}
-int bm3A(config *c) {return word_get_A(word_buffer_bm3(config_get_buffer(c)));}
-int bm3B(config *c) {return word_get_B(word_buffer_bm3(config_get_buffer(c)));}
-int bm3C(config *c) {return word_get_C(word_buffer_bm3(config_get_buffer(c)));}
-int bm3D(config *c) {return word_get_D(word_buffer_bm3(config_get_buffer(c)));}
-int bm3E(config *c) {return word_get_E(word_buffer_bm3(config_get_buffer(c)));}
-int bm3F(config *c) {return word_get_F(word_buffer_bm3(config_get_buffer(c)));}
-int bm3G(config *c) {return word_get_G(word_buffer_bm3(config_get_buffer(c)));}
-int bm3H(config *c) {return word_get_H(word_buffer_bm3(config_get_buffer(c)));}
-int bm3I(config *c) {return word_get_I(word_buffer_bm3(config_get_buffer(c)));}
-int bm3J(config *c) {return word_get_J(word_buffer_bm3(config_get_buffer(c)));}
-int bm3K(config *c) {return word_get_K(word_buffer_bm3(config_get_buffer(c)));}
-int bm3L(config *c) {return word_get_L(word_buffer_bm3(config_get_buffer(c)));}
-int bm3M(config *c) {return word_get_M(word_buffer_bm3(config_get_buffer(c)));}
-int bm3N(config *c) {return word_get_N(word_buffer_bm3(config_get_buffer(c)));}
-int bm3O(config *c) {return word_get_O(word_buffer_bm3(config_get_buffer(c)));}
-int bm3P(config *c) {return word_get_P(word_buffer_bm3(config_get_buffer(c)));}
-int bm3Q(config *c) {return word_get_Q(word_buffer_bm3(config_get_buffer(c)));}
-int bm3R(config *c) {return word_get_R(word_buffer_bm3(config_get_buffer(c)));}
-int bm3S(config *c) {return word_get_S(word_buffer_bm3(config_get_buffer(c)));}
-int bm3T(config *c) {return word_get_T(word_buffer_bm3(config_get_buffer(c)));}
-int bm3U(config *c) {return word_get_U(word_buffer_bm3(config_get_buffer(c)));}
-int bm3V(config *c) {return word_get_V(word_buffer_bm3(config_get_buffer(c)));}
-int bm3W(config *c) {return word_get_W(word_buffer_bm3(config_get_buffer(c)));}
-int bm3X(config *c) {return word_get_X(word_buffer_bm3(config_get_buffer(c)));}
-int bm3Y(config *c) {return word_get_Y(word_buffer_bm3(config_get_buffer(c)));}
-int bm3Z(config *c) {return word_get_Z(word_buffer_bm3(config_get_buffer(c)));}
+int b0f(void *c) {return word_get_form(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0l(void *c) {return word_get_lemma(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0c(void *c) {return word_get_cpos(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0p(void *c) {return word_get_pos(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0m(void *c) {return word_get_feats(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0s(void *c) {return word_get_stag(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0A(void *c) {return word_get_A(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0B(void *c) {return word_get_B(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0C(void *c) {return word_get_C(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0D(void *c) {return word_get_D(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0E(void *c) {return word_get_E(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0F(void *c) {return word_get_F(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0G(void *c) {return word_get_G(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0H(void *c) {return word_get_H(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0I(void *c) {return word_get_I(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0J(void *c) {return word_get_J(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0K(void *c) {return word_get_K(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0L(void *c) {return word_get_L(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0M(void *c) {return word_get_M(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0N(void *c) {return word_get_N(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0O(void *c) {return word_get_O(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0P(void *c) {return word_get_P(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0Q(void *c) {return word_get_Q(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0R(void *c) {return word_get_R(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0S(void *c) {return word_get_S(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0T(void *c) {return word_get_T(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0U(void *c) {return word_get_U(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0V(void *c) {return word_get_V(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0W(void *c) {return word_get_W(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0X(void *c) {return word_get_X(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0Y(void *c) {return word_get_Y(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0Z(void *c) {return word_get_Z(word_buffer_b0(config_get_buffer((config *) c)));}
+
+int b0U1(void *c) {return word_get_U1(word_buffer_b0(config_get_buffer((config *) c)));}
+int b0sgn(void *c) {return word_get_signature(word_buffer_b0(config_get_buffer((config *) c)));}
+
+int b1f(void *c) {return word_get_form(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1l(void *c) {return word_get_lemma(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1c(void *c) {return word_get_cpos(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1p(void *c) {return word_get_pos(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1m(void *c) {return word_get_feats(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1s(void *c) {return word_get_stag(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1A(void *c) {return word_get_A(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1B(void *c) {return word_get_B(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1C(void *c) {return word_get_C(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1D(void *c) {return word_get_D(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1E(void *c) {return word_get_E(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1F(void *c) {return word_get_F(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1G(void *c) {return word_get_G(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1H(void *c) {return word_get_H(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1I(void *c) {return word_get_I(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1J(void *c) {return word_get_J(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1K(void *c) {return word_get_K(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1L(void *c) {return word_get_L(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1M(void *c) {return word_get_M(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1N(void *c) {return word_get_N(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1O(void *c) {return word_get_O(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1P(void *c) {return word_get_P(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1Q(void *c) {return word_get_Q(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1R(void *c) {return word_get_R(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1S(void *c) {return word_get_S(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1T(void *c) {return word_get_T(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1U(void *c) {return word_get_U(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1V(void *c) {return word_get_V(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1W(void *c) {return word_get_W(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1X(void *c) {return word_get_X(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1Y(void *c) {return word_get_Y(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1Z(void *c) {return word_get_Z(word_buffer_b1(config_get_buffer((config *) c)));}
+
+int b1U1(void *c) {return word_get_U1(word_buffer_b1(config_get_buffer((config *) c)));}
+int b1sgn(void *c) {return word_get_signature(word_buffer_b1(config_get_buffer((config *) c)));}
+
+int b2f(void *c) {return word_get_form(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2l(void *c) {return word_get_lemma(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2c(void *c) {return word_get_cpos(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2p(void *c) {return word_get_pos(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2m(void *c) {return word_get_feats(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2s(void *c) {return word_get_stag(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2A(void *c) {return word_get_A(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2B(void *c) {return word_get_B(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2C(void *c) {return word_get_C(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2D(void *c) {return word_get_D(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2E(void *c) {return word_get_E(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2F(void *c) {return word_get_F(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2G(void *c) {return word_get_G(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2H(void *c) {return word_get_H(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2I(void *c) {return word_get_I(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2J(void *c) {return word_get_J(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2K(void *c) {return word_get_K(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2L(void *c) {return word_get_L(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2M(void *c) {return word_get_M(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2N(void *c) {return word_get_N(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2O(void *c) {return word_get_O(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2P(void *c) {return word_get_P(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2Q(void *c) {return word_get_Q(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2R(void *c) {return word_get_R(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2S(void *c) {return word_get_S(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2T(void *c) {return word_get_T(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2U(void *c) {return word_get_U(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2V(void *c) {return word_get_V(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2W(void *c) {return word_get_W(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2X(void *c) {return word_get_X(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2Y(void *c) {return word_get_Y(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2Z(void *c) {return word_get_Z(word_buffer_b2(config_get_buffer((config *) c)));}
+
+int b2U1(void *c) {return word_get_U1(word_buffer_b2(config_get_buffer((config *) c)));}
+int b2sgn(void *c) {return word_get_signature(word_buffer_b2(config_get_buffer((config *) c)));}
+
+
+
+int b3f(void *c) {return word_get_form(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3l(void *c) {return word_get_lemma(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3c(void *c) {return word_get_cpos(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3p(void *c) {return word_get_pos(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3m(void *c) {return word_get_feats(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3s(void *c) {return word_get_stag(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3A(void *c) {return word_get_A(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3B(void *c) {return word_get_B(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3C(void *c) {return word_get_C(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3D(void *c) {return word_get_D(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3E(void *c) {return word_get_E(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3F(void *c) {return word_get_F(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3G(void *c) {return word_get_G(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3H(void *c) {return word_get_H(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3I(void *c) {return word_get_I(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3J(void *c) {return word_get_J(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3K(void *c) {return word_get_K(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3L(void *c) {return word_get_L(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3M(void *c) {return word_get_M(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3N(void *c) {return word_get_N(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3O(void *c) {return word_get_O(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3P(void *c) {return word_get_P(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3Q(void *c) {return word_get_Q(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3R(void *c) {return word_get_R(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3S(void *c) {return word_get_S(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3T(void *c) {return word_get_T(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3U(void *c) {return word_get_U(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3V(void *c) {return word_get_V(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3W(void *c) {return word_get_W(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3X(void *c) {return word_get_X(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3Y(void *c) {return word_get_Y(word_buffer_b3(config_get_buffer((config *) c)));}
+int b3Z(void *c) {return word_get_Z(word_buffer_b3(config_get_buffer((config *) c)));}
+
+int bm1f(void *c) {return word_get_form(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1l(void *c) {return word_get_lemma(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1c(void *c) {return word_get_cpos(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1p(void *c) {return word_get_pos(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1m(void *c) {return word_get_feats(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1s(void *c) {return word_get_stag(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1A(void *c) {return word_get_A(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1B(void *c) {return word_get_B(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1C(void *c) {return word_get_C(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1D(void *c) {return word_get_D(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1E(void *c) {return word_get_E(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1F(void *c) {return word_get_F(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1G(void *c) {return word_get_G(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1H(void *c) {return word_get_H(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1I(void *c) {return word_get_I(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1J(void *c) {return word_get_J(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1K(void *c) {return word_get_K(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1L(void *c) {return word_get_L(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1M(void *c) {return word_get_M(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1N(void *c) {return word_get_N(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1O(void *c) {return word_get_O(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1P(void *c) {return word_get_P(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1Q(void *c) {return word_get_Q(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1R(void *c) {return word_get_R(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1S(void *c) {return word_get_S(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1T(void *c) {return word_get_T(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1U(void *c) {return word_get_U(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1V(void *c) {return word_get_V(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1W(void *c) {return word_get_W(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1X(void *c) {return word_get_X(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1Y(void *c) {return word_get_Y(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1Z(void *c) {return word_get_Z(word_buffer_bm1(config_get_buffer((config *) c)));}
+
+int bm1U1(void *c) {return word_get_U1(word_buffer_bm1(config_get_buffer((config *) c)));}
+int bm1sgn(void *c) {return word_get_signature(word_buffer_bm1(config_get_buffer((config *) c)));}
+
+int bm2f(void *c) {return word_get_form(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2l(void *c) {return word_get_lemma(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2c(void *c) {return word_get_cpos(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2p(void *c) {return word_get_pos(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2m(void *c) {return word_get_feats(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2s(void *c) {return word_get_stag(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2A(void *c) {return word_get_A(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2B(void *c) {return word_get_B(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2C(void *c) {return word_get_C(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2D(void *c) {return word_get_D(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2E(void *c) {return word_get_E(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2F(void *c) {return word_get_F(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2G(void *c) {return word_get_G(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2H(void *c) {return word_get_H(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2I(void *c) {return word_get_I(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2J(void *c) {return word_get_J(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2K(void *c) {return word_get_K(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2L(void *c) {return word_get_L(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2M(void *c) {return word_get_M(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2N(void *c) {return word_get_N(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2O(void *c) {return word_get_O(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2P(void *c) {return word_get_P(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2Q(void *c) {return word_get_Q(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2R(void *c) {return word_get_R(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2S(void *c) {return word_get_S(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2T(void *c) {return word_get_T(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2U(void *c) {return word_get_U(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2V(void *c) {return word_get_V(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2W(void *c) {return word_get_W(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2X(void *c) {return word_get_X(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2Y(void *c) {return word_get_Y(word_buffer_bm2(config_get_buffer((config *) c)));}
+int bm2Z(void *c) {return word_get_Z(word_buffer_bm2(config_get_buffer((config *) c)));}
+
+int bm3f(void *c) {return word_get_form(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3l(void *c) {return word_get_lemma(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3c(void *c) {return word_get_cpos(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3p(void *c) {return word_get_pos(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3m(void *c) {return word_get_feats(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3s(void *c) {return word_get_stag(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3A(void *c) {return word_get_A(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3B(void *c) {return word_get_B(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3C(void *c) {return word_get_C(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3D(void *c) {return word_get_D(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3E(void *c) {return word_get_E(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3F(void *c) {return word_get_F(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3G(void *c) {return word_get_G(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3H(void *c) {return word_get_H(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3I(void *c) {return word_get_I(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3J(void *c) {return word_get_J(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3K(void *c) {return word_get_K(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3L(void *c) {return word_get_L(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3M(void *c) {return word_get_M(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3N(void *c) {return word_get_N(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3O(void *c) {return word_get_O(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3P(void *c) {return word_get_P(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3Q(void *c) {return word_get_Q(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3R(void *c) {return word_get_R(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3S(void *c) {return word_get_S(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3T(void *c) {return word_get_T(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3U(void *c) {return word_get_U(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3V(void *c) {return word_get_V(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3W(void *c) {return word_get_W(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3X(void *c) {return word_get_X(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3Y(void *c) {return word_get_Y(word_buffer_bm3(config_get_buffer((config *) c)));}
+int bm3Z(void *c) {return word_get_Z(word_buffer_bm3(config_get_buffer((config *) c)));}
 
 /* structural features */
 
-int ldep_s0r(config *c){
-  word *gov = stack_s0(config_get_stack(c));
+int ldep_s0r(void *input){
+  config *c = input;
+  word *gov = stack_s0(config_get_stack((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
     for(i=word_get_index(gov) - 1; i > 0  ; i--){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
       if(word_get_sent_seg(dep) == 1) return -1;
       dist = word_get_index(gov) - i;
       if(word_get_gov(dep) == dist){
@@ -432,15 +435,16 @@ int ldep_s0r(config *c){
   return -1;
 }
 
-int ldep_s1r(config *c){
-  word *gov = stack_s1(config_get_stack(c));
+int ldep_s1r(void *input){
+  config *c = input;
+  word *gov = stack_s1(config_get_stack((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
     for(i=word_get_index(gov) - 1; i > 0  ; i--){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
       if(word_get_sent_seg(dep) == 1) return -1;
       dist = word_get_index(gov) - i;
       if(word_get_gov(dep) == dist){
@@ -451,15 +455,16 @@ int ldep_s1r(config *c){
   return -1;
 }
 
-int ldep_b0r(config *c){
-  word *gov = word_buffer_b0(config_get_buffer(c));
+int ldep_b0r(void *input){
+  config *c = input;
+  word *gov = word_buffer_b0(config_get_buffer((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
     for(i=word_get_index(gov) - 1; i > 0  ; i--){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
       if(word_get_sent_seg(dep) == 1) return -1;
       dist = word_get_index(gov) - i;
       if(word_get_gov(dep) == dist){
@@ -470,16 +475,17 @@ int ldep_b0r(config *c){
   return -1;
 }
 
-int rdep_s0r(config *c){
-  word *gov = stack_s0(config_get_stack(c));
+int rdep_s0r(void *input){
+  config *c = input;
+  word *gov = stack_s0(config_get_stack((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
-    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer(c))  ; i++){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
-      if(i >= word_get_index(word_buffer_b0(config_get_buffer(c)))) return -1;
+    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer((config *) c))  ; i++){
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
+      if(i >= word_get_index(word_buffer_b0(config_get_buffer((config *) c)))) return -1;
       dist = i - word_get_index(gov);
       if(word_get_gov(dep) == - dist){
 	return word_get_label(dep);
@@ -489,16 +495,17 @@ int rdep_s0r(config *c){
   return -1;
 }
 
-int rdep_s1r(config *c){
-  word *gov = stack_s1(config_get_stack(c));
+int rdep_s1r(void *input){
+  config *c = input;
+  word *gov = stack_s1(config_get_stack((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
-    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer(c))  ; i++){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
-      if(i >= word_get_index(word_buffer_b0(config_get_buffer(c)))) return -1;
+    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer((config *) c))  ; i++){
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
+      if(i >= word_get_index(word_buffer_b0(config_get_buffer((config *) c)))) return -1;
       dist = i - word_get_index(gov);
       if(word_get_gov(dep) == - dist){
 	return word_get_label(dep);
@@ -508,16 +515,17 @@ int rdep_s1r(config *c){
   return -1;
 }
 
-int rdep_b0r(config *c){
-  word *gov = word_buffer_b0(config_get_buffer(c));
+int rdep_b0r(void *input){
+  config *c = input;
+  word *gov = word_buffer_b0(config_get_buffer((config *) c));
   int i;
   word *dep;
   int dist;
   
   if(gov){
-    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer(c))  ; i++){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
-      if(i >= word_get_index(word_buffer_b0(config_get_buffer(c)))) return -1;
+    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer((config *) c))  ; i++){
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
+      if(i >= word_get_index(word_buffer_b0(config_get_buffer((config *) c)))) return -1;
       dist = i - word_get_index(gov);
       if(word_get_gov(dep) == - dist){
 	return word_get_label(dep);
@@ -528,8 +536,9 @@ int rdep_b0r(config *c){
 }
 
 
-int ndep_b0(config *c){
-  word *gov = word_buffer_b0(config_get_buffer(c));
+int ndep_b0(void *input){
+  config *c = input;
+  word *gov = word_buffer_b0(config_get_buffer((config *) c));
   int i;
   int n = 0;
   word *dep;
@@ -537,15 +546,15 @@ int ndep_b0(config *c){
   
   if(gov){
     for(i=word_get_index(gov) - 1; i > 0  ; i--){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
       if(word_get_sent_seg(dep) == 1) break;
       dist = word_get_index(gov) - i;
       if(word_get_gov(dep) == dist)
 	n++;
     }
-    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer(c))  ; i++){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
-      if(i >= word_get_index(word_buffer_b0(config_get_buffer(c)))) break;
+    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer((config *) c))  ; i++){
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
+      if(i >= word_get_index(word_buffer_b0(config_get_buffer((config *) c)))) break;
       dist = i - word_get_index(gov);
       if(word_get_gov(dep) == - dist)
 	n++;
@@ -554,8 +563,9 @@ int ndep_b0(config *c){
   return (n > 6)? 6 : n;
 }
 
-int ndep_s0(config *c){
-  word *gov = stack_s0(config_get_stack(c));
+int ndep_s0(void *input){
+  config *c = input;
+  word *gov = stack_s0(config_get_stack((config *) c));
   int i;
   int n = 0;
   word *dep;
@@ -563,15 +573,15 @@ int ndep_s0(config *c){
   
   if(gov){
     for(i=word_get_index(gov) - 1; i > 0  ; i--){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
       if(word_get_sent_seg(dep) == 1) break;
       dist = word_get_index(gov) - i;
       if(word_get_gov(dep) == dist)
 	n++;
     }
-    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer(c))  ; i++){
-      dep = word_buffer_get_word_n(config_get_buffer(c), i);
-      if(i >= word_get_index(word_buffer_b0(config_get_buffer(c)))) break;
+    for(i=word_get_index(gov) + 1; i < word_buffer_get_nbelem(config_get_buffer((config *) c))  ; i++){
+      dep = word_buffer_get_word_n(config_get_buffer((config *) c), i);
+      if(i >= word_get_index(word_buffer_b0(config_get_buffer((config *) c)))) break;
       dist = i - word_get_index(gov);
       if(word_get_gov(dep) == - dist)
 	n++;
@@ -583,105 +593,564 @@ int ndep_s0(config *c){
 
 /* distance features */
 
-int dist_s0_b0(config *c){
+int dist_s0_b0(void *input){
+  config *c = input;
   int dist;
   
-  if(stack_is_empty(config_get_stack(c)) || word_buffer_is_empty(config_get_buffer(c)))
+  if(stack_is_empty(config_get_stack((config *) c)) || word_buffer_is_empty(config_get_buffer((config *) c)))
     return 0;
 
-  dist =  word_get_index(word_buffer_b0(config_get_buffer(c))) - word_get_index(stack_top(config_get_stack(c)));
+  dist =  word_get_index(word_buffer_b0(config_get_buffer((config *) c))) - word_get_index(stack_top(config_get_stack((config *) c)));
 
    return (abs(dist) > 6)? 6 : dist; 
 }
 
 /* configurational features */
-
-int sh(config *c) /* stack height */
+ /* stack height */
+int sh(void *input)
 {
-   return (config_get_stack(c)->top > 7)? 7 : config_get_stack(c)->top; 
-  /* return (stack_nbelem(config_get_stack(c)) > 0)? 1 : 0; */
-}
+config *c = input;
 
-int bh(config *c) /* buffer size */
+   return (config_get_stack((config *) c)->top > 7)? 7 : config_get_stack((config *) c)->top; 
+  /* return (stack_nbelem(config_get_stack((config *) c)) > 0)? 1 : 0; */
+}
+ /* buffer size */
+int bh(void *input)
 {
-  return (config_get_buffer(c)->size > 7)? 7 : config_get_buffer(c)->size;
+config *c = input;
+
+  return (config_get_buffer((config *) c)->size > 7)? 7 : config_get_buffer((config *) c)->size;
 }
 
 #if 0
-int dh(config *c) /* depset size */
+/* depset size */
+int dh(void *c) 
 {
  return (c->ds->length > 7)? 7 : c->ds->length; 
   /* return c->ds->length; */
 }
 #endif
-
-int t1(config *c) /* previous transition */
+/* previous transition */
+int t1(void *c) 
 {
-  mvt *m = mvt_stack_0(config_get_history(c));
+  mvt *m = mvt_stack_0(config_get_history((config *) c));
   return (m == NULL)? -1 : mvt_get_type(m); 
 }
-
-int t2(config *c) /* previous transition */
+/* previous transition */
+int t2(void *c) 
 {
-  mvt *m = mvt_stack_1(config_get_history(c));
+  mvt *m = mvt_stack_1(config_get_history((config *) c));
   return (m == NULL)? -1 : mvt_get_type(m); 
 }
-
-int t3(config *c) /* previous transition */
+/* previous transition */
+int t3(void *c) 
 {
-  mvt *m = mvt_stack_2(config_get_history(c));
+  mvt *m = mvt_stack_2(config_get_history((config *) c));
   return (m == NULL)? -1 : mvt_get_type(m); 
 }
-
-int t4(config *c) /* previous transition */
+/* previous transition */
+int t4(void *c) 
 {
-  mvt *m = mvt_stack_3(config_get_history(c));
+  mvt *m = mvt_stack_3(config_get_history((config *) c));
   return (m == NULL)? -1 : mvt_get_type(m); 
 }
 
 
 
-int mvt0(config *c)
+int mvt0(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   return c->vcode_array[0].class_code;
 }
 
-int mvt1(config *c)
+int mvt1(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   return c->vcode_array[1].class_code;
 }
 
-int delta1(config *c)
+int delta1(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   int delta = (int) (c->vcode_array[0].score - c->vcode_array[1].score); 
   return (delta >= 10)? 10: delta;
 }
 
-int mvt2(config *c)
+int mvt2(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   return c->vcode_array[2].class_code;
 }
 
-int delta2(config *c)
+int delta2(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   int delta = (int) (c->vcode_array[0].score - c->vcode_array[2].score);
   return (delta >= 10)? 10: delta;
 }
 
-int mvt3(config *c)
+int mvt3(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   return c->vcode_array[3].class_code;
 }
 
-int delta3(config *c)
+int delta3(void *input)
 {
+  config *c = input;
   if(c->vcode_array == NULL) return -1;
   int delta = (int) (c->vcode_array[0].score - c->vcode_array[3].score);
   return (delta >= 10)? 10: delta;
 }
+
+feat_lib *feat_lib_build(void)
+{
+  feat_lib *fl = feat_lib_new();
+  
+  feat_lib_add(fl, FEAT_TYPE_LABEL,  (char *)"s0sf", s0sf);
+  feat_lib_add(fl, FEAT_TYPE_INT,    (char *)"s0g", s0g);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s0f", s0f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s0l", s0l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s0c", s0c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s0p", s0p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s0m", s0m);
+  feat_lib_add(fl, FEAT_TYPE_STAG , (char *)"s0s", s0s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s0r", s0r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s0A", s0A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s0B", s0B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s0C", s0C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s0D", s0D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s0E", s0E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s0F", s0F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s0G", s0G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s0H", s0H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s0I", s0I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s0J", s0J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s0K", s0K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s0L", s0L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s0M", s0M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s0N", s0N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s0O", s0O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s0P", s0P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s0Q", s0Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s0R", s0R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s0S", s0S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s0T", s0T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s0U", s0U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s0V", s0V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s0W", s0W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s0X", s0X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s0Y", s0Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s0Z", s0Z);
+  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"s0U1", s0U1);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"s0sgn", s0sgn);
+  
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1g", s1g);
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1sf", s1sf);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1f", s1f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s1l", s1l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s1c", s1c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s1p", s1p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s1m", s1m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s1s", s1s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s1r", s1r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s1A", s1A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s1B", s1B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s1C", s1C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s1D", s1D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s1E", s1E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s1F", s1F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s1G", s1G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s1H", s1H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s1I", s1I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s1J", s1J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s1K", s1K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s1L", s1L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s1M", s1M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s1N", s1N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s1O", s1O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s1P", s1P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s1Q", s1Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s1R", s1R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s1S", s1S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s1T", s1T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s1U", s1U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s1V", s1V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s1W", s1W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s1X", s1X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s1Y", s1Y);
+  feat_lib_add(fl, FEAT_TYPE_Z,     (char *)"s1Z", s1Z);
+  
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s2f", s2f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s2l", s2l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s2c", s2c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s2p", s2p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s2m", s2m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s2s", s2s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s2r", s2r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s2A", s2A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s2B", s2B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s2C", s2C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s2D", s2D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s2E", s2E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s2F", s2F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s2G", s2G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s2H", s2H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s2I", s2I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s2J", s2J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s2K", s2K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s2L", s2L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s2M", s2M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s2N", s2N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s2O", s2O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s2P", s2P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s2Q", s2Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s2R", s2R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s2S", s2S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s2T", s2T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s2U", s2U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s2V", s2V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s2W", s2W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s2X", s2X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s2Y", s2Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s2Z", s2Z);
+  
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s3f", s3f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s3l", s3l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s3c", s3c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s3p", s3p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s3m", s3m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s3s", s3s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s3r", s3r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s3A", s3A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s3B", s3B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s3C", s3C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s3D", s3D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s3E", s3E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s3F", s3F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s3G", s3G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s3H", s3H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s3I", s3I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s3J", s3J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s3K", s3K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s3L", s3L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s3M", s3M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s3N", s3N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s3O", s3O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s3P", s3P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s3Q", s3Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s3R", s3R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s3S", s3S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s3T", s3T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s3U", s3U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s3V", s3V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s3W", s3W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s3X", s3X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s3Y", s3Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s3Z", s3Z);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0g", b0g);
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0sf", b0sf);
+
+  feat_lib_add(fl, FEAT_TYPE_INT,  (char *)"b0len", b0len);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0f", b0f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b0l", b0l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b0c", b0c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b0p", b0p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b0m", b0m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b0s", b0s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b0r", b0r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b0A", b0A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b0B", b0B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b0C", b0C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b0D", b0D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b0E", b0E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b0F", b0F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b0G", b0G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b0H", b0H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b0I", b0I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b0J", b0J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b0K", b0K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b0L", b0L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b0M", b0M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b0N", b0N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b0O", b0O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b0P", b0P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b0Q", b0Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b0R", b0R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b0S", b0S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b0T", b0T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b0U", b0U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b0V", b0V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b0W", b0W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b0X", b0X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b0Y", b0Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b0Z", b0Z);
+  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"b0U1", b0U1);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"b0sgn", b0sgn);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm1f", bm1f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm1l", bm1l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm1c", bm1c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm1p", bm1p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm1m", bm1m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm1s", bm1s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm1r", bm1r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm1A", bm1A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm1B", bm1B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm1C", bm1C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm1D", bm1D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm1E", bm1E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm1F", bm1F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm1G", bm1G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm1H", bm1H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm1I", bm1I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm1J", bm1J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm1K", bm1K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm1L", bm1L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm1M", bm1M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm1N", bm1N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm1O", bm1O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm1P", bm1P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm1Q", bm1Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm1R", bm1R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm1S", bm1S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm1T", bm1T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm1U", bm1U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm1V", bm1V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm1W", bm1W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm1X", bm1X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm1Y", bm1Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm1Z", bm1Z);
+  feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm1U1", bm1U1);
+  feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm1sgn", bm1sgn);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm2f", bm2f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm2l", bm2l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm2c", bm2c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm2p", bm2p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm2m", bm2m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm2s", bm2s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm2r", bm2r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm2A", bm2A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm2B", bm2B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm2C", bm2C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm2D", bm2D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm2E", bm2E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm2F", bm2F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm2G", bm2G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm2H", bm2H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm2I", bm2I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm2J", bm2J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm2K", bm2K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm2L", bm2L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm2M", bm2M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm2N", bm2N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm2O", bm2O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm2P", bm2P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm2Q", bm2Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm2R", bm2R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm2S", bm2S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm2T", bm2T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm2U", bm2U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm2V", bm2V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm2W", bm2W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm2X", bm2X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm2Y", bm2Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm2Z", bm2Z);
+  /* feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm2U1", bm2U1); */
+  /* feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm2sgn", bm2sgn); */
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm3f", bm3f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm3l", bm3l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm3c", bm3c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm3p", bm3p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm3m", bm3m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm3s", bm3s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm3r", bm3r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm3A", bm3A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm3B", bm3B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm3C", bm3C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm3D", bm3D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm3E", bm3E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm3F", bm3F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm3G", bm3G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm3H", bm3H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm3I", bm3I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm3J", bm3J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm3K", bm3K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm3L", bm3L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm3M", bm3M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm3N", bm3N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm3O", bm3O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm3P", bm3P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm3Q", bm3Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm3R", bm3R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm3S", bm3S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm3T", bm3T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm3U", bm3U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm3V", bm3V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm3W", bm3W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm3X", bm3X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm3Y", bm3Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm3Z", bm3Z);
+  /* feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm3U1", bm3U1); */
+  /* feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm3sgn", bm3sgn); */
+  
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b1f", b1f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b1l", b1l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b1c", b1c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b1p", b1p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b1m", b1m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b1s", b1s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b1r", b1r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b1A", b1A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b1B", b1B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b1C", b1C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b1D", b1D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b1E", b1E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b1F", b1F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b1G", b1G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b1H", b1H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b1I", b1I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b1J", b1J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b1K", b1K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b1L", b1L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b1M", b1M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b1N", b1N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b1O", b1O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b1P", b1P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b1Q", b1Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b1R", b1R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b1S", b1S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b1T", b1T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b1U", b1U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b1V", b1V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b1W", b1W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b1X", b1X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b1Y", b1Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b1Z", b1Z);
+  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"b1U1", b1U1);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"b1sgn", b1sgn);
+  
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b2f", b2f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b2l", b2l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b2c", b2c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b2p", b2p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b2m", b2m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b2s", b2s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b2r", b2r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b2A", b2A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b2B", b2B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b2C", b2C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b2D", b2D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b2E", b2E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b2F", b2F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b2G", b2G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b2H", b2H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b2I", b2I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b2J", b2J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b2K", b2K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b2L", b2L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b2M", b2M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b2N", b2N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b2O", b2O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b2P", b2P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b2Q", b2Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b2R", b2R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b2S", b2S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b2T", b2T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b2U", b2U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b2V", b2V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b2W", b2W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b2X", b2X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2Y", b2Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2Z", b2Z);
+
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2U1", b2U1);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2sgn", b2sgn);
+
+  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b3f", b3f);
+  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b3l", b3l);
+  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b3c", b3c);
+  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b3p", b3p);
+  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b3m", b3m);
+  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b3s", b3s);
+  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b3r", b3r); */
+  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b3A", b3A);
+  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b3B", b3B);
+  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b3C", b3C);
+  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b3D", b3D);
+  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b3E", b3E);
+  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b3F", b3F);
+  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b3G", b3G);
+  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b3H", b3H);
+  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b3I", b3I);
+  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b3J", b3J);
+  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b3K", b3K);
+  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b3L", b3L);
+  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b3M", b3M);
+  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b3N", b3N);
+  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b3O", b3O);
+  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b3P", b3P);
+  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b3Q", b3Q);
+  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b3R", b3R);
+  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b3S", b3S);
+  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b3T", b3T);
+  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b3U", b3U);
+  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b3V", b3V);
+  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b3W", b3W);
+  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b3X", b3X);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b3Y", b3Y);
+  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b3Z", b3Z);
+
+  /* feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"gs0l", gs0l); */
+  /* feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"gs0p", gs0p); */
+  
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_s0r", ldep_s0r);
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_s0r", rdep_s0r);
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_s1r", ldep_s1r);
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_s1r", rdep_s1r);
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_b0r", ldep_b0r);
+  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_b0r", rdep_b0r);
+
+  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"ndep_b0", ndep_b0);
+  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"ndep_s0", ndep_s0);
+  
+  /* distance features */
+  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"dist_s0_b0", dist_s0_b0);
+
+/* configurational features */
+
+  feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"sh", sh);
+  feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"bh", bh);
+  /* feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"dh", dh); */
+
+  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t1", t1);
+  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t2", t2);
+  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t3", t3);
+  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t4", t4);
+
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt0", mvt0);
+
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt1", mvt1);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta1", delta1);
+
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt2", mvt2);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta2", delta2);
+
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt3", mvt3);
+  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta3", delta3);
+
+  return fl;
+}
+
diff --git a/maca_trans_parser/src/feat_fct.h b/maca_trans_parser/src/feat_fct.h
index 6d8cca86fbe9df9d6fe7e1e55ec214c1758f5c60..8650e6bf303f20529c7ebd0efb1d91720dc3cdea 100644
--- a/maca_trans_parser/src/feat_fct.h
+++ b/maca_trans_parser/src/feat_fct.h
@@ -1,457 +1,456 @@
 #ifndef __FEATURES__
 #define __FEATURES__
 
-#include"config.h"
+#include "feat_lib.h"
+/* typedef int (*feat_fct) (config *c); */
+/* typedef int (*feat_fct) (void *c); */
 
-typedef int (*feat_fct) (config *c);
+feat_lib *feat_lib_build(void);
 
 /* word features */
-int s0g(config *c);
-int s0sf(config *c);
-
-int s0f(config *c);
-int s0l(config *c);
-int s0c(config *c);
-int s0p(config *c);
-int s0m(config *c);
-int s0s(config *c);
-int s0A(config *c);
-int s0B(config *c);
-int s0C(config *c);
-int s0D(config *c);
-int s0E(config *c);
-int s0F(config *c);
-int s0G(config *c);
-int s0H(config *c);
-int s0I(config *c);
-int s0J(config *c);
-int s0K(config *c);
-int s0L(config *c);
-int s0M(config *c);
-int s0N(config *c);
-int s0O(config *c);
-int s0P(config *c);
-int s0Q(config *c);
-int s0R(config *c);
-int s0S(config *c);
-int s0T(config *c);
-int s0U(config *c);
-int s0V(config *c);
-int s0W(config *c);
-int s0X(config *c);
-int s0Y(config *c);
-int s0Z(config *c);
-
-int s0U1(config *c);
-int s0sgn(config *c);
-
-int s0r(config *c);
-
-int s1g(config *c);
-int s1sf(config *c);
-
-
-int s1f(config *c);
-int s1l(config *c);
-int s1c(config *c);
-int s1p(config *c);
-int s1m(config *c);
-int s1s(config *c);
-int s1A(config *c);
-int s1B(config *c);
-int s1C(config *c);
-int s1D(config *c);
-int s1E(config *c);
-int s1F(config *c);
-int s1G(config *c);
-int s1H(config *c);
-int s1I(config *c);
-int s1J(config *c);
-int s1K(config *c);
-int s1L(config *c);
-int s1M(config *c);
-int s1N(config *c);
-int s1O(config *c);
-int s1P(config *c);
-int s1Q(config *c);
-int s1R(config *c);
-int s1S(config *c);
-int s1T(config *c);
-int s1U(config *c);
-int s1V(config *c);
-int s1W(config *c);
-int s1X(config *c);
-int s1Y(config *c);
-int s1Z(config *c);
-
-int s1r(config *c);
-
-int s2f(config *c);
-int s2l(config *c);
-int s2c(config *c);
-int s2p(config *c);
-int s2m(config *c);
-int s2s(config *c);
-int s2A(config *c);
-int s2B(config *c);
-int s2C(config *c);
-int s2D(config *c);
-int s2E(config *c);
-int s2F(config *c);
-int s2G(config *c);
-int s2H(config *c);
-int s2I(config *c);
-int s2J(config *c);
-int s2K(config *c);
-int s2L(config *c);
-int s2M(config *c);
-int s2N(config *c);
-int s2O(config *c);
-int s2P(config *c);
-int s2Q(config *c);
-int s2R(config *c);
-int s2S(config *c);
-int s2T(config *c);
-int s2U(config *c);
-int s2V(config *c);
-int s2W(config *c);
-int s2X(config *c);
-int s2Y(config *c);
-int s2Z(config *c);
-
-int s2r(config *c);
-
-int s3f(config *c);
-int s3l(config *c);
-int s3c(config *c);
-int s3p(config *c);
-int s3m(config *c);
-int s3s(config *c);
-int s3A(config *c);
-int s3B(config *c);
-int s3C(config *c);
-int s3D(config *c);
-int s3E(config *c);
-int s3F(config *c);
-int s3G(config *c);
-int s3H(config *c);
-int s3I(config *c);
-int s3J(config *c);
-int s3K(config *c);
-int s3L(config *c);
-int s3M(config *c);
-int s3N(config *c);
-int s3O(config *c);
-int s3P(config *c);
-int s3Q(config *c);
-int s3R(config *c);
-int s3S(config *c);
-int s3T(config *c);
-int s3U(config *c);
-int s3V(config *c);
-int s3W(config *c);
-int s3X(config *c);
-int s3Y(config *c);
-int s3Z(config *c);
-int s3r(config *c);
-
-int b0g(config *c);
-int b0sf(config *c);
-int b0len(config *c);
-
-
-int b0f(config *c);
-int b0l(config *c);
-int b0c(config *c);
-int b0p(config *c);
-int b0m(config *c);
-int b0s(config *c);
-int b0A(config *c);
-int b0B(config *c);
-int b0C(config *c);
-int b0D(config *c);
-int b0E(config *c);
-int b0F(config *c);
-int b0G(config *c);
-int b0H(config *c);
-int b0I(config *c);
-int b0J(config *c);
-int b0K(config *c);
-int b0L(config *c);
-int b0M(config *c);
-int b0N(config *c);
-int b0O(config *c);
-int b0P(config *c);
-int b0Q(config *c);
-int b0R(config *c);
-int b0S(config *c);
-int b0T(config *c);
-int b0U(config *c);
-int b0V(config *c);
-int b0W(config *c);
-int b0X(config *c);
-int b0Y(config *c);
-int b0Z(config *c);
-int b0r(config *c);
-
-int b0U1(config *c);
-int b0sgn(config *c);
-
-int b1f(config *c);
-int b1l(config *c);
-int b1c(config *c);
-int b1p(config *c);
-int b1m(config *c);
-int b1s(config *c);
-int b1A(config *c);
-int b1B(config *c);
-int b1C(config *c);
-int b1D(config *c);
-int b1E(config *c);
-int b1F(config *c);
-int b1G(config *c);
-int b1H(config *c);
-int b1I(config *c);
-int b1J(config *c);
-int b1K(config *c);
-int b1L(config *c);
-int b1M(config *c);
-int b1N(config *c);
-int b1O(config *c);
-int b1P(config *c);
-int b1Q(config *c);
-int b1R(config *c);
-int b1S(config *c);
-int b1T(config *c);
-int b1U(config *c);
-int b1V(config *c);
-int b1W(config *c);
-int b1X(config *c);
-int b1Y(config *c);
-int b1Z(config *c);
-
-int b1U1(config *c);
-int b1sgn(config *c);
-
-int b1r(config *c);
-
-
-
-int b2f(config *c);
-int b2l(config *c);
-int b2c(config *c);
-int b2p(config *c);
-int b2m(config *c);
-int b2s(config *c);
-int b2A(config *c);
-int b2B(config *c);
-int b2C(config *c);
-int b2D(config *c);
-int b2E(config *c);
-int b2F(config *c);
-int b2G(config *c);
-int b2H(config *c);
-int b2I(config *c);
-int b2J(config *c);
-int b2K(config *c);
-int b2L(config *c);
-int b2M(config *c);
-int b2N(config *c);
-int b2O(config *c);
-int b2P(config *c);
-int b2Q(config *c);
-int b2R(config *c);
-int b2S(config *c);
-int b2T(config *c);
-int b2U(config *c);
-int b2V(config *c);
-int b2W(config *c);
-int b2X(config *c);
-int b2Y(config *c);
-int b2Z(config *c);
-
-int b2r(config *c);
-
-int b2U1(config *c);
-int b2sgn(config *c);
-
-
-int b3f(config *c);
-int b3l(config *c);
-int b3c(config *c);
-int b3p(config *c);
-int b3m(config *c);
-int b3s(config *c);
-int b3A(config *c);
-int b3B(config *c);
-int b3C(config *c);
-int b3D(config *c);
-int b3E(config *c);
-int b3F(config *c);
-int b3G(config *c);
-int b3H(config *c);
-int b3I(config *c);
-int b3J(config *c);
-int b3K(config *c);
-int b3L(config *c);
-int b3M(config *c);
-int b3N(config *c);
-int b3O(config *c);
-int b3P(config *c);
-int b3Q(config *c);
-int b3R(config *c);
-int b3S(config *c);
-int b3T(config *c);
-int b3U(config *c);
-int b3V(config *c);
-int b3W(config *c);
-int b3X(config *c);
-int b3Y(config *c);
-int b3Z(config *c);
-
-int b3r(config *c);
-
-
-int bm1f(config *c);
-int bm1l(config *c);
-int bm1c(config *c);
-int bm1p(config *c);
-int bm1m(config *c);
-int bm1s(config *c);
-int bm1A(config *c);
-int bm1B(config *c);
-int bm1C(config *c);
-int bm1D(config *c);
-int bm1E(config *c);
-int bm1F(config *c);
-int bm1G(config *c);
-int bm1H(config *c);
-int bm1I(config *c);
-int bm1J(config *c);
-int bm1K(config *c);
-int bm1L(config *c);
-int bm1M(config *c);
-int bm1N(config *c);
-int bm1O(config *c);
-int bm1P(config *c);
-int bm1Q(config *c);
-int bm1R(config *c);
-int bm1S(config *c);
-int bm1T(config *c);
-int bm1U(config *c);
-int bm1V(config *c);
-int bm1W(config *c);
-int bm1X(config *c);
-int bm1Y(config *c);
-int bm1Z(config *c);
-
-int bm1U1(config *c);
-int bm1sgn(config *c);
-
-int bm2f(config *c);
-int bm2l(config *c);
-int bm2c(config *c);
-int bm2p(config *c);
-int bm2m(config *c);
-int bm2s(config *c);
-int bm2A(config *c);
-int bm2B(config *c);
-int bm2C(config *c);
-int bm2D(config *c);
-int bm2E(config *c);
-int bm2F(config *c);
-int bm2G(config *c);
-int bm2H(config *c);
-int bm2I(config *c);
-int bm2J(config *c);
-int bm2K(config *c);
-int bm2L(config *c);
-int bm2M(config *c);
-int bm2N(config *c);
-int bm2O(config *c);
-int bm2P(config *c);
-int bm2Q(config *c);
-int bm2R(config *c);
-int bm2S(config *c);
-int bm2T(config *c);
-int bm2U(config *c);
-int bm2V(config *c);
-int bm2W(config *c);
-int bm2X(config *c);
-int bm2Y(config *c);
-int bm2Z(config *c);
-
-int bm3f(config *c);
-int bm3l(config *c);
-int bm3c(config *c);
-int bm3p(config *c);
-int bm3m(config *c);
-int bm3s(config *c);
-int bm3A(config *c);
-int bm3B(config *c);
-int bm3C(config *c);
-int bm3D(config *c);
-int bm3E(config *c);
-int bm3F(config *c);
-int bm3G(config *c);
-int bm3H(config *c);
-int bm3I(config *c);
-int bm3J(config *c);
-int bm3K(config *c);
-int bm3L(config *c);
-int bm3M(config *c);
-int bm3N(config *c);
-int bm3O(config *c);
-int bm3P(config *c);
-int bm3Q(config *c);
-int bm3R(config *c);
-int bm3S(config *c);
-int bm3T(config *c);
-int bm3U(config *c);
-int bm3V(config *c);
-int bm3W(config *c);
-int bm3X(config *c);
-int bm3Y(config *c);
-int bm3Z(config *c);
+int s0g(void *input);
+int s0sf(void *input);
+
+int s0f(void *input);
+int s0l(void *input);
+int s0c(void *input);
+int s0p(void *input);
+int s0m(void *input);
+int s0s(void *input);
+int s0A(void *input);
+int s0B(void *input);
+int s0C(void *input);
+int s0D(void *input);
+int s0E(void *input);
+int s0F(void *input);
+int s0G(void *input);
+int s0H(void *input);
+int s0I(void *input);
+int s0J(void *input);
+int s0K(void *input);
+int s0L(void *input);
+int s0M(void *input);
+int s0N(void *input);
+int s0O(void *input);
+int s0P(void *input);
+int s0Q(void *input);
+int s0R(void *input);
+int s0S(void *input);
+int s0T(void *input);
+int s0U(void *input);
+int s0V(void *input);
+int s0W(void *input);
+int s0X(void *input);
+int s0Y(void *input);
+int s0Z(void *input);
+
+int s0U1(void *input);
+int s0sgn(void *input);
+
+int s0r(void *input);
+
+int s1g(void *input);
+int s1sf(void *input);
+
+
+int s1f(void *input);
+int s1l(void *input);
+int s1c(void *input);
+int s1p(void *input);
+int s1m(void *input);
+int s1s(void *input);
+int s1A(void *input);
+int s1B(void *input);
+int s1C(void *input);
+int s1D(void *input);
+int s1E(void *input);
+int s1F(void *input);
+int s1G(void *input);
+int s1H(void *input);
+int s1I(void *input);
+int s1J(void *input);
+int s1K(void *input);
+int s1L(void *input);
+int s1M(void *input);
+int s1N(void *input);
+int s1O(void *input);
+int s1P(void *input);
+int s1Q(void *input);
+int s1R(void *input);
+int s1S(void *input);
+int s1T(void *input);
+int s1U(void *input);
+int s1V(void *input);
+int s1W(void *input);
+int s1X(void *input);
+int s1Y(void *input);
+int s1Z(void *input);
+
+int s1r(void *input);
+
+int s2f(void *input);
+int s2l(void *input);
+int s2c(void *input);
+int s2p(void *input);
+int s2m(void *input);
+int s2s(void *input);
+int s2A(void *input);
+int s2B(void *input);
+int s2C(void *input);
+int s2D(void *input);
+int s2E(void *input);
+int s2F(void *input);
+int s2G(void *input);
+int s2H(void *input);
+int s2I(void *input);
+int s2J(void *input);
+int s2K(void *input);
+int s2L(void *input);
+int s2M(void *input);
+int s2N(void *input);
+int s2O(void *input);
+int s2P(void *input);
+int s2Q(void *input);
+int s2R(void *input);
+int s2S(void *input);
+int s2T(void *input);
+int s2U(void *input);
+int s2V(void *input);
+int s2W(void *input);
+int s2X(void *input);
+int s2Y(void *input);
+int s2Z(void *input);
+
+int s2r(void *input);
+
+int s3f(void *input);
+int s3l(void *input);
+int s3c(void *input);
+int s3p(void *input);
+int s3m(void *input);
+int s3s(void *input);
+int s3A(void *input);
+int s3B(void *input);
+int s3C(void *input);
+int s3D(void *input);
+int s3E(void *input);
+int s3F(void *input);
+int s3G(void *input);
+int s3H(void *input);
+int s3I(void *input);
+int s3J(void *input);
+int s3K(void *input);
+int s3L(void *input);
+int s3M(void *input);
+int s3N(void *input);
+int s3O(void *input);
+int s3P(void *input);
+int s3Q(void *input);
+int s3R(void *input);
+int s3S(void *input);
+int s3T(void *input);
+int s3U(void *input);
+int s3V(void *input);
+int s3W(void *input);
+int s3X(void *input);
+int s3Y(void *input);
+int s3Z(void *input);
+int s3r(void *input);
+
+int b0g(void *input);
+int b0sf(void *input);
+int b0len(void *input);
+
+
+int b0f(void *input);
+int b0l(void *input);
+int b0c(void *input);
+int b0p(void *input);
+int b0m(void *input);
+int b0s(void *input);
+int b0A(void *input);
+int b0B(void *input);
+int b0C(void *input);
+int b0D(void *input);
+int b0E(void *input);
+int b0F(void *input);
+int b0G(void *input);
+int b0H(void *input);
+int b0I(void *input);
+int b0J(void *input);
+int b0K(void *input);
+int b0L(void *input);
+int b0M(void *input);
+int b0N(void *input);
+int b0O(void *input);
+int b0P(void *input);
+int b0Q(void *input);
+int b0R(void *input);
+int b0S(void *input);
+int b0T(void *input);
+int b0U(void *input);
+int b0V(void *input);
+int b0W(void *input);
+int b0X(void *input);
+int b0Y(void *input);
+int b0Z(void *input);
+int b0r(void *input);
+
+int b0U1(void *input);
+int b0sgn(void *input);
+
+int b1f(void *input);
+int b1l(void *input);
+int b1c(void *input);
+int b1p(void *input);
+int b1m(void *input);
+int b1s(void *input);
+int b1A(void *input);
+int b1B(void *input);
+int b1C(void *input);
+int b1D(void *input);
+int b1E(void *input);
+int b1F(void *input);
+int b1G(void *input);
+int b1H(void *input);
+int b1I(void *input);
+int b1J(void *input);
+int b1K(void *input);
+int b1L(void *input);
+int b1M(void *input);
+int b1N(void *input);
+int b1O(void *input);
+int b1P(void *input);
+int b1Q(void *input);
+int b1R(void *input);
+int b1S(void *input);
+int b1T(void *input);
+int b1U(void *input);
+int b1V(void *input);
+int b1W(void *input);
+int b1X(void *input);
+int b1Y(void *input);
+int b1Z(void *input);
+
+int b1U1(void *input);
+int b1sgn(void *input);
+
+int b1r(void *input);
+
+
+
+int b2f(void *input);
+int b2l(void *input);
+int b2c(void *input);
+int b2p(void *input);
+int b2m(void *input);
+int b2s(void *input);
+int b2A(void *input);
+int b2B(void *input);
+int b2C(void *input);
+int b2D(void *input);
+int b2E(void *input);
+int b2F(void *input);
+int b2G(void *input);
+int b2H(void *input);
+int b2I(void *input);
+int b2J(void *input);
+int b2K(void *input);
+int b2L(void *input);
+int b2M(void *input);
+int b2N(void *input);
+int b2O(void *input);
+int b2P(void *input);
+int b2Q(void *input);
+int b2R(void *input);
+int b2S(void *input);
+int b2T(void *input);
+int b2U(void *input);
+int b2V(void *input);
+int b2W(void *input);
+int b2X(void *input);
+int b2Y(void *input);
+int b2Z(void *input);
+
+int b2r(void *input);
+
+int b2U1(void *input);
+int b2sgn(void *input);
+
+
+int b3f(void *input);
+int b3l(void *input);
+int b3c(void *input);
+int b3p(void *input);
+int b3m(void *input);
+int b3s(void *input);
+int b3A(void *input);
+int b3B(void *input);
+int b3C(void *input);
+int b3D(void *input);
+int b3E(void *input);
+int b3F(void *input);
+int b3G(void *input);
+int b3H(void *input);
+int b3I(void *input);
+int b3J(void *input);
+int b3K(void *input);
+int b3L(void *input);
+int b3M(void *input);
+int b3N(void *input);
+int b3O(void *input);
+int b3P(void *input);
+int b3Q(void *input);
+int b3R(void *input);
+int b3S(void *input);
+int b3T(void *input);
+int b3U(void *input);
+int b3V(void *input);
+int b3W(void *input);
+int b3X(void *input);
+int b3Y(void *input);
+int b3Z(void *input);
+
+int b3r(void *input);
+
+
+int bm1f(void *input);
+int bm1l(void *input);
+int bm1c(void *input);
+int bm1p(void *input);
+int bm1m(void *input);
+int bm1s(void *input);
+int bm1A(void *input);
+int bm1B(void *input);
+int bm1C(void *input);
+int bm1D(void *input);
+int bm1E(void *input);
+int bm1F(void *input);
+int bm1G(void *input);
+int bm1H(void *input);
+int bm1I(void *input);
+int bm1J(void *input);
+int bm1K(void *input);
+int bm1L(void *input);
+int bm1M(void *input);
+int bm1N(void *input);
+int bm1O(void *input);
+int bm1P(void *input);
+int bm1Q(void *input);
+int bm1R(void *input);
+int bm1S(void *input);
+int bm1T(void *input);
+int bm1U(void *input);
+int bm1V(void *input);
+int bm1W(void *input);
+int bm1X(void *input);
+int bm1Y(void *input);
+int bm1Z(void *input);
+
+int bm1U1(void *input);
+int bm1sgn(void *input);
+
+int bm2f(void *input);
+int bm2l(void *input);
+int bm2c(void *input);
+int bm2p(void *input);
+int bm2m(void *input);
+int bm2s(void *input);
+int bm2A(void *input);
+int bm2B(void *input);
+int bm2C(void *input);
+int bm2D(void *input);
+int bm2E(void *input);
+int bm2F(void *input);
+int bm2G(void *input);
+int bm2H(void *input);
+int bm2I(void *input);
+int bm2J(void *input);
+int bm2K(void *input);
+int bm2L(void *input);
+int bm2M(void *input);
+int bm2N(void *input);
+int bm2O(void *input);
+int bm2P(void *input);
+int bm2Q(void *input);
+int bm2R(void *input);
+int bm2S(void *input);
+int bm2T(void *input);
+int bm2U(void *input);
+int bm2V(void *input);
+int bm2W(void *input);
+int bm2X(void *input);
+int bm2Y(void *input);
+int bm2Z(void *input);
+
+int bm3f(void *input);
+int bm3l(void *input);
+int bm3c(void *input);
+int bm3p(void *input);
+int bm3m(void *input);
+int bm3s(void *input);
+int bm3A(void *input);
+int bm3B(void *input);
+int bm3C(void *input);
+int bm3D(void *input);
+int bm3E(void *input);
+int bm3F(void *input);
+int bm3G(void *input);
+int bm3H(void *input);
+int bm3I(void *input);
+int bm3J(void *input);
+int bm3K(void *input);
+int bm3L(void *input);
+int bm3M(void *input);
+int bm3N(void *input);
+int bm3O(void *input);
+int bm3P(void *input);
+int bm3Q(void *input);
+int bm3R(void *input);
+int bm3S(void *input);
+int bm3T(void *input);
+int bm3U(void *input);
+int bm3V(void *input);
+int bm3W(void *input);
+int bm3X(void *input);
+int bm3Y(void *input);
+int bm3Z(void *input);
 
 /* structural features */
 
-int gs0l(config *c);
-int gs0p(config *c);
+int gs0l(void *input);
+int gs0p(void *input);
 
-int ldep_s0r(config *c);
-int rdep_s0r(config *c);
-int ldep_s1r(config *c);
-int rdep_s1r(config *c);
-int ndep_b0(config *c);
-int ndep_s0(config *c);
-int ldep_b0r(config *c);
-int rdep_b0r(config *c);
+int ldep_s0r(void *input);
+int rdep_s0r(void *input);
+int ldep_s1r(void *input);
+int rdep_s1r(void *input);
+int ndep_b0(void *input);
+int ndep_s0(void *input);
+int ldep_b0r(void *input);
+int rdep_b0r(void *input);
 
 /* distance features */
 
-int dist_s0_b0(config *c);
+int dist_s0_b0(void *input);
 
 /* configurational features */
 
-int sh(config *c);
-int bh(config *c);
-/* int dh(config *c); */
-
-int t1(config *c);
-int t2(config *c);
-int t3(config *c);
-int t4(config *c);
-
-
-
-
-int mvt0(config *c);
-int mvt1(config *c);
-int delta1(config *c);
-int mvt2(config *c);
-int delta2(config *c);
-int mvt3(config *c);
-int delta3(config *c);
+int sh(void *input);
+int bh(void *input);
+/* int dh(void *input); */
+
+int t1(void *input);
+int t2(void *input);
+int t3(void *input);
+int t4(void *input);
+
+int mvt0(void *input);
+int mvt1(void *input);
+int delta1(void *input);
+int mvt2(void *input);
+int delta2(void *input);
+int mvt3(void *input);
+int delta3(void *input);
 
 #endif
diff --git a/maca_trans_parser/src/feat_lib.c b/maca_trans_parser/src/feat_lib.c
deleted file mode 100644
index 50da18f19028c829fe044b7ba51df7560bf1b582..0000000000000000000000000000000000000000
--- a/maca_trans_parser/src/feat_lib.c
+++ /dev/null
@@ -1,487 +0,0 @@
-#include "feat_lib.h"
-#include "feat_types.h"
-#include "feat_fct.h"
-
-void feat_lib_add(feat_lib *fl, int feature_type, char *feature_name, feat_fct feature_fct)
-{
-  int feature_nb = dico_add(fl->d_features, feature_name); 
-  fl->array = (simple_feat_desc **)realloc(fl->array, (feature_nb + 1) * sizeof(simple_feat_desc *));
-  fl->array[feature_nb] = simple_feat_desc_new(feature_name, feature_type, feature_fct);
-  fl->nbelem = feature_nb+1;
-}
-
-simple_feat_desc *feat_lib_get_simple_feat_desc(feat_lib *fl, char *feat_name)
-{
-  int index = dico_string2int(fl->d_features, feat_name);
-  if(index == -1){
-    fprintf(stderr, "features function %s unknown\n", feat_name);
-    return NULL;
-  }
-  return fl->array[index];
-}
-
-feat_lib *feat_lib_new(void)
-{
-  feat_lib *fl = (feat_lib *)memalloc(sizeof(feat_lib));
-  fl->nbelem = 0;
-  fl->d_features = dico_new(NULL, 100);
-  fl->array = NULL;
-  return fl;
-}
-
-void feat_lib_free(feat_lib *fl) {
-
-    for(int i=0; i < fl->nbelem; ++i) {
-	simple_feat_desc_free(fl->array[i]);
-    }
-    dico_free(fl->d_features);
-    free(fl->array);
-    free(fl); // ne devrait pas etre en commentaire
-
-}
-
-feat_lib *feat_lib_build(void)
-{
-  feat_lib *fl = feat_lib_new();
-  
-  feat_lib_add(fl, FEAT_TYPE_LABEL,  (char *)"s0sf", s0sf);
-  feat_lib_add(fl, FEAT_TYPE_INT,    (char *)"s0g", s0g);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s0f", s0f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s0l", s0l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s0c", s0c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s0p", s0p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s0m", s0m);
-  feat_lib_add(fl, FEAT_TYPE_STAG , (char *)"s0s", s0s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s0r", s0r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s0A", s0A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s0B", s0B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s0C", s0C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s0D", s0D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s0E", s0E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s0F", s0F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s0G", s0G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s0H", s0H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s0I", s0I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s0J", s0J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s0K", s0K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s0L", s0L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s0M", s0M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s0N", s0N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s0O", s0O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s0P", s0P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s0Q", s0Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s0R", s0R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s0S", s0S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s0T", s0T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s0U", s0U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s0V", s0V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s0W", s0W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s0X", s0X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s0Y", s0Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s0Z", s0Z);
-  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"s0U1", s0U1);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"s0sgn", s0sgn);
-  
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1g", s1g);
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1sf", s1sf);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s1f", s1f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s1l", s1l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s1c", s1c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s1p", s1p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s1m", s1m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s1s", s1s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s1r", s1r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s1A", s1A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s1B", s1B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s1C", s1C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s1D", s1D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s1E", s1E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s1F", s1F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s1G", s1G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s1H", s1H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s1I", s1I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s1J", s1J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s1K", s1K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s1L", s1L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s1M", s1M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s1N", s1N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s1O", s1O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s1P", s1P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s1Q", s1Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s1R", s1R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s1S", s1S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s1T", s1T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s1U", s1U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s1V", s1V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s1W", s1W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s1X", s1X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s1Y", s1Y);
-  feat_lib_add(fl, FEAT_TYPE_Z,     (char *)"s1Z", s1Z);
-  
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s2f", s2f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s2l", s2l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s2c", s2c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s2p", s2p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s2m", s2m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s2s", s2s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s2r", s2r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s2A", s2A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s2B", s2B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s2C", s2C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s2D", s2D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s2E", s2E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s2F", s2F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s2G", s2G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s2H", s2H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s2I", s2I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s2J", s2J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s2K", s2K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s2L", s2L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s2M", s2M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s2N", s2N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s2O", s2O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s2P", s2P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s2Q", s2Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s2R", s2R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s2S", s2S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s2T", s2T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s2U", s2U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s2V", s2V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s2W", s2W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s2X", s2X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s2Y", s2Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s2Z", s2Z);
-  
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"s3f", s3f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"s3l", s3l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"s3c", s3c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"s3p", s3p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"s3m", s3m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"s3s", s3s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"s3r", s3r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"s3A", s3A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"s3B", s3B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"s3C", s3C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"s3D", s3D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"s3E", s3E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"s3F", s3F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"s3G", s3G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"s3H", s3H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"s3I", s3I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"s3J", s3J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"s3K", s3K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"s3L", s3L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"s3M", s3M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"s3N", s3N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"s3O", s3O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"s3P", s3P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"s3Q", s3Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"s3R", s3R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"s3S", s3S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"s3T", s3T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"s3U", s3U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"s3V", s3V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"s3W", s3W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"s3X", s3X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s3Y", s3Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"s3Z", s3Z);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0g", b0g);
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0sf", b0sf);
-
-  feat_lib_add(fl, FEAT_TYPE_INT,  (char *)"b0len", b0len);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b0f", b0f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b0l", b0l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b0c", b0c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b0p", b0p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b0m", b0m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b0s", b0s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b0r", b0r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b0A", b0A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b0B", b0B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b0C", b0C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b0D", b0D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b0E", b0E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b0F", b0F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b0G", b0G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b0H", b0H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b0I", b0I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b0J", b0J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b0K", b0K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b0L", b0L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b0M", b0M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b0N", b0N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b0O", b0O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b0P", b0P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b0Q", b0Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b0R", b0R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b0S", b0S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b0T", b0T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b0U", b0U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b0V", b0V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b0W", b0W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b0X", b0X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b0Y", b0Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b0Z", b0Z);
-  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"b0U1", b0U1);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"b0sgn", b0sgn);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm1f", bm1f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm1l", bm1l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm1c", bm1c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm1p", bm1p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm1m", bm1m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm1s", bm1s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm1r", bm1r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm1A", bm1A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm1B", bm1B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm1C", bm1C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm1D", bm1D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm1E", bm1E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm1F", bm1F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm1G", bm1G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm1H", bm1H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm1I", bm1I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm1J", bm1J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm1K", bm1K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm1L", bm1L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm1M", bm1M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm1N", bm1N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm1O", bm1O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm1P", bm1P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm1Q", bm1Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm1R", bm1R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm1S", bm1S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm1T", bm1T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm1U", bm1U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm1V", bm1V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm1W", bm1W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm1X", bm1X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm1Y", bm1Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm1Z", bm1Z);
-  feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm1U1", bm1U1);
-  feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm1sgn", bm1sgn);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm2f", bm2f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm2l", bm2l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm2c", bm2c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm2p", bm2p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm2m", bm2m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm2s", bm2s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm2r", bm2r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm2A", bm2A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm2B", bm2B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm2C", bm2C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm2D", bm2D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm2E", bm2E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm2F", bm2F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm2G", bm2G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm2H", bm2H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm2I", bm2I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm2J", bm2J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm2K", bm2K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm2L", bm2L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm2M", bm2M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm2N", bm2N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm2O", bm2O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm2P", bm2P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm2Q", bm2Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm2R", bm2R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm2S", bm2S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm2T", bm2T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm2U", bm2U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm2V", bm2V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm2W", bm2W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm2X", bm2X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm2Y", bm2Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm2Z", bm2Z);
-  /* feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm2U1", bm2U1); */
-  /* feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm2sgn", bm2sgn); */
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"bm3f", bm3f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"bm3l", bm3l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"bm3c", bm3c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"bm3p", bm3p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"bm3m", bm3m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"bm3s", bm3s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"bm3r", bm3r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"bm3A", bm3A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"bm3B", bm3B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"bm3C", bm3C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"bm3D", bm3D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"bm3E", bm3E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"bm3F", bm3F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"bm3G", bm3G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"bm3H", bm3H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"bm3I", bm3I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"bm3J", bm3J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"bm3K", bm3K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"bm3L", bm3L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"bm3M", bm3M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"bm3N", bm3N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"bm3O", bm3O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"bm3P", bm3P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"bm3Q", bm3Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"bm3R", bm3R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"bm3S", bm3S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"bm3T", bm3T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"bm3U", bm3U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"bm3V", bm3V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"bm3W", bm3W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"bm3X", bm3X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm3Y", bm3Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"bm3Z", bm3Z);
-  /* feat_lib_add(fl, FEAT_TYPE_INT_3,     (char *)"bm3U1", bm3U1); */
-  /* feat_lib_add(fl, FEAT_TYPE_INT,     (char *)"bm3sgn", bm3sgn); */
-  
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b1f", b1f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b1l", b1l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b1c", b1c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b1p", b1p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b1m", b1m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b1s", b1s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b1r", b1r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b1A", b1A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b1B", b1B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b1C", b1C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b1D", b1D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b1E", b1E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b1F", b1F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b1G", b1G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b1H", b1H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b1I", b1I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b1J", b1J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b1K", b1K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b1L", b1L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b1M", b1M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b1N", b1N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b1O", b1O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b1P", b1P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b1Q", b1Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b1R", b1R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b1S", b1S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b1T", b1T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b1U", b1U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b1V", b1V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b1W", b1W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b1X", b1X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b1Y", b1Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b1Z", b1Z);
-  feat_lib_add(fl, FEAT_TYPE_INT_3, (char *)"b1U1", b1U1);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"b1sgn", b1sgn);
-  
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b2f", b2f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b2l", b2l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b2c", b2c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b2p", b2p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b2m", b2m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b2s", b2s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b2r", b2r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b2A", b2A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b2B", b2B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b2C", b2C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b2D", b2D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b2E", b2E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b2F", b2F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b2G", b2G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b2H", b2H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b2I", b2I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b2J", b2J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b2K", b2K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b2L", b2L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b2M", b2M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b2N", b2N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b2O", b2O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b2P", b2P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b2Q", b2Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b2R", b2R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b2S", b2S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b2T", b2T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b2U", b2U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b2V", b2V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b2W", b2W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b2X", b2X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2Y", b2Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2Z", b2Z);
-
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2U1", b2U1);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b2sgn", b2sgn);
-
-  feat_lib_add(fl, FEAT_TYPE_FORM,  (char *)"b3f", b3f);
-  feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"b3l", b3l);
-  feat_lib_add(fl, FEAT_TYPE_CPOS,  (char *)"b3c", b3c);
-  feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"b3p", b3p);
-  feat_lib_add(fl, FEAT_TYPE_FEATS, (char *)"b3m", b3m);
-  feat_lib_add(fl, FEAT_TYPE_STAG,  (char *)"b3s", b3s);
-  /* feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"b3r", b3r); */
-  feat_lib_add(fl, FEAT_TYPE_A,     (char *)"b3A", b3A);
-  feat_lib_add(fl, FEAT_TYPE_B,     (char *)"b3B", b3B);
-  feat_lib_add(fl, FEAT_TYPE_C,     (char *)"b3C", b3C);
-  feat_lib_add(fl, FEAT_TYPE_D,     (char *)"b3D", b3D);
-  feat_lib_add(fl, FEAT_TYPE_E,     (char *)"b3E", b3E);
-  feat_lib_add(fl, FEAT_TYPE_F,     (char *)"b3F", b3F);
-  feat_lib_add(fl, FEAT_TYPE_G,     (char *)"b3G", b3G);
-  feat_lib_add(fl, FEAT_TYPE_H,     (char *)"b3H", b3H);
-  feat_lib_add(fl, FEAT_TYPE_I,     (char *)"b3I", b3I);
-  feat_lib_add(fl, FEAT_TYPE_J,     (char *)"b3J", b3J);
-  feat_lib_add(fl, FEAT_TYPE_K,     (char *)"b3K", b3K);
-  feat_lib_add(fl, FEAT_TYPE_L,     (char *)"b3L", b3L);
-  feat_lib_add(fl, FEAT_TYPE_M,     (char *)"b3M", b3M);
-  feat_lib_add(fl, FEAT_TYPE_N,     (char *)"b3N", b3N);
-  feat_lib_add(fl, FEAT_TYPE_O,     (char *)"b3O", b3O);
-  feat_lib_add(fl, FEAT_TYPE_P,     (char *)"b3P", b3P);
-  feat_lib_add(fl, FEAT_TYPE_Q,     (char *)"b3Q", b3Q);
-  feat_lib_add(fl, FEAT_TYPE_R,     (char *)"b3R", b3R);
-  feat_lib_add(fl, FEAT_TYPE_S,     (char *)"b3S", b3S);
-  feat_lib_add(fl, FEAT_TYPE_T,     (char *)"b3T", b3T);
-  feat_lib_add(fl, FEAT_TYPE_U,     (char *)"b3U", b3U);
-  feat_lib_add(fl, FEAT_TYPE_V,     (char *)"b3V", b3V);
-  feat_lib_add(fl, FEAT_TYPE_W,     (char *)"b3W", b3W);
-  feat_lib_add(fl, FEAT_TYPE_X,     (char *)"b3X", b3X);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b3Y", b3Y);
-  feat_lib_add(fl, FEAT_TYPE_Y,     (char *)"b3Z", b3Z);
-
-  /* feat_lib_add(fl, FEAT_TYPE_LEMMA, (char *)"gs0l", gs0l); */
-  /* feat_lib_add(fl, FEAT_TYPE_POS,   (char *)"gs0p", gs0p); */
-  
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_s0r", ldep_s0r);
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_s0r", rdep_s0r);
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_s1r", ldep_s1r);
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_s1r", rdep_s1r);
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"ldep_b0r", ldep_b0r);
-  feat_lib_add(fl, FEAT_TYPE_LABEL, (char *)"rdep_b0r", rdep_b0r);
-
-  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"ndep_b0", ndep_b0);
-  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"ndep_s0", ndep_s0);
-  
-  /* distance features */
-  feat_lib_add(fl, FEAT_TYPE_INT_7, (char *)"dist_s0_b0", dist_s0_b0);
-
-/* configurational features */
-
-  feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"sh", sh);
-  feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"bh", bh);
-  /* feat_lib_add(fl, FEAT_TYPE_INT_8, (char *)"dh", dh); */
-
-  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t1", t1);
-  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t2", t2);
-  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t3", t3);
-  feat_lib_add(fl, FEAT_TYPE_TRANS, (char *)"t4", t4);
-
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt0", mvt0);
-
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt1", mvt1);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta1", delta1);
-
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt2", mvt2);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta2", delta2);
-
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"mvt3", mvt3);
-  feat_lib_add(fl, FEAT_TYPE_INT,   (char *)"delta3", delta3);
-
-  return fl;
-}
-
diff --git a/maca_trans_parser/src/feat_lib.h b/maca_trans_parser/src/feat_lib.h
deleted file mode 100644
index b0af82298b2c1bf84be57da60a6d8bc9c5cf4f32..0000000000000000000000000000000000000000
--- a/maca_trans_parser/src/feat_lib.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __FEAT_LIB__
-#define __FEAT_LIB__
-
-#include "config.h"
-#include "features.h"
-#include "feat_desc.h"
-#include "dico.h"
-
-typedef struct {
-  int nbelem;
-  dico *d_features;
-  simple_feat_desc **array;
-} feat_lib;
-
-feat_lib *feat_lib_new(void);
-void feat_lib_add(feat_lib *fl, int feature_type, char *feature_name, feat_fct feature_fct);
-simple_feat_desc *feat_lib_get_simple_feat_desc(feat_lib *fl, char *feat_name);
-feat_lib *feat_lib_build(void);
-void feat_lib_free(feat_lib *fl);
-#endif
diff --git a/maca_trans_parser/src/feat_model.h b/maca_trans_parser/src/feat_model.h
deleted file mode 100644
index 6737331e2aa518f7787a11d20110f776f82f7ad1..0000000000000000000000000000000000000000
--- a/maca_trans_parser/src/feat_model.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __FEAT_MODEL__
-#define __FEAT_MODEL__
-
-#include "feat_desc.h"
-#include "feat_lib.h"
-
-typedef struct {
-  char string[2048];
-  char *name;
-  int nbelem;
-  feat_desc **array;
-  int dim;
-  feat_lib *fl; // stores all simple features 
-} feat_model;
-
-#include "config.h"
-#include "dico.h"
-#include "mcd.h"
-
-
-
-void feat_model_free(feat_model *fm);
-feat_model *feat_model_new(char *name);
-void feat_model_print(FILE *f, feat_model *fm);
-feat_desc *feat_model_add(feat_model *fm, feat_desc *fd);
-int feat_model_get_feat_value_fann(feat_model *fm, config *c, int feat_nb);
-int feat_model_get_feat_value_cff(feat_model *fm, config *c, dico *dico_features, int feat_nb, int mode);
-feat_model *feat_model_read(char *filename, int verbose);
-void feat_model_compute_ranges(feat_model *fm, mcd *m, int mvt_nb);
-int feat_model_get_type_feat_n(feat_model *fm, int n);
-
-#endif
diff --git a/maca_trans_parser/src/maca_trans_lemmatizer.c b/maca_trans_parser/src/maca_trans_lemmatizer.c
index 1044ddad92280eae381b9a806357fc1508f78a02..351305c873ab062f8990aeb0c6a25f04d785655e 100644
--- a/maca_trans_parser/src/maca_trans_lemmatizer.c
+++ b/maca_trans_parser/src/maca_trans_lemmatizer.c
@@ -7,6 +7,7 @@
 
 #include"context.h"
 #include"dico.h"
+#include"config.h"
 
 void maca_lemmatizer_help_message(context *ctx)
 {
diff --git a/maca_trans_parser/src/maca_trans_parser.c b/maca_trans_parser/src/maca_trans_parser.c
index fa44e9b51c6be52cb019d0ca4abde650c649cd67..390ac1c49391e76e25511d9ec81e76173fbc2ff3 100644
--- a/maca_trans_parser/src/maca_trans_parser.c
+++ b/maca_trans_parser/src/maca_trans_parser.c
@@ -87,7 +87,7 @@ int main(int argc, char *argv[])
   maca_trans_parser_check_options(ctx);
 
   set_linguistic_resources_filenames_parser(ctx);
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
 
   mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose);
diff --git a/maca_trans_parser/src/maca_trans_parser_arc_eager_mcf2cff.c b/maca_trans_parser/src/maca_trans_parser_arc_eager_mcf2cff.c
index dfca5e53f46d2a8674047e7c1685c81062c87d1f..eeb228824e1275480e4e749b8699ed3800c74a79 100644
--- a/maca_trans_parser/src/maca_trans_parser_arc_eager_mcf2cff.c
+++ b/maca_trans_parser/src/maca_trans_parser_arc_eager_mcf2cff.c
@@ -127,7 +127,7 @@ int main(int argc, char *argv[])
   ctx = context_read_options(argc, argv);
   maca_trans_parser_mcf2cff_check_options(ctx);
 
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   
   if(ctx->mode == TRAIN_MODE){
     mcd_extract_dico_from_corpus(ctx->mcd_struct, ctx->input_filename);
diff --git a/maca_trans_parser/src/maca_trans_tagger.c b/maca_trans_parser/src/maca_trans_tagger.c
index 0bec1311ee5d70b0749ae260a9f80d83d46bf8fb..e9ad38d5e1fcdf194da8bcbad92872a16b44530b 100644
--- a/maca_trans_parser/src/maca_trans_tagger.c
+++ b/maca_trans_parser/src/maca_trans_tagger.c
@@ -91,7 +91,7 @@ int main(int argc, char *argv[])
   decode_tagger_check_options(ctx);
 
   decode_tagger_set_linguistic_resources_filenames(ctx);
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
   mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose);
 
diff --git a/maca_trans_parser/src/maca_trans_tagger_bt.c b/maca_trans_parser/src/maca_trans_tagger_bt.c
index 778c634e64bdd04fa5d2ecd8442ea768a8423e0b..1f3318e9d2306bff31edbee3d003bc44bca8fd4a 100644
--- a/maca_trans_parser/src/maca_trans_tagger_bt.c
+++ b/maca_trans_parser/src/maca_trans_tagger_bt.c
@@ -91,7 +91,7 @@ int main(int argc, char *argv[])
   decode_tagger_check_options(ctx);
 
   decode_tagger_set_linguistic_resources_filenames(ctx);
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
   mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose);
 
diff --git a/maca_trans_parser/src/maca_trans_tagger_mcf2cff.c b/maca_trans_parser/src/maca_trans_tagger_mcf2cff.c
index 916863ba90807f16dc82b52cc9e6a183393b8e1a..f6c966c6abd824d68fd82397ff7af136e9f70993 100644
--- a/maca_trans_parser/src/maca_trans_tagger_mcf2cff.c
+++ b/maca_trans_parser/src/maca_trans_tagger_mcf2cff.c
@@ -116,7 +116,7 @@ int main(int argc, char *argv[])
   ctx = context_read_options(argc, argv);
   maca_trans_parser_mcf2cff_check_options(ctx);
   
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
 
 
   if(ctx->mode == TRAIN_MODE){
diff --git a/maca_trans_parser/src/maca_trans_tagparser.c b/maca_trans_parser/src/maca_trans_tagparser.c
index 608eea94e320da33d596966ead44950d07fb43d8..dc325dd3d9994212a2dfb0d5f18e875a1090fbf4 100644
--- a/maca_trans_parser/src/maca_trans_tagparser.c
+++ b/maca_trans_parser/src/maca_trans_tagparser.c
@@ -91,7 +91,7 @@ int main(int argc, char *argv[])
   decode_check_options(ctx);
 
   set_linguistic_resources_filenames_tagparser(ctx);
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio);
 
   /* dico_vec_print(NULL, ctx->vocabs); */
diff --git a/maca_trans_parser/src/maca_trans_tagparser_arc_eager_mcf2cff.c b/maca_trans_parser/src/maca_trans_tagparser_arc_eager_mcf2cff.c
index cf95405eefd6c91fc3b3392164eb7f76c16feabf..ef78339a7f5b55edf273e2332e11d0a0d1205eed 100644
--- a/maca_trans_parser/src/maca_trans_tagparser_arc_eager_mcf2cff.c
+++ b/maca_trans_parser/src/maca_trans_tagparser_arc_eager_mcf2cff.c
@@ -152,7 +152,7 @@ int main(int argc, char *argv[])
   ctx = context_read_options(argc, argv);
   maca_trans_parser_mcf2cff_check_options(ctx);
 
-  ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose);
+  ctx->features_model = feat_model_read(ctx->features_model_filename, feat_lib_build(), ctx->verbose);
   
   if(ctx->mode == TRAIN_MODE){
     mcd_extract_dico_from_corpus(ctx->mcd_struct, ctx->input_filename);