diff --git a/OpenDiablo2.Common/Interfaces/IGameState.cs b/OpenDiablo2.Common/Interfaces/IGameState.cs
new file mode 100644
index 00000000..294bdeff
--- /dev/null
+++ b/OpenDiablo2.Common/Interfaces/IGameState.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using OpenDiablo2.Common.Enums;
+using OpenDiablo2.Common.Models;
+
+namespace OpenDiablo2.Common.Interfaces
+{
+ public interface IGameState
+ {
+ MPQDS1 MapData { get; }
+ int Act { get; }
+ string MapName { get; }
+ Palette CurrentPalette { get; }
+
+ void Initialize(string text, eHero value);
+ }
+}
diff --git a/OpenDiablo2.Common/Interfaces/IMapEngine.cs b/OpenDiablo2.Common/Interfaces/IMapEngine.cs
new file mode 100644
index 00000000..10eea3c8
--- /dev/null
+++ b/OpenDiablo2.Common/Interfaces/IMapEngine.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using OpenDiablo2.Common.Models;
+
+namespace OpenDiablo2.Common.Interfaces
+{
+ public interface IMapEngine
+ {
+ PointF CameraLocation { get; set; }
+ void Update(long ms);
+ void Render();
+ void NotifyMapChanged();
+ }
+}
diff --git a/OpenDiablo2.Common/OpenDiablo2.Common.csproj b/OpenDiablo2.Common/OpenDiablo2.Common.csproj
index 78f520b0..598db43d 100644
--- a/OpenDiablo2.Common/OpenDiablo2.Common.csproj
+++ b/OpenDiablo2.Common/OpenDiablo2.Common.csproj
@@ -77,8 +77,10 @@
+
+
diff --git a/OpenDiablo2.Core/AutofacModule.cs b/OpenDiablo2.Core/AutofacModule.cs
index e797cb40..a26cf38c 100644
--- a/OpenDiablo2.Core/AutofacModule.cs
+++ b/OpenDiablo2.Core/AutofacModule.cs
@@ -1,6 +1,7 @@
using Autofac;
using OpenDiablo2.Common.Interfaces;
using OpenDiablo2.Core.GameState_;
+using OpenDiablo2.Core.Map_Engine;
using OpenDiablo2.Core.UI;
using System;
using System.Collections.Generic;
@@ -24,8 +25,9 @@ namespace OpenDiablo2.Core
builder.RegisterType().As().SingleInstance();
builder.RegisterType