diff --git a/Wanderer.csproj b/Wanderer.csproj
index add06fec78bc4dec3d24e70b8410cdaaeb517a4e..1b05d80335239ddaf5ee2e4513036b4efa3828ac 100644
--- a/Wanderer.csproj
+++ b/Wanderer.csproj
@@ -47,6 +47,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="model\Improvement.cs" />
     <Compile Include="model\Player.cs" />
     <Compile Include="view\Controls\MapView.Designer.cs" />
     <Compile Include="view\FormFin.cs">
diff --git a/model/Improvement.cs b/model/Improvement.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e98d7fa49044f408301335f5595a059f3b2ad0bb
--- /dev/null
+++ b/model/Improvement.cs
@@ -0,0 +1,11 @@
+namespace Wanderer.model
+{
+    public enum Improvement
+    {
+        TrainStation,
+        Path,
+        Refuge,
+        Club,
+        Factory
+    }
+}
\ No newline at end of file
diff --git a/model/Map.cs b/model/Map.cs
index fd73419fc8b23b5b3de83488e72041d01b8c9332..b5ad3de9167f144fffd9c88754d3d688876d28f1 100644
--- a/model/Map.cs
+++ b/model/Map.cs
@@ -1,6 +1,4 @@
-using Wanderer.model;
-
-namespace Wanderer
+namespace Wanderer.model
 {
     public class Map
     {
@@ -9,6 +7,9 @@ namespace Wanderer
         public Map(int x, int y)
         {
             _tiles = new Tile[x, y];
+            for (int i = 0; i < x; ++i)
+                for (int j = 0; j < y; ++j)
+                    _tiles[i, j] = new Tile();
         }
 
         public Tile[,] Tiles
diff --git a/model/Tile.cs b/model/Tile.cs
index e211908171dc69400045f4ec41854121536c8ed2..42273a90774cdf89a6e1f2cecd499a314ed8b1a7 100644
--- a/model/Tile.cs
+++ b/model/Tile.cs
@@ -2,7 +2,19 @@
 {
     public class Tile
     {
+        private Improvement _improvement;
         public Terrain Terrain { get; set; }
-        public Player Owner { get; set;  }
+        public Player Owner { get; set; }
+        public bool HasChanged { get; set; }
+
+        public Improvement Improvement
+        {
+            get => _improvement;
+            set
+            {
+                _improvement = _improvement == 0 ? value : _improvement;
+                HasChanged = true;
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/view/Controls/MapView.cs b/view/Controls/MapView.cs
index 38abee5bf3ea3b8575d872b36ac3a7db70468a17..f01af9b2335d3caa67958103c6ae3122b5c143d3 100644
--- a/view/Controls/MapView.cs
+++ b/view/Controls/MapView.cs
@@ -2,6 +2,7 @@
 using System.Drawing.Design;
 using System.Windows.Forms;
 using System.Windows.Forms.Design;
+using Wanderer.model;
 
 namespace Wanderer.view.Controls
 {
diff --git a/view/Controls/TileView.cs b/view/Controls/TileView.cs
index 7902f69269d4900d8a894f338556dada32b832f8..15ea695761b788d017be8718fbeb35e995cbeec6 100644
--- a/view/Controls/TileView.cs
+++ b/view/Controls/TileView.cs
@@ -7,7 +7,7 @@ namespace Wanderer.view.Controls
 {
     public class TileView : Button
     {
-        private Tile model;
+        public Tile model { get; }
         
         public TileView(Tile tile)
         {
@@ -36,18 +36,5 @@ namespace Wanderer.view.Controls
         {
             MapView.SelectedTile = this;
         }
-
-        private Image imageFromTerrain()
-        {
-            switch (model.Terrain)
-            {
-                case Terrain.Plains:
-                    break;
-                case Terrain.Hills:
-                    break;
-            }
-
-            return null;
-        }
     }
 }
\ No newline at end of file
diff --git a/view/FormJeu.cs b/view/FormJeu.cs
index 78fb30c118c7bd7e325cec418e075b51d73045b8..b36903985e4115151652c88692d6d0818f763f2a 100644
--- a/view/FormJeu.cs
+++ b/view/FormJeu.cs
@@ -7,6 +7,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using Wanderer.model;
 using Wanderer.view.Controls;
 
 namespace Wanderer.view
@@ -61,6 +62,11 @@ namespace Wanderer.view
             lblArgent.Text = "Argent :" + nombreMarks;
             lblMarcheur.Text = "Marcheurs : " + nombreRandonneurs;
             lblTour.Text = "Nombre d'action : " + nombreTour++;
+            if (MapView.SelectedTile != null && MapView.SelectedTile.model.HasChanged)
+            {
+                MapView.SelectedTile.Image = image();
+                MapView.SelectedTile.model.HasChanged = false;
+            }
         }
 
 
@@ -77,20 +83,18 @@ namespace Wanderer.view
 
         private void btnUsine_Click(object sender, EventArgs e)
         {
-            if(nombreMarks >= 60)
-            {
-                MapView.SelectedTile.Image = btnUsine.Image;
-                nombreUsine++;
-                nombreMarks -= 40;
-                updateLabels();
-            }
+            if (nombreMarks < 60) return;
+            MapView.SelectedTile.model.Improvement = Improvement.Factory;
+            nombreUsine++;
+            nombreMarks -= 40;
+            updateLabels();
         }
 
         private void btnTrain_Click(object sender, EventArgs e)
         {
             if(nombreMarks >= 10 && gareCreated)
             {
-                MapView.SelectedTile.Image = btnTrain.Image;
+                MapView.SelectedTile.model.Improvement = Improvement.TrainStation;
                 gareCreated = false;
                 nombreMarks -= 10;
                 updateLabels();
@@ -105,7 +109,7 @@ namespace Wanderer.view
             }
             if (nombreMarks >= 30)
             {
-                MapView.SelectedTile.Image = btnRefuge.Image;
+                MapView.SelectedTile.model.Improvement = Improvement.Refuge;
                 nombreRefuge++;
                 nombreMarks -= 30;
                 updateLabels();
@@ -121,7 +125,7 @@ namespace Wanderer.view
             }
             if (nombreMarks >= 10)
             {
-                MapView.SelectedTile.Image = btnChemin.Image;
+                MapView.SelectedTile.model.Improvement = Improvement.Path;
                 nombreChemin++;
                 nombreMarks -= 10;
                 updateLabels();
@@ -132,7 +136,7 @@ namespace Wanderer.view
         {
             if(nombreMarks >= 15)
             {
-                MapView.SelectedTile.Image = btnClub.Image;
+                MapView.SelectedTile.model.Improvement = Improvement.Club;
                 nombreClub++;
                 nombreMarks -= 10;
                 updateLabels();
@@ -165,6 +169,24 @@ namespace Wanderer.view
             Application.Exit();
         }
 
+        public Image image()
+        {
+            switch (MapView.SelectedTile.model.Improvement)
+            {
+                case Improvement.Club:
+                    return btnClub.Image;
+                case Improvement.Factory:
+                    return btnUsine.Image;
+                case Improvement.Path:
+                    return btnChemin.Image;
+                case Improvement.Refuge:
+                    return btnRefuge.Image;
+                case Improvement.TrainStation:
+                    return btnTrain.Image;
+            }
+
+            return null;
+        }
 
     }
 }