diff --git a/EternalArrowBackup.sln b/EternalArrowBackup.sln
index 0bd8b34..a27fe40 100644
--- a/EternalArrowBackup.sln
+++ b/EternalArrowBackup.sln
@@ -5,17 +5,47 @@ VisualStudioVersion = 15.0.26430.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{A79A4872-4289-4429-B616-3E8CEC71ECB8}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Contracts", "Source\Contracts\EternalArrowBackup.Contracts.csproj", "{9A363462-23E2-49FB-A65C-7B1CA1400046}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{884B8E01-303A-40CF-8884-D62115F98683}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Hasher.SHA1", "Source\Hasher.SHA1\EternalArrowBackup.Hasher.SHA1.csproj", "{623151DA-A4E0-4A7F-B600-A51ABCDE7038}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Hasher.SHA1", "Source\Hasher\SHA1\EternalArrowBackup.Hasher.SHA1.csproj", "{623151DA-A4E0-4A7F-B600-A51ABCDE7038}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.ContentTransformer.ClearText", "Source\ContentTransformer\ClearText\EternalArrowBackup.ContentTransformer.ClearText.csproj", "{E8D0BBF5-8DA6-49FA-AC86-9F766C203D99}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Hasher.SHA1.Tests", "Tests\Hasher\SHA1\EternalArrowBackup.Hasher.SHA1.Tests.csproj", "{92AF4CAA-64AF-4A43-A637-CD10FFEB2FEC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.ContentTransformer.ClearText.Tests", "Tests\ContentTransformer\ClearText\EternalArrowBackup.ContentTransformer.ClearText.Tests.csproj", "{0F91FC45-54B3-4BC0-BB3D-83E963EBD00D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.SourceStorage.Contracts", "Source\SourceStorage\Contracts\EternalArrowBackup.SourceStorage.Contracts.csproj", "{A0E76983-9814-4F9D-9CF7-44596DD09E75}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SourceStorage", "SourceStorage", "{05426D05-AE66-4C5C-8B8E-403A46ADC49D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReportStorage", "ReportStorage", "{8FA27C30-856D-4895-87AD-BE71847B76EF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.ReportStorage.Contracts", "Source\ReportStorage\Contracts\EternalArrowBackup.ReportStorage.Contracts.csproj", "{1B03EA65-DA8B-42C3-8784-39630B064E80}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TargetBinaryStorage", "TargetBinaryStorage", "{85879329-E36C-4585-8019-2825DEB4D0B8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.TargetBinaryStorage.Contracts", "Source\TargetBinaryStorage\Contracts\EternalArrowBackup.TargetBinaryStorage.Contracts.csproj", "{8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TargetMetadataStorage", "TargetMetadataStorage", "{99C42B64-99CF-4FB3-B270-079476B43FF7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.TargetMetadataStorage.Contracts", "Source\TargetMetadataStorage\Contracts\EternalArrowBackup.TargetMetadataStorage.Contracts.csproj", "{73433E73-1D8E-40D6-B118-F5C0A1CFC402}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ContentTransformer", "ContentTransformer", "{72A93FF8-60AE-4470-8D44-BE5B41A0F70E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.ContentTransformer.Contracts", "Source\ContentTransformer\Contracts\EternalArrowBackup.ContentTransformer.Contracts.csproj", "{67AFDB2B-3D8C-4158-A837-94A599D8CB33}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hasher", "Hasher", "{DB06FC76-26C2-44E2-A502-9FD48A8B9205}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Hasher.Contracts", "Source\Hasher\Contracts\EternalArrowBackup.Hasher.Contracts.csproj", "{8825DE11-90AA-4C81-BB2A-24D498708D1A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BackupEngine", "BackupEngine", "{FF7B2ECB-6EE0-4A60-8893-2F27CE9034A7}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Encryptor.ClearText", "Source\Encryptor.ClearText\EternalArrowBackup.Encryptor.ClearText.csproj", "{E8D0BBF5-8DA6-49FA-AC86-9F766C203D99}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.BackupEngine.Contracts", "Source\BackupEngine\Contracts\EternalArrowBackup.BackupEngine.Contracts.csproj", "{ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EternalArrowBackup.Hasher.SHA1.Tests", "Tests\Hasher.SHA1\EternalArrowBackup.Hasher.SHA1.Tests.csproj", "{92AF4CAA-64AF-4A43-A637-CD10FFEB2FEC}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ContentTransformer", "ContentTransformer", "{8D284ABE-FDF1-4E01-832B-8918798E3FA5}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EternalArrowBackup.Encryptor.ClearText.Tests", "Tests\Encryptor.ClearText\EternalArrowBackup.Encryptor.ClearText.Tests.csproj", "{0F91FC45-54B3-4BC0-BB3D-83E963EBD00D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hasher", "Hasher", "{0059A121-D191-48FE-9215-F71CE1057EEB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,10 +53,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9A363462-23E2-49FB-A65C-7B1CA1400046}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9A363462-23E2-49FB-A65C-7B1CA1400046}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9A363462-23E2-49FB-A65C-7B1CA1400046}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9A363462-23E2-49FB-A65C-7B1CA1400046}.Release|Any CPU.Build.0 = Release|Any CPU
{623151DA-A4E0-4A7F-B600-A51ABCDE7038}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{623151DA-A4E0-4A7F-B600-A51ABCDE7038}.Debug|Any CPU.Build.0 = Debug|Any CPU
{623151DA-A4E0-4A7F-B600-A51ABCDE7038}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -43,15 +69,58 @@ Global
{0F91FC45-54B3-4BC0-BB3D-83E963EBD00D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0F91FC45-54B3-4BC0-BB3D-83E963EBD00D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F91FC45-54B3-4BC0-BB3D-83E963EBD00D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0E76983-9814-4F9D-9CF7-44596DD09E75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0E76983-9814-4F9D-9CF7-44596DD09E75}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0E76983-9814-4F9D-9CF7-44596DD09E75}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0E76983-9814-4F9D-9CF7-44596DD09E75}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B03EA65-DA8B-42C3-8784-39630B064E80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B03EA65-DA8B-42C3-8784-39630B064E80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B03EA65-DA8B-42C3-8784-39630B064E80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B03EA65-DA8B-42C3-8784-39630B064E80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {73433E73-1D8E-40D6-B118-F5C0A1CFC402}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {73433E73-1D8E-40D6-B118-F5C0A1CFC402}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {73433E73-1D8E-40D6-B118-F5C0A1CFC402}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {73433E73-1D8E-40D6-B118-F5C0A1CFC402}.Release|Any CPU.Build.0 = Release|Any CPU
+ {67AFDB2B-3D8C-4158-A837-94A599D8CB33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {67AFDB2B-3D8C-4158-A837-94A599D8CB33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {67AFDB2B-3D8C-4158-A837-94A599D8CB33}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {67AFDB2B-3D8C-4158-A837-94A599D8CB33}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8825DE11-90AA-4C81-BB2A-24D498708D1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8825DE11-90AA-4C81-BB2A-24D498708D1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8825DE11-90AA-4C81-BB2A-24D498708D1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8825DE11-90AA-4C81-BB2A-24D498708D1A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {9A363462-23E2-49FB-A65C-7B1CA1400046} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
- {623151DA-A4E0-4A7F-B600-A51ABCDE7038} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
- {E8D0BBF5-8DA6-49FA-AC86-9F766C203D99} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
- {92AF4CAA-64AF-4A43-A637-CD10FFEB2FEC} = {884B8E01-303A-40CF-8884-D62115F98683}
- {0F91FC45-54B3-4BC0-BB3D-83E963EBD00D} = {884B8E01-303A-40CF-8884-D62115F98683}
+ {623151DA-A4E0-4A7F-B600-A51ABCDE7038} = {DB06FC76-26C2-44E2-A502-9FD48A8B9205}
+ {E8D0BBF5-8DA6-49FA-AC86-9F766C203D99} = {72A93FF8-60AE-4470-8D44-BE5B41A0F70E}
+ {92AF4CAA-64AF-4A43-A637-CD10FFEB2FEC} = {0059A121-D191-48FE-9215-F71CE1057EEB}
+ {0F91FC45-54B3-4BC0-BB3D-83E963EBD00D} = {8D284ABE-FDF1-4E01-832B-8918798E3FA5}
+ {A0E76983-9814-4F9D-9CF7-44596DD09E75} = {05426D05-AE66-4C5C-8B8E-403A46ADC49D}
+ {05426D05-AE66-4C5C-8B8E-403A46ADC49D} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {8FA27C30-856D-4895-87AD-BE71847B76EF} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {1B03EA65-DA8B-42C3-8784-39630B064E80} = {8FA27C30-856D-4895-87AD-BE71847B76EF}
+ {85879329-E36C-4585-8019-2825DEB4D0B8} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {8FA414B1-43BA-42E0-AD9C-FD0CF5A586E2} = {85879329-E36C-4585-8019-2825DEB4D0B8}
+ {99C42B64-99CF-4FB3-B270-079476B43FF7} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {73433E73-1D8E-40D6-B118-F5C0A1CFC402} = {99C42B64-99CF-4FB3-B270-079476B43FF7}
+ {72A93FF8-60AE-4470-8D44-BE5B41A0F70E} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {67AFDB2B-3D8C-4158-A837-94A599D8CB33} = {72A93FF8-60AE-4470-8D44-BE5B41A0F70E}
+ {DB06FC76-26C2-44E2-A502-9FD48A8B9205} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {8825DE11-90AA-4C81-BB2A-24D498708D1A} = {DB06FC76-26C2-44E2-A502-9FD48A8B9205}
+ {FF7B2ECB-6EE0-4A60-8893-2F27CE9034A7} = {A79A4872-4289-4429-B616-3E8CEC71ECB8}
+ {ACDA1912-B9A4-4C88-9C30-4C0ADB907FC7} = {FF7B2ECB-6EE0-4A60-8893-2F27CE9034A7}
+ {8D284ABE-FDF1-4E01-832B-8918798E3FA5} = {884B8E01-303A-40CF-8884-D62115F98683}
+ {0059A121-D191-48FE-9215-F71CE1057EEB} = {884B8E01-303A-40CF-8884-D62115F98683}
EndGlobalSection
EndGlobal
diff --git a/Source/.gitignore b/Source/.gitignore
new file mode 100644
index 0000000..f52c16b
--- /dev/null
+++ b/Source/.gitignore
@@ -0,0 +1 @@
+!BackupEngine
\ No newline at end of file
diff --git a/Source/Contracts/EternalArrowBackup.Contracts.csproj b/Source/BackupEngine/Contracts/EternalArrowBackup.BackupEngine.Contracts.csproj
similarity index 66%
rename from Source/Contracts/EternalArrowBackup.Contracts.csproj
rename to Source/BackupEngine/Contracts/EternalArrowBackup.BackupEngine.Contracts.csproj
index 9eca547..954020d 100644
--- a/Source/Contracts/EternalArrowBackup.Contracts.csproj
+++ b/Source/BackupEngine/Contracts/EternalArrowBackup.BackupEngine.Contracts.csproj
@@ -1,4 +1,4 @@
-
+
netstandard1.4
diff --git a/Source/Contracts/MainBackupEngine/IBackupEngine.cs b/Source/BackupEngine/Contracts/IBackupEngine.cs
similarity index 76%
rename from Source/Contracts/MainBackupEngine/IBackupEngine.cs
rename to Source/BackupEngine/Contracts/IBackupEngine.cs
index ce75db0..258a59a 100644
--- a/Source/Contracts/MainBackupEngine/IBackupEngine.cs
+++ b/Source/BackupEngine/Contracts/IBackupEngine.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.BackupEngine
+namespace EternalArrowBackup.BackupEngine.Contracts
{
using System.Threading;
using System.Threading.Tasks;
diff --git a/Source/Contracts/MainBackupEngine/IBackupReport.cs b/Source/BackupEngine/Contracts/IBackupReport.cs
similarity index 78%
rename from Source/Contracts/MainBackupEngine/IBackupReport.cs
rename to Source/BackupEngine/Contracts/IBackupReport.cs
index 84ccef0..a0512de 100644
--- a/Source/Contracts/MainBackupEngine/IBackupReport.cs
+++ b/Source/BackupEngine/Contracts/IBackupReport.cs
@@ -1,7 +1,7 @@
-using System;
-
-namespace EternalArrowBackup.Contracts.BackupEngine
+namespace EternalArrowBackup.BackupEngine.Contracts
{
+ using System;
+
public class IBackupReport
{
public long FilesUploaded { get; }
diff --git a/Source/Encryptor.ClearText/ClearTextContentEncryptor.cs b/Source/ContentTransformer/ClearText/ClearTextContentEncryptor.cs
similarity index 93%
rename from Source/Encryptor.ClearText/ClearTextContentEncryptor.cs
rename to Source/ContentTransformer/ClearText/ClearTextContentEncryptor.cs
index e56e18f..5f6c37e 100644
--- a/Source/Encryptor.ClearText/ClearTextContentEncryptor.cs
+++ b/Source/ContentTransformer/ClearText/ClearTextContentEncryptor.cs
@@ -1,10 +1,11 @@
-namespace EternalArrowBackup.Encryptor.ClearText
+namespace EternalArrowBackup.ContentTransformer.ClearText
{
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
- using Contracts.ContentTransformations;
+ using EternalArrowBackup.ContentTransformer.Contracts;
+ using EternalArrowBackup.Hasher.Contracts;
public class ClearTextContentEncryptor : IContentTransformer
{
diff --git a/Source/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.csproj b/Source/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.csproj
similarity index 59%
rename from Source/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.csproj
rename to Source/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.csproj
index 73bbdde..4fd51c3 100644
--- a/Source/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.csproj
+++ b/Source/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.csproj
@@ -5,7 +5,8 @@
-
+
+
\ No newline at end of file
diff --git a/Source/ContentTransformer/Contracts/EternalArrowBackup.ContentTransformer.Contracts.csproj b/Source/ContentTransformer/Contracts/EternalArrowBackup.ContentTransformer.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/ContentTransformer/Contracts/EternalArrowBackup.ContentTransformer.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/ContentTransformations/IContentTransformer.cs b/Source/ContentTransformer/Contracts/IContentTransformer.cs
similarity index 77%
rename from Source/Contracts/ContentTransformations/IContentTransformer.cs
rename to Source/ContentTransformer/Contracts/IContentTransformer.cs
index 26430cd..f654b60 100644
--- a/Source/Contracts/ContentTransformations/IContentTransformer.cs
+++ b/Source/ContentTransformer/Contracts/IContentTransformer.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ContentTransformations
+namespace EternalArrowBackup.ContentTransformer.Contracts
{
using System.Threading.Tasks;
diff --git a/Source/Contracts/ContentTransformations/IDecryptionResult.cs b/Source/ContentTransformer/Contracts/IDecryptionResult.cs
similarity index 64%
rename from Source/Contracts/ContentTransformations/IDecryptionResult.cs
rename to Source/ContentTransformer/Contracts/IDecryptionResult.cs
index 177397d..ec798cd 100644
--- a/Source/Contracts/ContentTransformations/IDecryptionResult.cs
+++ b/Source/ContentTransformer/Contracts/IDecryptionResult.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ContentTransformations
+namespace EternalArrowBackup.ContentTransformer.Contracts
{
public interface IDecryptionResult
{
diff --git a/Source/Hasher/Contracts/EternalArrowBackup.Hasher.Contracts.csproj b/Source/Hasher/Contracts/EternalArrowBackup.Hasher.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/Hasher/Contracts/EternalArrowBackup.Hasher.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/ContentTransformations/IContentHasher.cs b/Source/Hasher/Contracts/IContentHasher.cs
similarity index 70%
rename from Source/Contracts/ContentTransformations/IContentHasher.cs
rename to Source/Hasher/Contracts/IContentHasher.cs
index 392b8cc..210683b 100644
--- a/Source/Contracts/ContentTransformations/IContentHasher.cs
+++ b/Source/Hasher/Contracts/IContentHasher.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ContentTransformations
+namespace EternalArrowBackup.Hasher.Contracts
{
using System.IO;
using System.Threading.Tasks;
diff --git a/Source/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.csproj b/Source/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.csproj
similarity index 61%
rename from Source/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.csproj
rename to Source/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.csproj
index 73bbdde..919b2e2 100644
--- a/Source/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.csproj
+++ b/Source/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.csproj
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/Source/Hasher.SHA1/SHA1ContentHasher.cs b/Source/Hasher/SHA1/SHA1ContentHasher.cs
similarity index 92%
rename from Source/Hasher.SHA1/SHA1ContentHasher.cs
rename to Source/Hasher/SHA1/SHA1ContentHasher.cs
index 218d867..ad55780 100644
--- a/Source/Hasher.SHA1/SHA1ContentHasher.cs
+++ b/Source/Hasher/SHA1/SHA1ContentHasher.cs
@@ -3,7 +3,7 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
- using Contracts.ContentTransformations;
+ using EternalArrowBackup.Hasher.Contracts;
public class SHA1ContentHasher : IContentHasher
{
diff --git a/Source/ReportStorage/Contracts/EternalArrowBackup.ReportStorage.Contracts.csproj b/Source/ReportStorage/Contracts/EternalArrowBackup.ReportStorage.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/ReportStorage/Contracts/EternalArrowBackup.ReportStorage.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/ReportStorage/IFileInfo.cs b/Source/ReportStorage/Contracts/IFileInfo.cs
similarity index 75%
rename from Source/Contracts/ReportStorage/IFileInfo.cs
rename to Source/ReportStorage/Contracts/IFileInfo.cs
index 77b0b4b..8cd8274 100644
--- a/Source/Contracts/ReportStorage/IFileInfo.cs
+++ b/Source/ReportStorage/Contracts/IFileInfo.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ReportStorage
+namespace EternalArrowBackup.ReportStorage.Contracts
{
public interface IFileInfo
{
diff --git a/Source/Contracts/ReportStorage/IReportInfo.cs b/Source/ReportStorage/Contracts/IReportInfo.cs
similarity index 85%
rename from Source/Contracts/ReportStorage/IReportInfo.cs
rename to Source/ReportStorage/Contracts/IReportInfo.cs
index d9ff01c..d6852dc 100644
--- a/Source/Contracts/ReportStorage/IReportInfo.cs
+++ b/Source/ReportStorage/Contracts/IReportInfo.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ReportStorage
+namespace EternalArrowBackup.ReportStorage.Contracts
{
using System;
diff --git a/Source/Contracts/ReportStorage/IReportStorage.cs b/Source/ReportStorage/Contracts/IReportStorage.cs
similarity index 89%
rename from Source/Contracts/ReportStorage/IReportStorage.cs
rename to Source/ReportStorage/Contracts/IReportStorage.cs
index 2c6375c..64b2e03 100644
--- a/Source/Contracts/ReportStorage/IReportStorage.cs
+++ b/Source/ReportStorage/Contracts/IReportStorage.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.ReportStorage
+namespace EternalArrowBackup.ReportStorage.Contracts
{
using System;
using System.Threading.Tasks;
diff --git a/Source/SourceStorage/Contracts/EternalArrowBackup.SourceStorage.Contracts.csproj b/Source/SourceStorage/Contracts/EternalArrowBackup.SourceStorage.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/SourceStorage/Contracts/EternalArrowBackup.SourceStorage.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/SourceStorage/ISourceDirectory.cs b/Source/SourceStorage/Contracts/ISourceDirectory.cs
similarity index 84%
rename from Source/Contracts/SourceStorage/ISourceDirectory.cs
rename to Source/SourceStorage/Contracts/ISourceDirectory.cs
index ff04ba3..24bd7b1 100644
--- a/Source/Contracts/SourceStorage/ISourceDirectory.cs
+++ b/Source/SourceStorage/Contracts/ISourceDirectory.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.SourceStorage
+namespace EternalArrowBackup.SourceStorage.Contracts
{
using System;
using System.Threading;
diff --git a/Source/Contracts/SourceStorage/ISourceFile.cs b/Source/SourceStorage/Contracts/ISourceFile.cs
similarity index 76%
rename from Source/Contracts/SourceStorage/ISourceFile.cs
rename to Source/SourceStorage/Contracts/ISourceFile.cs
index 42c4244..6e29bb1 100644
--- a/Source/Contracts/SourceStorage/ISourceFile.cs
+++ b/Source/SourceStorage/Contracts/ISourceFile.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.SourceStorage
+namespace EternalArrowBackup.SourceStorage.Contracts
{
using System.Threading.Tasks;
diff --git a/Source/Contracts/SourceStorage/ISourceStorage.cs b/Source/SourceStorage/Contracts/ISourceStorage.cs
similarity index 83%
rename from Source/Contracts/SourceStorage/ISourceStorage.cs
rename to Source/SourceStorage/Contracts/ISourceStorage.cs
index 41f4b87..1888ccc 100644
--- a/Source/Contracts/SourceStorage/ISourceStorage.cs
+++ b/Source/SourceStorage/Contracts/ISourceStorage.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.SourceStorage
+namespace EternalArrowBackup.SourceStorage.Contracts
{
using System;
using System.Threading;
diff --git a/Source/TargetBinaryStorage/Contracts/EternalArrowBackup.TargetBinaryStorage.Contracts.csproj b/Source/TargetBinaryStorage/Contracts/EternalArrowBackup.TargetBinaryStorage.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/TargetBinaryStorage/Contracts/EternalArrowBackup.TargetBinaryStorage.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/TargetBinaryStorage/IBlobInfo.cs b/Source/TargetBinaryStorage/Contracts/IBlobInfo.cs
similarity index 73%
rename from Source/Contracts/TargetBinaryStorage/IBlobInfo.cs
rename to Source/TargetBinaryStorage/Contracts/IBlobInfo.cs
index 75e6f3c..c8905b5 100644
--- a/Source/Contracts/TargetBinaryStorage/IBlobInfo.cs
+++ b/Source/TargetBinaryStorage/Contracts/IBlobInfo.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetBinaryStorage
+namespace EternalArrowBackup.TargetBinaryStorage.Contracts
{
using System;
diff --git a/Source/Contracts/TargetBinaryStorage/ITargetBinaryStorage.cs b/Source/TargetBinaryStorage/Contracts/ITargetBinaryStorage.cs
similarity index 83%
rename from Source/Contracts/TargetBinaryStorage/ITargetBinaryStorage.cs
rename to Source/TargetBinaryStorage/Contracts/ITargetBinaryStorage.cs
index 76a229b..4a0867c 100644
--- a/Source/Contracts/TargetBinaryStorage/ITargetBinaryStorage.cs
+++ b/Source/TargetBinaryStorage/Contracts/ITargetBinaryStorage.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetBinaryStorage
+namespace EternalArrowBackup.TargetBinaryStorage.Contracts
{
using System.Threading.Tasks;
diff --git a/Source/TargetMetadataStorage/Contracts/EternalArrowBackup.TargetMetadataStorage.Contracts.csproj b/Source/TargetMetadataStorage/Contracts/EternalArrowBackup.TargetMetadataStorage.Contracts.csproj
new file mode 100644
index 0000000..954020d
--- /dev/null
+++ b/Source/TargetMetadataStorage/Contracts/EternalArrowBackup.TargetMetadataStorage.Contracts.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard1.4
+
+
+
\ No newline at end of file
diff --git a/Source/Contracts/TargetMetadataStorage/ITargetDirectory.cs b/Source/TargetMetadataStorage/Contracts/ITargetDirectory.cs
similarity index 82%
rename from Source/Contracts/TargetMetadataStorage/ITargetDirectory.cs
rename to Source/TargetMetadataStorage/Contracts/ITargetDirectory.cs
index 53269ef..622edf2 100644
--- a/Source/Contracts/TargetMetadataStorage/ITargetDirectory.cs
+++ b/Source/TargetMetadataStorage/Contracts/ITargetDirectory.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetMetadataStorage
+namespace EternalArrowBackup.TargetMetadataStorage.Contracts
{
using System;
using System.Threading;
diff --git a/Source/Contracts/TargetMetadataStorage/ITargetFile.cs b/Source/TargetMetadataStorage/Contracts/ITargetFile.cs
similarity index 73%
rename from Source/Contracts/TargetMetadataStorage/ITargetFile.cs
rename to Source/TargetMetadataStorage/Contracts/ITargetFile.cs
index e8037db..f75a62e 100644
--- a/Source/Contracts/TargetMetadataStorage/ITargetFile.cs
+++ b/Source/TargetMetadataStorage/Contracts/ITargetFile.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetMetadataStorage
+namespace EternalArrowBackup.TargetMetadataStorage.Contracts
{
using System;
using System.Threading;
diff --git a/Source/Contracts/TargetMetadataStorage/ITargetFileVersion.cs b/Source/TargetMetadataStorage/Contracts/ITargetFileVersion.cs
similarity index 76%
rename from Source/Contracts/TargetMetadataStorage/ITargetFileVersion.cs
rename to Source/TargetMetadataStorage/Contracts/ITargetFileVersion.cs
index 40a7f45..26a6034 100644
--- a/Source/Contracts/TargetMetadataStorage/ITargetFileVersion.cs
+++ b/Source/TargetMetadataStorage/Contracts/ITargetFileVersion.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetMetadataStorage
+namespace EternalArrowBackup.TargetMetadataStorage.Contracts
{
using System;
diff --git a/Source/Contracts/TargetMetadataStorage/ITargetMetadataStorage.cs b/Source/TargetMetadataStorage/Contracts/ITargetMetadataStorage.cs
similarity index 73%
rename from Source/Contracts/TargetMetadataStorage/ITargetMetadataStorage.cs
rename to Source/TargetMetadataStorage/Contracts/ITargetMetadataStorage.cs
index 369a2c6..040f24b 100644
--- a/Source/Contracts/TargetMetadataStorage/ITargetMetadataStorage.cs
+++ b/Source/TargetMetadataStorage/Contracts/ITargetMetadataStorage.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetMetadataStorage
+namespace EternalArrowBackup.TargetMetadataStorage.Contracts
{
using System.Threading.Tasks;
diff --git a/Source/Contracts/TargetMetadataStorage/ITargetMetadataStorageForRecovery.cs b/Source/TargetMetadataStorage/Contracts/ITargetMetadataStorageForRecovery.cs
similarity index 83%
rename from Source/Contracts/TargetMetadataStorage/ITargetMetadataStorageForRecovery.cs
rename to Source/TargetMetadataStorage/Contracts/ITargetMetadataStorageForRecovery.cs
index 8f189e3..2aded10 100644
--- a/Source/Contracts/TargetMetadataStorage/ITargetMetadataStorageForRecovery.cs
+++ b/Source/TargetMetadataStorage/Contracts/ITargetMetadataStorageForRecovery.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Contracts.TargetMetadataStorage
+namespace EternalArrowBackup.TargetMetadataStorage.Contracts
{
using System;
using System.Threading;
diff --git a/Tests/.gitignore b/Tests/.gitignore
new file mode 100644
index 0000000..f52c16b
--- /dev/null
+++ b/Tests/.gitignore
@@ -0,0 +1 @@
+!BackupEngine
\ No newline at end of file
diff --git a/Tests/Encryptor.ClearText/EncryptorAndHasherTests.cs b/Tests/ContentTransformer/ClearText/EncryptorAndHasherTests.cs
similarity index 98%
rename from Tests/Encryptor.ClearText/EncryptorAndHasherTests.cs
rename to Tests/ContentTransformer/ClearText/EncryptorAndHasherTests.cs
index a0ff000..a08b6c6 100644
--- a/Tests/Encryptor.ClearText/EncryptorAndHasherTests.cs
+++ b/Tests/ContentTransformer/ClearText/EncryptorAndHasherTests.cs
@@ -1,4 +1,4 @@
-namespace EternalArrowBackup.Encryptor.ClearText.Tests
+namespace EternalArrowBackup.ContentTransformer.ClearText.Tests
{
using System.Text;
using System.Threading.Tasks;
diff --git a/Tests/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.Tests.csproj b/Tests/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.Tests.csproj
similarity index 58%
rename from Tests/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.Tests.csproj
rename to Tests/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.Tests.csproj
index df2c314..5e85b7c 100644
--- a/Tests/Encryptor.ClearText/EternalArrowBackup.Encryptor.ClearText.Tests.csproj
+++ b/Tests/ContentTransformer/ClearText/EternalArrowBackup.ContentTransformer.ClearText.Tests.csproj
@@ -11,8 +11,9 @@
-
-
+
+
+
diff --git a/Tests/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj b/Tests/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj
similarity index 81%
rename from Tests/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj
rename to Tests/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj
index 581a5c5..97772a4 100644
--- a/Tests/Hasher.SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj
+++ b/Tests/Hasher/SHA1/EternalArrowBackup.Hasher.SHA1.Tests.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/Tests/Hasher.SHA1/HasherTests.cs b/Tests/Hasher/SHA1/HasherTests.cs
similarity index 100%
rename from Tests/Hasher.SHA1/HasherTests.cs
rename to Tests/Hasher/SHA1/HasherTests.cs
diff --git a/appveyor.yml b/appveyor.yml
index 533f16b..c6978d9 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -5,5 +5,5 @@ before_build:
build:
verbosity: minimal
test_script:
-- cmd: dotnet test --filter Category!=Integration tests\Encryptor.ClearText\EternalArrowBackup.Encryptor.ClearText.Tests.csproj
-- cmd: dotnet test --filter Category!=Integration tests\Hasher.SHA1\EternalArrowBackup.Hasher.SHA1.Tests.csproj
+- cmd: dotnet test --filter Category!=Integration tests\ContentTransformer\ClearText\EternalArrowBackup.ContentTransformer.ClearText.Tests.csproj
+- cmd: dotnet test --filter Category!=Integration tests\Hasher\SHA1\EternalArrowBackup.Hasher.SHA1.Tests.csproj