diff --git a/src/Gifitti/Gifitti/Gifitti.csproj b/src/Gifitti/Gifitti/Gifitti.csproj
index 70d710df17e30315354fe1fbde2dbb740a92086a..4c234927247bdcaf6e840cd4670fe72d90c1723d 100644
--- a/src/Gifitti/Gifitti/Gifitti.csproj
+++ b/src/Gifitti/Gifitti/Gifitti.csproj
@@ -50,17 +50,17 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Form1.cs">
+    <Compile Include="View_Models\Form1.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="Form1.Designer.cs">
+    <Compile Include="View_Models\Form1.Designer.cs">
       <DependentUpon>Form1.cs</DependentUpon>
     </Compile>
-    <Compile Include="GifImage.cs" />
-    <Compile Include="GifModel.cs" />
+    <Compile Include="Models\GifImage.cs" />
+    <Compile Include="Models\GifModel.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="Form1.resx">
+    <EmbeddedResource Include="View_Models\Form1.resx">
       <DependentUpon>Form1.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
@@ -86,6 +86,9 @@
   <ItemGroup>
     <None Include="App.config" />
   </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Transformation\" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/src/Gifitti/Gifitti/GifImage.cs b/src/Gifitti/Gifitti/Models/GifImage.cs
similarity index 98%
rename from src/Gifitti/Gifitti/GifImage.cs
rename to src/Gifitti/Gifitti/Models/GifImage.cs
index afb4125c8ac782c2fb5e41d2484070ec387de998..adc25bc7633a5b5d5f7224b4ee18963c1d71ddaa 100644
--- a/src/Gifitti/Gifitti/GifImage.cs
+++ b/src/Gifitti/Gifitti/Models/GifImage.cs
@@ -6,7 +6,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace Gifitti
+namespace Gifitti.Models
 {
     class GifImage
     {
diff --git a/src/Gifitti/Gifitti/GifModel.cs b/src/Gifitti/Gifitti/Models/GifModel.cs
similarity index 75%
rename from src/Gifitti/Gifitti/GifModel.cs
rename to src/Gifitti/Gifitti/Models/GifModel.cs
index a2539c7b567f6fdcf2d30e37f1e86676ad707101..09ae8ca3d36b1bb88bc2108100ed9dddfe175685 100644
--- a/src/Gifitti/Gifitti/GifModel.cs
+++ b/src/Gifitti/Gifitti/Models/GifModel.cs
@@ -7,10 +7,11 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace Gifitti
+namespace Gifitti.Models
 {
     class GifModel
     {
+        public Image gifImage { get; set; }
         public Image originalGif { get; private set; }
         private FrameDimension dimension;
         public int numberOfFrames { get; private set; }
@@ -26,6 +27,7 @@ namespace Gifitti
         {
             //Save the original Gif
             originalGif = Image.FromFile(path);
+            this.gifImage = originalGif.Clone() as Image;
             dimension = new FrameDimension(originalGif.FrameDimensionsList[0]);
             frameConstruction(originalGif);
         }
@@ -43,6 +45,39 @@ namespace Gifitti
             }
         }
 
+        public void resetToOriginalGif()
+        {
+            gifImage = originalGif;
+        }
+
+        /// <summary>
+        /// Takes the full path of a GIF save location, 
+        /// extension included
+        /// </summary>
+        /// <param name="path">String representation of path to save the gif to. 
+        ///     Name and extension of gif mandatory.
+        /// </param>
+        public void saveGif(string path)
+        {
+            //TODO take in image setting components as well as frames being viewed etc.
+            //Build GIF
+            using (MagickImageCollection collection = new MagickImageCollection())
+            {
+                for (int i = 0; i < frames.Length; i++)
+                    collection.Add(new MagickImage(frames[i] as Bitmap));
+                
+                // Maximize Colour saturation
+                QuantizeSettings settings = new QuantizeSettings();
+                settings.Colors = 256;
+                collection.Quantize(settings);
+
+                // Optimized the GIF being exported
+                collection.Optimize();
+                // Save GIF to path
+                collection.Write(path);
+            }
+        }
+
         public void resizeGif(int newWidth, int newHeight)
         {
             using (MagickImageCollection collection = new MagickImageCollection())
diff --git a/src/Gifitti/Gifitti/Program.cs b/src/Gifitti/Gifitti/Program.cs
index ed285eaaa344f6cddf1b3d81d03f9785ffb23987..5c3a3c92414f5caf4ecf95e5dc8d11b0908c1bc0 100644
--- a/src/Gifitti/Gifitti/Program.cs
+++ b/src/Gifitti/Gifitti/Program.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using Gifitti.View_Models;
 
 namespace Gifitti
 {
diff --git a/src/Gifitti/Gifitti/Form1.Designer.cs b/src/Gifitti/Gifitti/View_Models/Form1.Designer.cs
similarity index 99%
rename from src/Gifitti/Gifitti/Form1.Designer.cs
rename to src/Gifitti/Gifitti/View_Models/Form1.Designer.cs
index 83f112f355bcbdfe4f4c591a1f1c445622f4599b..9955817ca988237ead5a4367d23f08bf38e4555e 100644
--- a/src/Gifitti/Gifitti/Form1.Designer.cs
+++ b/src/Gifitti/Gifitti/View_Models/Form1.Designer.cs
@@ -1,4 +1,4 @@
-namespace Gifitti
+namespace Gifitti.View_Models
 {
     partial class Form1
     {
diff --git a/src/Gifitti/Gifitti/Form1.cs b/src/Gifitti/Gifitti/View_Models/Form1.cs
similarity index 98%
rename from src/Gifitti/Gifitti/Form1.cs
rename to src/Gifitti/Gifitti/View_Models/Form1.cs
index 2be8fe4d170cfe97176fc63ce2062fb688cfd8db..9b48bdee900c75c6b55845673f575cba6326beb8 100644
--- a/src/Gifitti/Gifitti/Form1.cs
+++ b/src/Gifitti/Gifitti/View_Models/Form1.cs
@@ -9,8 +9,9 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using Gifitti.Models;
 
-namespace Gifitti
+namespace Gifitti.View_Models
 {
     public partial class Form1 : Form
     {
@@ -43,7 +44,7 @@ namespace Gifitti
 
                     gm = new GifModel(file);
                     gm.ReverseAtEnd = false;
-                    Image loadedGif = Image.FromFile(file);
+                    Image loadedGif = gm.gifImage;
                     globalGif = loadedGif;
                     //gifView.Image = loadedGif;
 
diff --git a/src/Gifitti/Gifitti/Form1.resx b/src/Gifitti/Gifitti/View_Models/Form1.resx
similarity index 100%
rename from src/Gifitti/Gifitti/Form1.resx
rename to src/Gifitti/Gifitti/View_Models/Form1.resx