diff --git a/Wanderer.csproj b/Wanderer.csproj
index 9018aef0b62da35adad2173b26b8d73fe8792752..93ab5ba7c0619c2f9fc3ec571dbd8deccfc9e404 100644
--- a/Wanderer.csproj
+++ b/Wanderer.csproj
@@ -47,6 +47,11 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="model\Map.cs" />
+    <Compile Include="model\Terrain.cs" />
+    <Compile Include="model\Tile.cs" />
+    <Compile Include="view\Controls\MapView.cs" />
+    <Compile Include="view\Controls\TileView.cs" />
     <Compile Include="view\FormAide.cs">
       <SubType>Form</SubType>
     </Compile>
diff --git a/model/Map.cs b/model/Map.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e4d7f20bc5576206a0da2cad748bf15b2b32c28f
--- /dev/null
+++ b/model/Map.cs
@@ -0,0 +1,13 @@
+namespace Wanderer
+{
+    public class Map
+    {
+        private Tile[,] _tiles;
+
+        public Tile[,] Tiles
+        {
+            get => _tiles;
+            set => _tiles = value;
+        }
+    }
+}
\ No newline at end of file
diff --git a/model/Terrain.cs b/model/Terrain.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7a07c1fc8ca9d69ab8afd221c8715e7a8887c3ce
--- /dev/null
+++ b/model/Terrain.cs
@@ -0,0 +1,9 @@
+namespace Wanderer
+{
+    public enum Terrain
+    {
+        Plains,
+        Hills,
+        Mountains
+    }
+}
\ No newline at end of file
diff --git a/model/Tile.cs b/model/Tile.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ed086789535ff5781727d1165ae3504b9eda884c
--- /dev/null
+++ b/model/Tile.cs
@@ -0,0 +1,7 @@
+namespace Wanderer
+{
+    public class Tile
+    {
+        public Terrain Terrain { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/view/Controls/MapView.cs b/view/Controls/MapView.cs
new file mode 100644
index 0000000000000000000000000000000000000000..af665ca8a699769a569406a5117810e689e8e917
--- /dev/null
+++ b/view/Controls/MapView.cs
@@ -0,0 +1,18 @@
+using System.Windows.Forms;
+
+namespace Wanderer.view.Controls
+{
+    public class MapView : TableLayoutPanel
+    {
+        private TileView[,] tileViews;
+
+        public MapView(Map map)
+        {
+            for (int i = 0; i < map.Tiles.GetLength(0); ++i)
+                for (int j = 0; j < map.Tiles.GetLength(1); ++j)
+                {
+                    tileViews[i, j] = new TileView(map.Tiles[i, j]);
+                }
+        }
+    }
+}
\ No newline at end of file
diff --git a/view/Controls/TileView.cs b/view/Controls/TileView.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7f3331768bf6327152baa1483f796c011335370b
--- /dev/null
+++ b/view/Controls/TileView.cs
@@ -0,0 +1,29 @@
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Wanderer.view.Controls
+{
+    public class TileView : Button
+    {
+        private Tile model;
+        
+        public TileView(Tile tile)
+        {
+            model = tile;
+            Image = imageFromTerrain();
+        }
+
+        private Image imageFromTerrain()
+        {
+            switch (model.Terrain)
+            {
+                case Terrain.Plains:
+                    break;
+                case Terrain.Hills:
+                    break;
+            }
+
+            return null;
+        }
+    }
+}
\ No newline at end of file