diff --git a/maca_common/include/feat_desc.h b/maca_common/include/feat_desc.h
index 62dd7c9725e112c81edf8872074b61915d3bb212..ff5dc467fa1380bdb7950d7b11d46a4711b93f8f 100644
--- a/maca_common/include/feat_desc.h
+++ b/maca_common/include/feat_desc.h
@@ -1,6 +1,14 @@
 #ifndef __FEAT_DESC__
 #define __FEAT_DESC__
 
+#include "char16.h"/*
+typedef struct
+{
+	char* form;
+	char* pos;
+}FP;
+
+typedef int (*feat_fct) (FP *c);*/
 typedef int (*feat_fct) (void *c);
 
 typedef struct {
diff --git a/maca_morpho/CMakeLists.txt b/maca_morpho/CMakeLists.txt
index 593b4edd7f7bf512cef3d0d65062b9090938b52f..cadc7d6065747b4ca1a42551ac57833993f071cb 100644
--- a/maca_morpho/CMakeLists.txt
+++ b/maca_morpho/CMakeLists.txt
@@ -5,6 +5,7 @@ set(SOURCES
   src/fplm2cff_fct.c
   src/predict_fct.c
   src/fplm_fct.c
+  ../maca_common/src/char16.c
 )
 
 
diff --git a/maca_morpho/src/fplm2cff_fct.c b/maca_morpho/src/fplm2cff_fct.c
index 7417a745a0976d705c7402029139310201040379..e17d0bdacec15b3aac1448736164671022e41e7a 100644
--- a/maca_morpho/src/fplm2cff_fct.c
+++ b/maca_morpho/src/fplm2cff_fct.c
@@ -85,20 +85,20 @@ void write_cff(FILE *cff, CLASS class, FILE* code_class, char* form, char* morph
 		feat_vec_print(cff, fv);
 		return;
 	}
-	if(class == TENSE)
+	/*if(class == TENSE)
 	{
 		fprintf(cff,"%d", associate_number_to_classes(code_class,class,morpho_feature,0));
 		form2fv(form, fv, fm, dico_features, ADD_MODE); 
 		feat_vec_print(cff, fv);		
 	}
 	else
-	{
+	{*/
 		for(i=0; i<(int)strlen(morpho_feature);i++)
 		{
 			fprintf(cff,"%d", associate_number_to_classes(code_class,class,morpho_feature,i));
 			form2fv(form, fv, fm, dico_features, ADD_MODE); 
 			feat_vec_print(cff, fv);		
 		}
-	}
+	//}
 
 }
diff --git a/maca_morpho/src/fplm_fct.c b/maca_morpho/src/fplm_fct.c
index dce8bfdee1e8bec9e642d95c220165109e49246f..b74ca14c166a6086ff3e9271a139a1297ce8e14a 100644
--- a/maca_morpho/src/fplm_fct.c
+++ b/maca_morpho/src/fplm_fct.c
@@ -99,20 +99,20 @@ int associate_number_to_classes(FILE* classes_code, CLASS class, char* morpho_fe
 	fscanf(classes_code,"%s",tmp);
 	while(fscanf(classes_code,"%d %s\n",&code,tmp) == 2)
 	{
-		if(class == TENSE)
+		/*if(class == TENSE)
 		{
 			if(!strcmp(tmp, morpho_feature))
 				return code;
 		}
 		else
-		{
+		{*/
 			if(tmp[0] == morpho_feature[current_morpho_feature])
 				return code;	
-		}
+		//}
 	}
-	if(class == TENSE)
-		fprintf(classes_code, "%d %s\n", code+1, morpho_feature);
-	else
+	//if(class == TENSE)
+		//fprintf(classes_code, "%d %s\n", code+1, morpho_feature);
+	//else
 		fprintf(classes_code, "%d %c\n", code+1, morpho_feature[current_morpho_feature]);
 	return code+1;
 }
diff --git a/maca_morpho/src/maca_morpho_feat_fct.c b/maca_morpho/src/maca_morpho_feat_fct.c
index 056f9570473884a11c72151a2e8091350574ca5f..b9a33ea8ee68d1bb6e30fd35dd54c8f45f101c0b 100644
--- a/maca_morpho/src/maca_morpho_feat_fct.c
+++ b/maca_morpho/src/maca_morpho_feat_fct.c
@@ -2,83 +2,119 @@
 #include <stdlib.h>
 #include <string.h>
 #include "feat_lib.h"
-
+#include "char16.h"
+/*
+char* type[22] = {"np","adj","nc","adv","prep","poncts","csu","v","vprespart","vppart",
+				"vinf","pres","ponctw","clr","det","coo","cln","pro","pri","prorel","clo","advneg"};		
+int find_type(char* pos)
+{
+	int i;
+	for(i=0;i<22;i++)
+		if(!strcmp(pos,type[i]))
+			return i;
+	return -1;
+}*/
 /*patterns feature*/
-int p1(void *input)
+int s1(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 1 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 1 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 1];
+	return tmp[size - 1];
 }
-int p2(void *input)
+int s2(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 2 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 2 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 2];
+	return tmp[size - 2];
 }
-int p3(void *input)
+int s3(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 3 < 0)
-		return -1;	
-	return ((char *)input)[(int)strlen((char *)input) - 3];
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 3 < 0)
+		return -1;
+	return tmp[size - 3];
 }
-int p4(void *input)
+int s4(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 4 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 4 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 4];
+	return tmp[size - 4];
 }
-int p5(void *input)
+int s5(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 5 < 0)
-		return -1;	
-	return ((char *)input)[(int)strlen((char *)input) - 5];
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 5 < 0)
+		return -1;
+	return tmp[size - 5];
 }
-int p6(void *input)
+int s6(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 6 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 6 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 6];
+	return tmp[size - 6];
 }
-int p7(void *input)
+int s7(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 7 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 7 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 7];
+	return tmp[size - 7];
 }
-int p8(void *input)
+int s8(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 8 < 0)
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 8 < 0)
 		return -1;
-	return ((char *)input)[(int)strlen((char *)input) - 8];
+	return tmp[size - 8];
 }
-int p9(void *input)
+int s9(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 9 < 0)
-		return -1; 
-	return ((char *)input)[(int)strlen((char *)input) - 9];
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 9 < 0)
+		return -1;
+	return tmp[size - 9];
 }
-int p10(void *input)
+int s10(void* form)
 {
-	if(input == NULL || (int)strlen((char *)input) - 10 < 0)
-		return -1;	
-	return ((char *)input)[(int)strlen((char *)input) - 10];
-}
+	char16* tmp = utf8tochar16(form);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 10 < 0)
+		return -1;
+	return tmp[size - 10];
+}/*
+int code_pos(FP* fp)
+{
+	return find_type(fp->pos);
+}*/
 
 feat_lib *feat_lib_build(void) {
 
   feat_lib *fl = feat_lib_new();
   
-  feat_lib_add(fl, 1,  (char *)"p1", p1);
-  feat_lib_add(fl, 1,  (char *)"p2", p2);
-  feat_lib_add(fl, 1,  (char *)"p3", p3);
-  feat_lib_add(fl, 1,  (char *)"p4", p4);
-  feat_lib_add(fl, 1,  (char *)"p5", p5);
-  feat_lib_add(fl, 1,  (char *)"p6", p6);
-  feat_lib_add(fl, 1,  (char *)"p7", p7);
-  feat_lib_add(fl, 1,  (char *)"p8", p8);
-  feat_lib_add(fl, 1,  (char *)"p9", p9);
-  feat_lib_add(fl, 1,  (char *)"p10", p10);
+  feat_lib_add(fl, 1,  (char *)"s1", s1);
+  feat_lib_add(fl, 1,  (char *)"s2", s2);
+  feat_lib_add(fl, 1,  (char *)"s3", s3);
+  feat_lib_add(fl, 1,  (char *)"s4", s4);
+  feat_lib_add(fl, 1,  (char *)"s5", s5);
+  feat_lib_add(fl, 1,  (char *)"s6", s6);
+  feat_lib_add(fl, 1,  (char *)"s7", s7);
+  feat_lib_add(fl, 1,  (char *)"s8", s8);
+  feat_lib_add(fl, 1,  (char *)"s9", s9);
+  feat_lib_add(fl, 1,  (char *)"s10", s10);
+  //feat_lib_add(fl, 1,  (char *)"code_pose", code_pos);
   
   return fl;
 }
diff --git a/maca_morpho/src/predict_fct.c b/maca_morpho/src/predict_fct.c
index 59238eaec4adc977cbba9c36d6d131aa4a08d5d6..8fdbfc3c091e50dc9675ea261c2380b3cceb5067 100644
--- a/maca_morpho/src/predict_fct.c
+++ b/maca_morpho/src/predict_fct.c
@@ -119,11 +119,12 @@ int extract_real_class(FILE* code_class, CLASS class, char* morpho_feature, int*
 		size++;
 		real_class[size]=0;
 	}
-	else if(class == TENSE)
+	/*else if(class == TENSE)
 	{
 		size++;
 		real_class[size] = associate_number_to_classes(code_class,class,morpho_feature,0);	
-	}
+	}*/
+	//
 	else
 	{
 		for(i=0; i<(int)strlen(morpho_feature);i++) //do not parcour the array if it's the tense !!