diff --git a/SilicaDelta.sln b/SilicaDelta.sln
new file mode 100644
index 0000000..2ed9623
--- /dev/null
+++ b/SilicaDelta.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26228.76
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SilicaDelta", "SilicaDelta\SilicaDelta.csproj", "{0BA82C17-E550-431D-B5CF-D03BA4C4E515}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0BA82C17-E550-431D-B5CF-D03BA4C4E515}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0BA82C17-E550-431D-B5CF-D03BA4C4E515}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0BA82C17-E550-431D-B5CF-D03BA4C4E515}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0BA82C17-E550-431D-B5CF-D03BA4C4E515}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/SilicaDelta/App.config b/SilicaDelta/App.config
new file mode 100644
index 0000000..88fa402
--- /dev/null
+++ b/SilicaDelta/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SilicaDelta/Program.cs b/SilicaDelta/Program.cs
new file mode 100644
index 0000000..adfaf80
--- /dev/null
+++ b/SilicaDelta/Program.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SilicaDelta
+{
+ class Program
+ {
+
+ public static void CreatePatch(Stream infile, Stream patchedFile, Stream outfile)
+ {
+ BinaryWriter boutfile = new BinaryWriter(outfile);
+ for (int i = 0; i < infile.Length; i++)
+ {
+ long pos = infile.Position;
+ byte infileByte = (byte)infile.ReadByte();
+ byte patchedfileByte = (byte)patchedFile.ReadByte();
+
+ if (infileByte != patchedfileByte)
+ {
+ boutfile.Write((UInt64)pos);
+ outfile.WriteByte(patchedfileByte);
+ }
+ }
+ }
+
+ public static void ApplyPatch(FileStream infile, FileStream patchedFile, FileStream outfile)
+ {
+ infile.CopyTo(outfile);
+ BinaryReader bpatch = new BinaryReader(patchedFile);
+
+ while(patchedFile.Position < patchedFile.Length)
+ {
+ Int64 offset = bpatch.ReadInt64();
+ outfile.Seek(offset, SeekOrigin.Begin);
+ outfile.WriteByte((byte)patchedFile.ReadByte());
+ }
+
+
+ }
+ static void Main(string[] args)
+ {
+ if(args.Length != 4)
+ {
+ Console.WriteLine("SilicaDelta Usage: