diff --git a/Compass.Core/Compass.Core.vbproj b/Compass.Core/Compass.Core.vbproj
new file mode 100644
index 0000000..574f596
--- /dev/null
+++ b/Compass.Core/Compass.Core.vbproj
@@ -0,0 +1,12 @@
+
+
+
+ Compass.Core
+ net5.0
+
+
+
+
+
+
+
diff --git a/Compass/Display/DisplayEngine.vb b/Compass.Core/Display/DisplayEngine.vb
similarity index 97%
rename from Compass/Display/DisplayEngine.vb
rename to Compass.Core/Display/DisplayEngine.vb
index ae9e9db..98b1b51 100644
--- a/Compass/Display/DisplayEngine.vb
+++ b/Compass.Core/Display/DisplayEngine.vb
@@ -1,4 +1,4 @@
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Namespace Display
Public MustInherit Class DisplayEngine
diff --git a/Compass/Geometry/Circle.vb b/Compass.Core/Geometry/Circle.vb
similarity index 98%
rename from Compass/Geometry/Circle.vb
rename to Compass.Core/Geometry/Circle.vb
index 731b1d6..620aee4 100644
--- a/Compass/Geometry/Circle.vb
+++ b/Compass.Core/Geometry/Circle.vb
@@ -1,7 +1,7 @@
Option Strict On
Imports System.Math
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
diff --git a/Compass/Geometry/Geometry.vb b/Compass.Core/Geometry/Geometry.vb
similarity index 100%
rename from Compass/Geometry/Geometry.vb
rename to Compass.Core/Geometry/Geometry.vb
diff --git a/Compass/Geometry/Lambda.vb b/Compass.Core/Geometry/Lambda.vb
similarity index 100%
rename from Compass/Geometry/Lambda.vb
rename to Compass.Core/Geometry/Lambda.vb
diff --git a/Compass/Geometry/Line.vb b/Compass.Core/Geometry/Line.vb
similarity index 98%
rename from Compass/Geometry/Line.vb
rename to Compass.Core/Geometry/Line.vb
index ef38a5b..291a1f1 100644
--- a/Compass/Geometry/Line.vb
+++ b/Compass.Core/Geometry/Line.vb
@@ -1,4 +1,4 @@
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
Public Class Line
diff --git a/Compass/Geometry/Point.vb b/Compass.Core/Geometry/Point.vb
similarity index 98%
rename from Compass/Geometry/Point.vb
rename to Compass.Core/Geometry/Point.vb
index b3ca2d1..039f022 100644
--- a/Compass/Geometry/Point.vb
+++ b/Compass.Core/Geometry/Point.vb
@@ -1,4 +1,4 @@
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
Public Class Point
diff --git a/Compass/Geometry/PointSet.vb b/Compass.Core/Geometry/PointSet.vb
similarity index 99%
rename from Compass/Geometry/PointSet.vb
rename to Compass.Core/Geometry/PointSet.vb
index 64126c6..17ca635 100644
--- a/Compass/Geometry/PointSet.vb
+++ b/Compass.Core/Geometry/PointSet.vb
@@ -1,5 +1,5 @@
Imports System.Runtime.CompilerServices
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
diff --git a/Compass/Geometry/Ray.vb b/Compass.Core/Geometry/Ray.vb
similarity index 93%
rename from Compass/Geometry/Ray.vb
rename to Compass.Core/Geometry/Ray.vb
index 5283d3b..efa4552 100644
--- a/Compass/Geometry/Ray.vb
+++ b/Compass.Core/Geometry/Ray.vb
@@ -1,4 +1,4 @@
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
Public Class Ray
diff --git a/Compass/Geometry/Segment.vb b/Compass.Core/Geometry/Segment.vb
similarity index 94%
rename from Compass/Geometry/Segment.vb
rename to Compass.Core/Geometry/Segment.vb
index 85d8215..7ffa59a 100644
--- a/Compass/Geometry/Segment.vb
+++ b/Compass.Core/Geometry/Segment.vb
@@ -1,4 +1,4 @@
-Imports Compass.Maths
+Imports Compass.Core.Maths
Namespace Geometry
Public Class Segment
diff --git a/Compass/Interpreter/Context.vb b/Compass.Core/Interpreter/Context.vb
similarity index 91%
rename from Compass/Interpreter/Context.vb
rename to Compass.Core/Interpreter/Context.vb
index c35b468..9abecb6 100644
--- a/Compass/Interpreter/Context.vb
+++ b/Compass.Core/Interpreter/Context.vb
@@ -1,4 +1,4 @@
-Imports Compass.Display
+Imports Compass.Core.Display
Namespace Interpreter
Public Class Context
diff --git a/Compass/Interpreter/Exceptions.vb b/Compass.Core/Interpreter/Exceptions.vb
similarity index 100%
rename from Compass/Interpreter/Exceptions.vb
rename to Compass.Core/Interpreter/Exceptions.vb
diff --git a/Compass/Interpreter/ExpressionInterpreter.vb b/Compass.Core/Interpreter/ExpressionInterpreter.vb
similarity index 99%
rename from Compass/Interpreter/ExpressionInterpreter.vb
rename to Compass.Core/Interpreter/ExpressionInterpreter.vb
index ff6345f..9756f06 100644
--- a/Compass/Interpreter/ExpressionInterpreter.vb
+++ b/Compass.Core/Interpreter/ExpressionInterpreter.vb
@@ -1,4 +1,4 @@
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Imports Parser
Namespace Interpreter
diff --git a/Compass/Interpreter/Scope.vb b/Compass.Core/Interpreter/Scope.vb
similarity index 97%
rename from Compass/Interpreter/Scope.vb
rename to Compass.Core/Interpreter/Scope.vb
index 13bc23c..38bb9ea 100644
--- a/Compass/Interpreter/Scope.vb
+++ b/Compass.Core/Interpreter/Scope.vb
@@ -1,4 +1,4 @@
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Namespace Interpreter
Public Class Scope
diff --git a/Compass/Interpreter/StatementInterpreter.vb b/Compass.Core/Interpreter/StatementInterpreter.vb
similarity index 98%
rename from Compass/Interpreter/StatementInterpreter.vb
rename to Compass.Core/Interpreter/StatementInterpreter.vb
index 9277f09..dd94cb9 100644
--- a/Compass/Interpreter/StatementInterpreter.vb
+++ b/Compass.Core/Interpreter/StatementInterpreter.vb
@@ -1,4 +1,4 @@
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Imports Parser
Namespace Interpreter
diff --git a/Compass/Interpreter/ValueExtension.vb b/Compass.Core/Interpreter/ValueExtension.vb
similarity index 93%
rename from Compass/Interpreter/ValueExtension.vb
rename to Compass.Core/Interpreter/ValueExtension.vb
index 6b0b738..31ad8b1 100644
--- a/Compass/Interpreter/ValueExtension.vb
+++ b/Compass.Core/Interpreter/ValueExtension.vb
@@ -1,5 +1,5 @@
Imports System.Runtime.CompilerServices
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Namespace Interpreter
diff --git a/Compass/Maths/Intersections.vb b/Compass.Core/Maths/Intersections.vb
similarity index 99%
rename from Compass/Maths/Intersections.vb
rename to Compass.Core/Maths/Intersections.vb
index 72f8db5..79fdc61 100644
--- a/Compass/Maths/Intersections.vb
+++ b/Compass.Core/Maths/Intersections.vb
@@ -1,7 +1,7 @@
Option Strict On
Imports System.Math
-Imports Compass.Geometry
+Imports Compass.Core.Geometry
Namespace Maths
diff --git a/Compass/Maths/MathGlobals.vb b/Compass.Core/Maths/MathGlobals.vb
similarity index 100%
rename from Compass/Maths/MathGlobals.vb
rename to Compass.Core/Maths/MathGlobals.vb
diff --git a/Compass.sln b/Compass.sln
index ff6bfa8..18f97a4 100644
--- a/Compass.sln
+++ b/Compass.sln
@@ -3,15 +3,17 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31025.218
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Compass", "Compass\Compass.vbproj", "{294F6F37-BA15-490D-B1C0-F07AB3476C55}"
+Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Compass", "Compass\Compass.vbproj", "{294F6F37-BA15-490D-B1C0-F07AB3476C55}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Compass.Parser", "Compass.Parser\Compass.Parser.fsproj", "{A40DE1CD-813B-4C89-8DE0-7B27A49DF268}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Compass.Parser", "Compass.Parser\Compass.Parser.fsproj", "{A40DE1CD-813B-4C89-8DE0-7B27A49DF268}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DE9E15B3-08BE-44AD-A2DC-9105A9353DE2}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
EndProjectSection
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Compass.Core", "Compass.Core\Compass.Core.vbproj", "{513F5D1E-2278-45A9-BA9E-4E3E75A701A3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -26,6 +28,10 @@ Global
{A40DE1CD-813B-4C89-8DE0-7B27A49DF268}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A40DE1CD-813B-4C89-8DE0-7B27A49DF268}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A40DE1CD-813B-4C89-8DE0-7B27A49DF268}.Release|Any CPU.Build.0 = Release|Any CPU
+ {513F5D1E-2278-45A9-BA9E-4E3E75A701A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {513F5D1E-2278-45A9-BA9E-4E3E75A701A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {513F5D1E-2278-45A9-BA9E-4E3E75A701A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {513F5D1E-2278-45A9-BA9E-4E3E75A701A3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Compass/Compass.vbproj b/Compass/Compass.vbproj
index a5ca851..04c9c52 100644
--- a/Compass/Compass.vbproj
+++ b/Compass/Compass.vbproj
@@ -20,6 +20,7 @@
+
diff --git a/Compass/Display/CanvasDisplay.vb b/Compass/Display/CanvasDisplay.vb
index c71b73a..d0c985a 100644
--- a/Compass/Display/CanvasDisplay.vb
+++ b/Compass/Display/CanvasDisplay.vb
@@ -1,7 +1,8 @@
Option Strict On
-Imports Compass.Geometry
-Imports Compass.Maths
+Imports Compass.Core.Display
+Imports Compass.Core.Geometry
+Imports Compass.Core.Maths
Imports WPFLine = System.Windows.Shapes.Line
Namespace Display
diff --git a/Compass/MainWindow.xaml.vb b/Compass/MainWindow.xaml.vb
index f9cb315..9477c99 100644
--- a/Compass/MainWindow.xaml.vb
+++ b/Compass/MainWindow.xaml.vb
@@ -1,6 +1,7 @@
Imports System.IO
Imports Compass.Display
-Imports Compass.Interpreter
+Imports Compass.Core.Display
+Imports Compass.Core.Interpreter
Class MainWindow
Dim engine As DisplayEngine