diff --git a/src/Config.py b/src/Config.py
index fbd0e842d3b99510fba31ddac5bfbec9ef7e0d65..afee5fc050de03178bc3acf030612b6e2f5892f4 100644
--- a/src/Config.py
+++ b/src/Config.py
@@ -139,7 +139,7 @@ class Config:
         def extractFeatVec(self, FeatModel):
                 featVec = []
                 i = 0
-                for f in FeatModel.getArray():
+                for f in FeatModel.getFeatArray():
 #                        print(f, '=', self.getWordFeat(f))
                         featVec.append(self.getWordFeat(f))
                         i += 1
diff --git a/src/FeatModel.py b/src/FeatModel.py
index cd27a6987ec6b49e7d0cae29376cc9226e03eb7b..92128c0b9afac9bfb3720743e5bda196998018d9 100644
--- a/src/FeatModel.py
+++ b/src/FeatModel.py
@@ -1,15 +1,18 @@
 import numpy as np
 
 class FeatModel:
-    array = []
-    nbFeat = 0
-    inputVectorSize = None
     def __init__(self, featModFilename, dicos):
+        self.featArray = self.readFeatModelFile(featModFilename)
+        self.inputVectorSize = self.computeInputSize(dicos)
+
+
+    def readFeatModelFile(self, featModFilename):
         try:
             featModFile = open(featModFilename, encoding='utf-8')
         except IOError:
             print(featModFilename, " : ce fichier n'existe pas")
             exit(1)
+        featArray = []
         for ligne in featModFile:
             (container, position, wordFeature) = ligne.split()
 #            print("container = ", container, "position = ", position, "wordFeature = ", wordFeature)
@@ -19,14 +22,13 @@ class FeatModel:
             if not wordFeature in set(['POS', 'LEMMA', 'FORM']):
                 print("error while reading featMod file : ", featModFilename, "wordFeature :", wordFeature, "undefined")
                 exit(1)
-            self.array.append((container, int(position), wordFeature))
-            self.nbFeat += 1
+            featArray.append((container, int(position), wordFeature))
         featModFile.close()
-        self.inputVectorSize = self.computeInputSize(dicos)
-
+        return featArray
+            
     def computeInputSize(self, dicos):
         inputVectorSize = 0
-        for featTuple in self.getArray():
+        for featTuple in self.getFeatArray():
             feat = featTuple[2]
             inputVectorSize += dicos.getDico(feat).getSize()
         return inputVectorSize
@@ -35,19 +37,19 @@ class FeatModel:
         return self.inputVectorSize
         
     def getNbFeat(self):
-        return self.nbFeat
+        return len(self.featArray)
         
-    def getArray(self):
-        return self.array
+    def getFeatArray(self):
+        return self.featArray
 
     def getFeatContainer(self, featIndex):
-        return self.array[featIndex][0]
+        return self.featArray[featIndex][0]
 
     def getFeatPosition(self, featIndex):
-        return self.array[featIndex][1]
+        return self.featArray[featIndex][1]
 
     def getFeatWordFeature(self, featIndex):
-        return self.array[featIndex][2]
+        return self.featArray[featIndex][2]
 
     def buildInputVector(self, featVec, dicos):
         inputVector = np.zeros(self.inputVectorSize, dtype="int32")
diff --git a/src/Mcd.py b/src/Mcd.py
index cd2b3916e43371b0c055c53ca491de931c2ee6fa..04f1d8a64c8afa23736404641632f346362e7994 100644
--- a/src/Mcd.py
+++ b/src/Mcd.py
@@ -1,12 +1,14 @@
 class Mcd:
-    array = []
-    nbCol = 0
     def __init__(self, mcdFilename):
+        self.array = self.readMcdFile(mcdFilename)
+
+    def readMcdFile(self, mcdFilename):
         try:
             mcdFile = open(mcdFilename, encoding='utf-8')
         except IOError:
             print(mcdFilename, " : ce fichier n'existe pas")
             exit(1)
+        colDescriptionArray = []
         for ligne in mcdFile:
             (col, name, type, status) = ligne.split()
             #print("col = ", col, "name = ", name, "type = ", type, "status =", status)
@@ -16,12 +18,12 @@ class Mcd:
             if(type != "INT" and type != "SYM"):
                 print("error while reading mcd file : ", mcdFilename, "type :", type, "undefined")
                 exit(1)
-            self.array.append((int(col), name, type, status))
+            colDescriptionArray.append((int(col), name, type, status))
         mcdFile.close()
-        self.nbCol = int(col) + 1
+        return colDescriptionArray
 
     def getNbCol(self):
-        return self.nbCol
+        return len(self.array)
         
     def getArray(self):
         return self.array
@@ -36,7 +38,7 @@ class Mcd:
         return self.array[colIndex][3]
 
     def locateCol(self, name):
-        for colIndex in range(self.nbCol):
+        for colIndex in range(self.getNbCol()):
             if self.array[colIndex][1] == name:
                 return colIndex
         return None