diff --git a/Files/fm1.txt b/Files/fm1.txt
deleted file mode 100644
index cd1b0f49d25f624ac162a3faca1539ffe1ac7b8c..0000000000000000000000000000000000000000
--- a/Files/fm1.txt
+++ /dev/null
@@ -1 +0,0 @@
-feat_pos s1
diff --git a/Files/fm2.txt b/Files/fm2.txt
deleted file mode 100644
index a17f75409717b3a79d96c653b3acfd207171a171..0000000000000000000000000000000000000000
--- a/Files/fm2.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s1 s2
diff --git a/Files/fm3.txt b/Files/fm3.txt
deleted file mode 100644
index 78aa77381b018d72c19ac7dea05657da118d41ec..0000000000000000000000000000000000000000
--- a/Files/fm3.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s3
-feat_pos s1 s2
-feat_pos s1 s2 s3
diff --git a/Files/fm4.txt b/Files/fm4.txt
deleted file mode 100644
index 281ac4d6ea5fa0b1303466f33ad20fae9b31a549..0000000000000000000000000000000000000000
--- a/Files/fm4.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s3
-feat_pos s4
-feat_pos s1 s2
-feat_pos s1 s2 s3
-feat_pos s1 s2 s3 s4
diff --git a/Files/fm5.txt b/Files/fm5.txt
deleted file mode 100644
index 44aeee5b083a3e56b29b623b7168d51099fac063..0000000000000000000000000000000000000000
--- a/Files/fm5.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s3
-feat_pos s4
-feat_pos s5
-feat_pos s1 s2
-feat_pos s1 s2 s3
-feat_pos s1 s2 s3 s4
-feat_pos s1 s2 s3 s4 s5
diff --git a/Files/fm6.txt b/Files/fm6.txt
deleted file mode 100644
index fce00f9152b7e5391d19960888392a024a66a312..0000000000000000000000000000000000000000
--- a/Files/fm6.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s3
-feat_pos s4
-feat_pos s5
-feat_pos s6
-feat_pos s1 s2
-feat_pos s1 s2 s3
-feat_pos s1 s2 s3 s4
-feat_pos s1 s2 s3 s4 s5
-feat_pos s1 s2 s3 s4 s5 s6
diff --git a/Files/fm7.txt b/Files/fm7.txt
deleted file mode 100644
index 69e20c33f0ba97f11ef10f409354f9f2fb798a47..0000000000000000000000000000000000000000
--- a/Files/fm7.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-feat_pos s1
-feat_pos s2
-feat_pos s3
-feat_pos s4
-feat_pos s5
-feat_pos s6
-feat_pos s7
-feat_pos s1 s2
-feat_pos s1 s2 s3
-feat_pos s1 s2 s3 s4
-feat_pos s1 s2 s3 s4 s5
-feat_pos s1 s2 s3 s4 s5 s6
-feat_pos s1 s2 s3 s4 s5 s6 s7
diff --git a/maca_morpho/src/fplm_fct.c b/maca_morpho/src/fplm_fct.c
index fb8662638a9b5ad92375f65c43531c6adea0890e..2cdc9878cd3957fe90bd7b79a278aa07e6880b47 100644
--- a/maca_morpho/src/fplm_fct.c
+++ b/maca_morpho/src/fplm_fct.c
@@ -13,10 +13,10 @@ FPLM* new_fplm(void)
 
 void free_fplm(FPLM* fplm)
 {
-	free(fplm->form);
-	free(fplm->pos);
-	free(fplm->lemma);
-	free(fplm->morpho);
+	if(fplm->form != NULL) free(fplm->form);
+	if(fplm->pos != NULL) free(fplm->pos);
+	if(fplm->lemma != NULL) free(fplm->lemma);
+	if(fplm->morpho != NULL) free(fplm->morpho);
 	free(fplm);
 }
 
diff --git a/maca_morpho/src/maca_morpho_feat_fct.c b/maca_morpho/src/maca_morpho_feat_fct.c
index 06d367f237075372c085ad9c308beb5bff51b94e..d78750ef0f37ed54271e48c11cfe377b081bc68d 100644
--- a/maca_morpho/src/maca_morpho_feat_fct.c
+++ b/maca_morpho/src/maca_morpho_feat_fct.c
@@ -165,6 +165,31 @@ int feat_pos(FPLM* fplm)
 	return code;
 }
 
+int lemma_s1(FPLM* fplm)
+{
+	char16* tmp = utf8tochar16(fplm->lemma);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 1 < 0)
+		return -1;
+	return tmp[size - 1];
+}
+int lemma_s2(FPLM* fplm)
+{
+	char16* tmp = utf8tochar16(fplm->lemma);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 2 < 0)
+		return -1;
+	return tmp[size - 2];
+}
+int lemma_s3(FPLM* fplm)
+{
+	char16* tmp = utf8tochar16(fplm->lemma);
+	int size = char16_strlen(tmp);
+	if(tmp == NULL || size - 3 < 0)
+		return -1;
+	return tmp[size - 3];
+}
+
 feat_lib *feat_lib_build(void) {
 
   feat_lib *fl = feat_lib_new();
@@ -184,5 +209,8 @@ feat_lib *feat_lib_build(void) {
   feat_lib_add(fl, 1,  (char *)"feat_number", feat_number);
   feat_lib_add(fl, 1,  (char *)"feat_gender", feat_gender);
   feat_lib_add(fl, 1,  (char *)"feat_tense", feat_tense); 
+  feat_lib_add(fl, 1,  (char *)"lemma_s1", lemma_s1); 
+  feat_lib_add(fl, 1,  (char *)"lemma_s2", lemma_s2); 
+  feat_lib_add(fl, 1,  (char *)"lemma_s3", lemma_s3); 
   return fl;
 }
diff --git a/maca_morpho/src/predict_fct.c b/maca_morpho/src/predict_fct.c
index 105650f08fa5d2d058a902976e61dda6f68e84fb..dd759fc33b15578290a991083006944f0ed0e19b 100644
--- a/maca_morpho/src/predict_fct.c
+++ b/maca_morpho/src/predict_fct.c
@@ -347,7 +347,6 @@ void predict_target(context* ctx)
 	char predict_name[50];
 	FPLM* fplm = new_fplm();
 	TARGET target;
-	FILE* tmp = fopen("../../Files/tmp.txt","w");
 	init_input_files(in_files, ctx->fplm_filename, ctx->code_class_filename, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); 
 	if(fscanf(in_files->code_class,"%s",target_name)!=1)
 	{
@@ -377,7 +376,6 @@ void predict_target(context* ctx)
 			}
 			continue;
 		}
-		fprintf(tmp,"%s\t%s\t%s\t%s\n",fplm->form, fplm->pos, fplm->lemma, fplm->morpho);
 		line_nb++;
 		if(ctx->cascade) 
 			fprintf(out_files->new_fplm,"%s\t%s\t%s\t",fplm->form, fplm->pos, fplm->lemma);
@@ -535,6 +533,9 @@ void predict_each_and_all_targets(context* ctx)
 	}
 	compare_morpho_predicted_and_real_morphos(in_files->all_real_morphos, out_files->morpho_predicted, line_nb);
 	printf("Global success rate : %lf %%\n", 100-((float)global_error*100/line_nb));
+	free_fplm(fplm);
+	free_input_files(in_files);
+	free_output_files(out_files);
 }
 
 void calculate_global_success_rate(context* ctx, Input_files* in_files, FILE* morpho_predicted, int* global_error, int* class_predicted_array,char* morpho)