Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/App.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/App.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/App.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj	(revision 13524)
@@ -0,0 +1,65 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{458532D3-F61A-4988-877A-306A28F26636}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.ContactServer.Host</RootNamespace>
+    <AssemblyName>DistributedGA.ContactServer.Host</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\DistributedGA.ContactServer\DistributedGA.ContactServer.csproj">
+      <Project>{554dad06-0bf9-4908-bd62-d5fdc46a8b74}</Project>
+      <Name>DistributedGA.ContactServer</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs	(revision 13524)
@@ -0,0 +1,48 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.ContactServer.Host
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            string baseAddress = string.Empty;
+            if(args.GetUpperBound(0) > -1)
+            {
+               baseAddress = args[0];
+            }
+            if (string.IsNullOrWhiteSpace(baseAddress))
+            {
+                baseAddress = "http://localhost:9090/DistributedGA.ContactServer/ContactService";
+            }
+            using (ServiceHost host = new ServiceHost(typeof(ContactServiceImpl), new Uri[] { new Uri(baseAddress) }))
+            {
+                // Enable metadata publishing.
+                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
+                smb.HttpGetEnabled = true;
+                smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
+                host.Description.Behaviors.Add(smb);
+
+                // Open the ServiceHost to start listening for messages. Since
+                // no endpoints are explicitly configured, the runtime will create
+                // one endpoint per base address for each service contract implemented
+                // by the service.
+                
+                host.Open();
+
+                Console.WriteLine("The service is ready at {0}", baseAddress);
+                Console.WriteLine("Press <Enter> to stop the service.");
+                Console.ReadLine();
+
+                // Close the ServiceHost.
+                host.Close();
+            }
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.ContactServer.Host")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.ContactServer.Host")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("0dea465c-647e-4e15-9ac7-9cff245b5968")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.manifest
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.manifest	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/bin/Debug/DistributedGA.ContactServer.Host.vshost.exe.manifest	(revision 13524)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/obj/Debug/DistributedGA.ContactServer.Host.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/obj/Debug/DistributedGA.ContactServer.Host.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/obj/Debug/DistributedGA.ContactServer.Host.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,10 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.ContactServer.Host.exe.config
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.ContactServer.Host.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.ContactServer.Host.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.ContactServer.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.ContactServer.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\obj\Debug\DistributedGA.ContactServer.Host.csprojResolveAssemblyReference.cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\obj\Debug\DistributedGA.ContactServer.Host.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer.Host\obj\Debug\DistributedGA.ContactServer.Host.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/App.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/App.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/App.config	(revision 13524)
@@ -0,0 +1,44 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+  <appSettings>
+    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
+  </appSettings>
+  <system.web>
+    <compilation debug="true" />
+  </system.web>
+  <!-- When deploying the service library project, the content of the config file must be added to the host's 
+  app.config file. System.Configuration does not support config files for libraries. -->
+  <system.serviceModel>
+    <bindings>
+      <basicHttpBinding>
+        <binding name="LargeObjects" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
+      </basicHttpBinding>
+    </bindings>
+    <services>
+      <service name="DistributedGA.ContactServer.ContactServiceImpl">
+        <endpoint bindingConfiguration="LargeObjects" address="ContactService" binding="basicHttpBinding" contract="DistributedGA.ContactServer.IContactService"/>
+        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+        <host>
+          <baseAddresses>
+            <add baseAddress="http://localhost:9090/DistributedGA.ContactServer" />
+          </baseAddresses>
+        </host>
+      </service>
+    </services>
+    <behaviors>
+      <serviceBehaviors>
+        <behavior>
+          <!-- To avoid disclosing metadata information, 
+          set the values below to false before deployment -->
+          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
+          <!-- To receive exception details in faults for debugging purposes, 
+          set the value below to true.  Set to false before deployment 
+          to avoid disclosing exception information -->
+          <serviceDebug includeExceptionDetailInFaults="False" />
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+  </system.serviceModel>
+
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs	(revision 13524)
@@ -0,0 +1,115 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+using System.Timers;
+
+namespace DistributedGA.ContactServer
+{
+
+    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
+    public class ContactServiceImpl : IContactService
+    {
+
+        private ConcurrentDictionary<PeerInfo, DateTime> allPeers = null;
+
+        private Timer timer = null;
+
+        public ContactServiceImpl()
+        {
+            allPeers = new ConcurrentDictionary<PeerInfo, DateTime>();
+
+            timer = new Timer(60 * 1000); //each hour
+            timer.Elapsed += CleanUpContactTable;
+            timer.Start();
+        }
+
+        public void RegisterPeer(PeerInfo source)
+        {
+            try
+            {
+                UpdateHeartbeat(source);
+            }
+            catch (Exception ex)
+            {
+                AddError("ContactServiceImpl.RegisterPeer", ex);
+            }
+        }
+
+        public List<PeerInfo> GetPeerList(PeerInfo source)
+        {
+            try
+            {
+                UpdateHeartbeat(source);
+                //only return peers of the same work group and not the sender itself
+                return allPeers.Keys.Where(x =>
+                {
+                    if (source.ProblemInstance.Equals(x.ProblemInstance) &&
+                        (!(x.IpAddress.Equals(source.IpAddress) && (x.Port.Equals(source.Port)))))
+                        return true;
+                    else
+                        return false;
+                }).ToList();
+            }
+            catch (Exception ex)
+            {
+                AddError("ContactServiceImpl.GetPeerList", ex);
+                return null;
+            }
+        }
+
+        public void MakeLog(PeerInfo source, string msg)
+        {
+            try
+            {
+                // TODO 
+
+            }
+            catch (Exception ex)
+            {
+                AddError("ContactServiceImpl.GetPeerList", ex);
+            }
+        }
+
+        private void UpdateHeartbeat(PeerInfo source)
+        {
+            DateTime now = DateTime.Now;
+            allPeers.AddOrUpdate(source, now, (k, v) => v = now);
+        }
+
+        private void CleanUpContactTable(object sender, ElapsedEventArgs e)
+        {
+            DateTime deadline = DateTime.Now;
+            //collect items to remove
+            List<PeerInfo> itemsToDelete = new List<PeerInfo>();
+            foreach (PeerInfo pi in allPeers.Keys)
+            {
+                DateTime tmp;
+                if (allPeers.TryGetValue(pi, out tmp))
+                {
+                    //if (tmp.AddHours(1f) < deadline)
+                    if (tmp < deadline.AddHours(1f))
+                    {
+                        itemsToDelete.Add(pi);
+                    }
+                }
+            }
+            //remove items
+            foreach (PeerInfo pi in itemsToDelete)
+            {
+                DateTime tmp;
+                allPeers.TryRemove(pi, out tmp);
+            }
+        }
+
+        private void AddError(string source, Exception ex)
+        {
+            MakeLog(new PeerInfo() { ProblemInstance = "ContactServer  Error at " + source }, ex.Message);
+        }
+
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj	(revision 13524)
@@ -0,0 +1,88 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.ContactServer</RootNamespace>
+    <AssemblyName>DistributedGA.ContactServer</AssemblyName>
+    <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <StartArguments>/client:"WcfTestClient.exe"</StartArguments>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <WcfConfigValidationEnabled>True</WcfConfigValidationEnabled>
+    <XsdCodeGenEnabled>True</XsdCodeGenEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject>
+    </StartupObject>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Xml.Linq" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ContactServiceImpl.cs" />
+    <Compile Include="IContactService.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\DistributedGA.Core\DistributedGA.Core.csproj">
+      <Project>{02e73f42-bdc9-4a7a-b74f-5879def27320}</Project>
+      <Name>DistributedGA.Core</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <VSToolsPath Condition="'$(VSToolsPath)' == '' and '$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' != '11.0'">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio</VSToolsPath>
+    <WcfServiceModelTargetPath>$(VSToolsPath)\WCF</WcfServiceModelTargetPath>
+  </PropertyGroup>
+  <Import Project="$(WcfServiceModelTargetPath)\Microsoft.VisualStudio.ServiceModel.targets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
+        <WcfProjectProperties>
+          <AutoStart>True</AutoStart>
+        </WcfProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+  <!-- 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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj.user
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj.user	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/DistributedGA.ContactServer.csproj.user	(revision 13524)
@@ -0,0 +1,15 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ProjectExtensions>
+    <VisualStudio>
+      <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
+        <WcfProjectProperties>
+          <PublishCopyOption>RunFiles</PublishCopyOption>
+          <PublishTargetLocation>
+          </PublishTargetLocation>
+          <PublishDeleteAllFiles>False</PublishDeleteAllFiles>
+        </WcfProjectProperties>
+      </FlavorProperties>
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/IContactService.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/IContactService.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/IContactService.cs	(revision 13524)
@@ -0,0 +1,24 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.ContactServer
+{
+    [ServiceContract]
+    public interface IContactService
+    {
+        [OperationContract]
+        void RegisterPeer(PeerInfo source); //Registers own instance at the contact-server
+
+        [OperationContract]
+        List<PeerInfo> GetPeerList(PeerInfo source); //Recieves all peers in the network from contact-server
+
+        [OperationContract]
+        void MakeLog(PeerInfo source, string msg); //used to log all peers at a single location
+  
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.ContactServer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.ContactServer")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f68fe833-dced-40b8-af2c-096ab8124c7a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.dll.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.dll.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.dll.config	(revision 13524)
@@ -0,0 +1,44 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+  <appSettings>
+    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
+  </appSettings>
+  <system.web>
+    <compilation debug="true" />
+  </system.web>
+  <!-- When deploying the service library project, the content of the config file must be added to the host's 
+  app.config file. System.Configuration does not support config files for libraries. -->
+  <system.serviceModel>
+    <bindings>
+      <basicHttpBinding>
+        <binding name="LargeObjects" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
+      </basicHttpBinding>
+    </bindings>
+    <services>
+      <service name="DistributedGA.ContactServer.ContactServiceImpl">
+        <endpoint bindingConfiguration="LargeObjects" address="ContactService" binding="basicHttpBinding" contract="DistributedGA.ContactServer.IContactService"/>
+        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+        <host>
+          <baseAddresses>
+            <add baseAddress="http://localhost:9090/DistributedGA.ContactServer" />
+          </baseAddresses>
+        </host>
+      </service>
+    </services>
+    <behaviors>
+      <serviceBehaviors>
+        <behavior>
+          <!-- To avoid disclosing metadata information, 
+          set the values below to false before deployment -->
+          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
+          <!-- To receive exception details in faults for debugging purposes, 
+          set the value below to true.  Set to false before deployment 
+          to avoid disclosing exception information -->
+          <serviceDebug includeExceptionDetailInFaults="False" />
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+  </system.serviceModel>
+
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.vshost.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.vshost.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/bin/Debug/DistributedGA.ContactServer.vshost.exe.config	(revision 13524)
@@ -0,0 +1,44 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+
+  <appSettings>
+    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
+  </appSettings>
+  <system.web>
+    <compilation debug="true" />
+  </system.web>
+  <!-- When deploying the service library project, the content of the config file must be added to the host's 
+  app.config file. System.Configuration does not support config files for libraries. -->
+  <system.serviceModel>
+    <bindings>
+      <basicHttpBinding>
+        <binding name="LargeObjects" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
+      </basicHttpBinding>
+    </bindings>
+    <services>
+      <service name="DistributedGA.ContactServer.ContactServiceImpl">
+        <endpoint bindingConfiguration="LargeObjects" address="ContactService" binding="basicHttpBinding" contract="DistributedGA.ContactServer.IContactService"/>
+        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
+        <host>
+          <baseAddresses>
+            <add baseAddress="http://localhost:9002/DistributedGA.ContactServer" />
+          </baseAddresses>
+        </host>
+      </service>
+    </services>
+    <behaviors>
+      <serviceBehaviors>
+        <behavior>
+          <!-- To avoid disclosing metadata information, 
+          set the values below to false before deployment -->
+          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
+          <!-- To receive exception details in faults for debugging purposes, 
+          set the value below to true.  Set to false before deployment 
+          to avoid disclosing exception information -->
+          <serviceDebug includeExceptionDetailInFaults="False" />
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+  </system.serviceModel>
+
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/DistributedGA.ContactServer.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/DistributedGA.ContactServer.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/DistributedGA.ContactServer.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,8 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\bin\Debug\DistributedGA.ContactServer.dll.config
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\bin\Debug\DistributedGA.ContactServer.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\bin\Debug\DistributedGA.ContactServer.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\obj\Debug\DistributedGA.ContactServer.csprojResolveAssemblyReference.cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\obj\Debug\DistributedGA.ContactServer.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.ContactServer\obj\Debug\DistributedGA.ContactServer.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/WcfConfigValidationData.tmp
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/WcfConfigValidationData.tmp	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.ContactServer/obj/Debug/WcfConfigValidationData.tmp	(revision 13524)
@@ -0,0 +1,1 @@
+<ValidationRecord xmlns="http://schemas.datacontract.org/2004/07/Microsoft.VisualStudio.ServiceModel.Validation" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><TimeStamps xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><a:dateTime>2016-01-16T10:21:59.3448568Z</a:dateTime><a:dateTime>2016-01-16T11:14:50.0180063Z</a:dateTime><a:dateTime>2016-01-09T12:27:02.4072628Z</a:dateTime></TimeStamps></ValidationRecord>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/DistributedGA.Core.Host.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/DistributedGA.Core.Host.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/DistributedGA.Core.Host.csproj	(revision 13524)
@@ -0,0 +1,64 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.Core.Host</RootNamespace>
+    <AssemblyName>DistributedGA.Core.Host</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\DistributedGA.Core\DistributedGA.Core.csproj">
+      <Project>{02e73f42-bdc9-4a7a-b74f-5879def27320}</Project>
+      <Name>DistributedGA.Core</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs	(revision 13524)
@@ -0,0 +1,82 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Implementation;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Host
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            try
+            {
+                Console.WriteLine("Starting peer...");
+                IMessageHandler h = new PeerNetworkMessageHandler();
+                h.Init();
+                PeerInfo pi = h.GetPeerInfo();
+                Console.WriteLine(string.Format("Peer is hostet at IP: {0} and port: {1}", pi.IpAddress, pi.Port));
+                Thread.Sleep(1000 * 20);
+                Console.WriteLine("Current peers within network:");
+                foreach (var item in h.GetCurrentNetwork())
+                {
+                    Console.WriteLine(string.Format("Peer at {0}:{1}",item.IpAddress, item.Port));
+                }
+                while (true)
+                {
+                    Thread.Sleep(1000 * 10);
+                    var pop1 = CreatePopulation();
+                    Console.WriteLine("Publish population into network...");
+                    h.PublishMigrationInfo(pop1);
+                    Console.WriteLine("Population published.");
+                    Console.WriteLine("Recieved populations:");
+                    foreach (var item in h.GetMigrationInfo())
+                    {
+                        Console.WriteLine(string.Format("Population with Quality: {0:2} in Iteration {1}", item.Quality, item.IterationNumber));
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+                Console.WriteLine("press any key to continue...");
+                Console.ReadLine();
+            }
+
+        }
+
+        private static SolutionInfo[] CreatePopulation()
+        {
+            SolutionInfo si1 = new SolutionInfo()
+            {
+                IterationNumber = 1,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            SolutionInfo si2 = new SolutionInfo()
+            {
+                IterationNumber = 2,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            SolutionInfo si3 = new SolutionInfo()
+            {
+                IterationNumber = 3,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            return new SolutionInfo[] { si1, si2, si3 };
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.Core.Host")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.Core.Host")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7d4250eb-0137-420e-94c4-10f2f820810b")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.manifest
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.manifest	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/bin/Debug/DistributedGA.Core.Host.vshost.exe.manifest	(revision 13524)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
Index: /branches/thasling/DistributedGA/DistributedGA.Core.Host/obj/Debug/DistributedGA.Core.Host.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core.Host/obj/Debug/DistributedGA.Core.Host.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core.Host/obj/Debug/DistributedGA.Core.Host.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,8 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\bin\Debug\DistributedGA.Core.Host.exe.config
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\bin\Debug\DistributedGA.Core.Host.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\bin\Debug\DistributedGA.Core.Host.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\obj\Debug\DistributedGA.Core.Host.csprojResolveAssemblyReference.cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\obj\Debug\DistributedGA.Core.Host.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core.Host\obj\Debug\DistributedGA.Core.Host.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.Core/DistributedGA.Core.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/DistributedGA.Core.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/DistributedGA.Core.csproj	(revision 13524)
@@ -0,0 +1,70 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{02E73F42-BDC9-4A7A-B74F-5879DEF27320}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.Core</RootNamespace>
+    <AssemblyName>DistributedGA.Core</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Domain\MessageRecieveEventArgs.cs" />
+    <Compile Include="Domain\PeerInfo.cs" />
+    <Compile Include="Interface\IContactService.cs" />
+    <Compile Include="Implementation\MessageContractImpl.cs" />
+    <Compile Include="Implementation\PeerNetworkMessageHandler.cs" />
+    <Compile Include="Implementation\TestPeerListManager.cs" />
+    <Compile Include="Implementation\WcfMessageSender.cs" />
+    <Compile Include="Implementation\WcfMessageService.cs" />
+    <Compile Include="Implementation\WcfPeerListManager.cs" />
+    <Compile Include="Interface\IMessageHandler.cs" />
+    <Compile Include="Interface\IMessageContract.cs" />
+    <Compile Include="Interface\IMessageSender.cs" />
+    <Compile Include="Interface\IMessageService.cs" />
+    <Compile Include="Interface\IPeerListManager.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Solution.cs" />
+    <Compile Include="SolutionInfo.cs" />
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs	(revision 13524)
@@ -0,0 +1,15 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Domain
+{
+    public class MessageRecieveEventArgs : EventArgs
+    {
+        public int val;
+        public SolutionInfo[] Population { get; set; }
+        public PeerInfo Sender { get; set; }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Domain/PeerInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Domain/PeerInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Domain/PeerInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Domain
+{
+    //containts contact information of one peer
+    public class PeerInfo
+    {
+        public int Port { get; set; }
+        public string IpAddress { get; set; }
+        public string ProblemInstance { get; set; }
+
+        public override bool Equals(System.Object obj)
+        {
+            if (obj == null)
+            {
+                return false;
+            }
+
+            PeerInfo p = obj as PeerInfo;
+            if ((System.Object)p == null)
+            {
+                return false;
+            }
+
+            return p.Port.Equals(this.Port) && p.IpAddress.Equals(this.IpAddress);
+        }
+        public override int GetHashCode()
+        {
+            return this.IpAddress.GetHashCode();
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs	(revision 13524)
@@ -0,0 +1,27 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
+    public class MessageContractImpl : IMessageContract
+    {
+        public void SendPopulation(PeerInfo sender, SolutionInfo[] population)
+        {
+            MessageRecieveEventArgs args = new MessageRecieveEventArgs() { Sender = sender, Population = population };
+
+            if (MessageRecieved != null)
+            {
+                MessageRecieved(this, args);
+            }
+        }
+
+        public event EventHandler<MessageRecieveEventArgs> MessageRecieved;
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs	(revision 13524)
@@ -0,0 +1,175 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    public class PeerNetworkMessageHandler : IMessageHandler
+    {
+        //own peer-instance Information
+        private PeerInfo ownInstance = null;
+
+        //uses peer-list from IPeerListManager to decide which peers to contact
+        private IPeerListManager peerListManager;
+
+        //uses IMessageSender to send populations to peers
+        private IMessageSender sender = null;
+
+        //provides current population for the higher layer IMigrationOperator
+        //to queues are used to gather and and provide population more efficiently
+        private ConcurrentQueue<SolutionInfo> collectedResults1;
+        private ConcurrentQueue<SolutionInfo> collectedResults2;
+        private bool collectingInFirstQueue = true; //currently first queue is filled with recieved populations
+
+        //uses IMessageService for recieving population from one peer at once
+        private IMessageService host = null;
+
+        public void Init()
+        {
+            try
+            {
+                ownInstance = new PeerInfo()
+                {
+                    IpAddress = GetExternalIpAddress(),
+                    Port = 0,
+                    ProblemInstance = "TestProblem"
+                }; // TODO: get own peerinfo
+
+                collectedResults1 = new ConcurrentQueue<SolutionInfo>();
+                collectedResults2 = new ConcurrentQueue<SolutionInfo>();
+
+                host = new WcfMessageService();
+                ownInstance.Port = host.Init(ownInstance.IpAddress); //getting port, on which service is hostet
+                host.OnPopulationRecieved += new EventHandler<MessageRecieveEventArgs>(OnPopulationRecieved);
+
+                peerListManager = new WcfPeerListManager();
+                peerListManager.Init(ownInstance);
+
+                sender = new WcfMessageSender();
+                sender.Init(ownInstance);
+
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.Init", ex);
+            }
+        }
+
+        public void PublishMigrationInfo(SolutionInfo[] population)
+        {
+            try
+            {
+                foreach (PeerInfo peer in peerListManager.GetPeerList())
+                {
+                    //maybe something will go wrong during network communication...
+                    try
+                    {
+                        //HACK: If IP is same as own: it is a "localhost"
+                        if(peer.IpAddress.Equals(ownInstance.IpAddress))
+                        {
+                            peer.IpAddress = "localhost";
+                        }
+                        sender.SendPopulation(peer, population);
+
+                    }
+                    catch (Exception ex)
+                    {
+                        //TBD
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.PublishMigrationInfo", ex);
+            }
+        }
+
+        public SolutionInfo[] GetMigrationInfo()
+        {
+            try
+            {
+                List<SolutionInfo> res = new List<SolutionInfo>();
+                ConcurrentQueue<SolutionInfo> source = null;
+                SolutionInfo item = null;
+                if (collectingInFirstQueue)
+                {
+                    collectingInFirstQueue = false; //switching queue
+                    source = collectedResults1;
+                }
+                else
+                {
+                    collectingInFirstQueue = true; //switching queue
+                    source = collectedResults2;
+                }
+                //creating resultset
+                while (!source.IsEmpty)
+                {
+                    if (source.TryDequeue(out item))
+                    {
+                        res.Add(item);
+                    }
+                }
+                return res.ToArray();
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.GetMigrationInfo", ex);
+                return null;
+            }
+        }
+
+        public PeerInfo GetPeerInfo()
+        {
+            return ownInstance;
+        }
+
+        public List<PeerInfo> GetCurrentNetwork()
+        {
+            return peerListManager.GetPeerList();
+        }
+
+        private string GetExternalIpAddress()
+        {
+            try
+            {
+                string externalIP;
+                externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
+                externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
+                             .Matches(externalIP)[0].ToString();
+                return externalIP;
+            }
+            catch { return null; }
+        }
+
+        private void OnPopulationRecieved(object sender, MessageRecieveEventArgs e)
+        {
+            if (e != null)
+            {
+                foreach (SolutionInfo si in e.Population)
+                {
+                    if (collectingInFirstQueue)
+                    {
+                        collectedResults1.Enqueue(si);
+                    }
+                    else
+                    {
+                        collectedResults2.Enqueue(si);
+                    }
+                }
+            }
+        }
+
+        private void AddError(string source, Exception ex)
+        {
+            throw new NotImplementedException();
+        }
+
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs	(revision 13524)
@@ -0,0 +1,34 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    public class TestPeerListManager : IPeerListManager
+    {
+        public void Init(PeerInfo source)
+        {
+
+        }
+
+        public List<PeerInfo> GetPeerList()
+        {
+            PeerInfo pi1 = new PeerInfo() { IpAddress = "localhost", Port = 3030 };
+            PeerInfo pi2 = new PeerInfo() { IpAddress = "localhost", Port = 3031 };
+            PeerInfo pi3 = new PeerInfo() { IpAddress = "localhost", Port = 3032 };
+            PeerInfo pi4 = new PeerInfo() { IpAddress = "localhost", Port = 3033 };
+            PeerInfo pi5 = new PeerInfo() { IpAddress = "localhost", Port = 3034 };
+            return new List<PeerInfo>() { pi1, pi2, pi3, pi4, pi5 };
+        }
+
+        public void SendLogToServer(string msg)
+        {
+
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs	(revision 13524)
@@ -0,0 +1,43 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfMessageSender : IMessageSender
+    {
+        private PeerInfo myself;
+
+        public void Init(PeerInfo source)
+        {
+            myself = source;
+        }
+
+        public void SendPopulation(PeerInfo destination, SolutionInfo[] population)
+        {
+            var client = CreateServerClient(destination.IpAddress, destination.Port);
+            client.SendPopulation(myself, population); //maybe timout exception...
+        }
+
+        private IMessageContract CreateServerClient(string ip, int port)
+        {
+            var serviceUrl = "DistributedGA.svc";
+            var baseUri = new Uri(string.Concat("http://", ip, ":", port, "/DistributedGA"));
+            var serviceUri = new Uri(baseUri, serviceUrl);
+
+            var binding = new BasicHttpBinding();
+            var endpoint = new EndpointAddress(serviceUri);
+            var myChannelFactory = new ChannelFactory<IMessageContract>(binding, endpoint);
+
+            IMessageContract client = null;
+            client = myChannelFactory.CreateChannel();
+            return client;
+        }
+
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageService.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageService.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageService.cs	(revision 13524)
@@ -0,0 +1,74 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Net.Sockets;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfMessageService : IMessageService
+    {
+        public event EventHandler<MessageRecieveEventArgs> OnPopulationRecieved;
+
+        private static ManualResetEvent _ResetEvent = new ManualResetEvent(false);
+
+        private IMessageContract messageContract = null;
+
+        public int Init(string ip)
+        {
+            int port = 0;
+            //port = GetRanodmFreePort();
+            port = FreeTcpPort();
+
+            messageContract = new MessageContractImpl();
+            messageContract.MessageRecieved += new EventHandler<MessageRecieveEventArgs>(OnMessageRecieved);
+
+            var serviceUrl = "DistributedGA.svc";
+            new Thread(() =>
+            {
+                var baseUri = new Uri(string.Concat("http://", ip, ":", port, "/DistributedGA"));
+                var serviceUri = new Uri(baseUri, serviceUrl);
+                BasicHttpBinding binding = new BasicHttpBinding();
+                //using (var host = new ServiceHost(typeof(MessageContractImpl), serviceUri))
+
+                using (var host = new ServiceHost(messageContract, serviceUri))
+                {
+                    host.AddServiceEndpoint(typeof(IMessageContract), binding, serviceUri);
+
+                    host.Open();
+
+                    _ResetEvent.WaitOne();
+                }
+            }).Start();
+            //close service again:
+            //  _ResetEvent.Set();
+            return port;
+        }
+
+        private int FreeTcpPort()
+        {
+            TcpListener l = new TcpListener(IPAddress.Loopback, 0);
+            l.Start();
+            int port = ((IPEndPoint)l.LocalEndpoint).Port;
+            l.Stop();
+            return port;
+        }
+
+        private void OnMessageRecieved(object sender, MessageRecieveEventArgs e)
+        {
+            if (OnPopulationRecieved != null)
+            {
+                OnPopulationRecieved(this, e);
+            }
+        }
+
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs	(revision 13524)
@@ -0,0 +1,68 @@
+﻿using DistributedGA.Core.Domain;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfPeerListManager : IPeerListManager
+    {
+        //private const string SERVER_STRING = "http://localhost:9002/DistributedGA.ContactServer/ContactService";
+        private const string SERVER_STRING = "http://localhost:9090/DistributedGA.ContactServer/ContactService";
+
+        private IContactService client = null;
+
+        private PeerInfo myself = null;
+
+        List<PeerInfo> allPeers = null;
+        List<PeerInfo> peersForMessaging = null;
+
+        public void Init(PeerInfo source)
+        {
+            client = CreateClient();
+            myself = source;
+            client.RegisterPeer(source);
+        }
+
+        public List<PeerInfo> GetPeerList()
+        {
+            if(allPeers == null)
+            {
+                allPeers =  client.GetPeerList(myself);
+                peersForMessaging = ChoosePeersForMessaging(allPeers);
+            }
+            //TODO: maybe always request a new list from the contact server so that he can refresh the heartbeat...
+            return peersForMessaging;
+        }
+
+        public void SendLogToServer(string msg)
+        {
+            client.MakeLog(myself, msg);
+        }
+
+        private IContactService CreateClient()
+        {
+            var binding = new BasicHttpBinding();
+            var endpoint = new EndpointAddress(SERVER_STRING);
+            var myChannelFactory = new ChannelFactory<IContactService>(binding, endpoint);
+
+            IContactService client = null;
+            client = myChannelFactory.CreateChannel();
+            return client;
+        }
+
+        private List<PeerInfo> ChoosePeersForMessaging(List<PeerInfo> allPeers)
+        {
+            //TODO: strategy: 10% of list random choosen
+            int noOfPeers = allPeers.Count / 10; //communicate with 10% of the network
+            List<PeerInfo> res = new List<PeerInfo>();
+
+            return allPeers;
+        }
+
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs	(revision 13524)
@@ -0,0 +1,24 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    [ServiceContract]
+    public interface IContactService
+    {
+        [OperationContract]
+        void RegisterPeer(PeerInfo source); //Registers own instance at the contact-server
+
+        [OperationContract]
+        List<PeerInfo> GetPeerList(PeerInfo source); //Recieves all peers in the network from contact-server
+
+        [OperationContract]
+        void MakeLog(PeerInfo source, string msg); //used to log all peers at a single location
+  
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageContract.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageContract.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageContract.cs	(revision 13524)
@@ -0,0 +1,19 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceModel;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    [ServiceContract]
+    public interface IMessageContract
+    {
+        [OperationContract]
+        void SendPopulation(PeerInfo sender, SolutionInfo[] population);
+
+        event EventHandler<MessageRecieveEventArgs> MessageRecieved;
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs	(revision 13524)
@@ -0,0 +1,22 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    public interface IMessageHandler
+    {
+        void Init(); //Registers at contract-server
+
+        void PublishMigrationInfo(SolutionInfo[] population);
+
+        SolutionInfo[] GetMigrationInfo();
+
+        PeerInfo GetPeerInfo();
+
+        List<PeerInfo> GetCurrentNetwork();
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs	(revision 13524)
@@ -0,0 +1,16 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    public interface IMessageSender
+    {
+        void Init(PeerInfo source);
+
+        void SendPopulation(PeerInfo destination, SolutionInfo[] population);
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs	(revision 13524)
@@ -0,0 +1,21 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    public interface IMessageService
+    {
+        /// <summary>
+        /// Initializes a WCF service and host it with another thread
+        /// </summary>
+        /// <param name="ip">current external ip address</param>
+        /// <returns>The port, on which the service was successfully hosted</returns>
+        int Init(string ip);
+
+        event EventHandler<MessageRecieveEventArgs> OnPopulationRecieved;
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs	(revision 13524)
@@ -0,0 +1,18 @@
+﻿using DistributedGA.Core.Domain;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core.Interface
+{
+    public interface IPeerListManager
+    {
+        void Init(PeerInfo source); //Registers own instance at the contact-server
+
+        List<PeerInfo> GetPeerList(); //Recieves all peers in the network from contact-server
+
+        void SendLogToServer(string msg);
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.Core")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.Core")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c208d647-a6b0-4642-b7fd-082c5a0ce986")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.Core/Solution.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/Solution.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/Solution.cs	(revision 13524)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core
+{
+    public class Solution
+    {
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/SolutionInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/SolutionInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/SolutionInfo.cs	(revision 13524)
@@ -0,0 +1,17 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Core
+{
+    public class SolutionInfo
+    {
+        public Solution Solution { get; set; }
+
+        public float Quality { get; set; }
+
+        public int IterationNumber { get; set; }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Core/obj/Debug/DistributedGA.Core.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Core/obj/Debug/DistributedGA.Core.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Core/obj/Debug/DistributedGA.Core.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,4 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core\obj\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Core\obj\Debug\DistributedGA.Core.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj	(revision 13524)
@@ -0,0 +1,61 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{2443717F-222B-41AB-AC69-0EF69E83765F}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.Operator</RootNamespace>
+    <AssemblyName>DistributedGA.Operator</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Implementation\DefaultMigrationOperator.cs" />
+    <Compile Include="Interface\IMigrationOperator.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup />
+  <ItemGroup>
+    <ProjectReference Include="..\DistributedGA.Core\DistributedGA.Core.csproj">
+      <Project>{02e73f42-bdc9-4a7a-b74f-5879def27320}</Project>
+      <Name>DistributedGA.Core</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.Operator/Implementation/DefaultMigrationOperator.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Operator/Implementation/DefaultMigrationOperator.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Operator/Implementation/DefaultMigrationOperator.cs	(revision 13524)
@@ -0,0 +1,37 @@
+﻿using DistributedGA.Core;
+using DistributedGA.Core.Implementation;
+using DistributedGA.Core.Interface;
+using DistributedGA.Operator.Interface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Operator.Implementation
+{
+   public class DefaultMigrationOperator : IMigrationOperator
+    {
+       private IMessageHandler networkLayer = new PeerNetworkMessageHandler();
+
+        public void Init()
+        {
+           //maybe init networklayer
+        }
+
+        public void Apply(Solution[] population)
+        {
+            throw new NotImplementedException();
+        }
+
+        public SolutionInfo[] GetMigrationInfo()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void PublishMigrationInfo(SolutionInfo[] population)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Operator/Interface/IMigrationOperator.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Operator/Interface/IMigrationOperator.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Operator/Interface/IMigrationOperator.cs	(revision 13524)
@@ -0,0 +1,23 @@
+﻿using DistributedGA.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DistributedGA.Operator.Interface
+{
+    /// <summary>
+    /// Is used within a GA-Instance to be able to apply changes on internal population during the GA's lifecycle
+    /// </summary>
+    public interface IMigrationOperator
+    {
+        void Init();
+
+        void Apply(Solution[] population); //Applies population on GA's internal population
+
+        SolutionInfo[] GetMigrationInfo(); //Get populations from the peer-to-peer network
+
+        void PublishMigrationInfo(SolutionInfo[] population); //Send population into the peer-to-peer network
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Operator/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Operator/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Operator/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.Operator")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.Operator")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ad0a4906-c0cc-4183-9642-91a0d87f2d3f")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.Operator/obj/Debug/DistributedGA.Operator.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Operator/obj/Debug/DistributedGA.Operator.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Operator/obj/Debug/DistributedGA.Operator.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,7 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\bin\Debug\DistributedGA.Operator.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\bin\Debug\DistributedGA.Operator.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\obj\Debug\DistributedGA.Operator.csprojResolveAssemblyReference.cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\obj\Debug\DistributedGA.Operator.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Operator\obj\Debug\DistributedGA.Operator.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.Test/App.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/App.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/App.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/DistributedGA.Test.csproj
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/DistributedGA.Test.csproj	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/DistributedGA.Test.csproj	(revision 13524)
@@ -0,0 +1,94 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedGA.Test</RootNamespace>
+    <AssemblyName>DistributedGA.Test</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\DistributedGA.Core\DistributedGA.Core.csproj">
+      <Project>{02e73f42-bdc9-4a7a-b74f-5879def27320}</Project>
+      <Name>DistributedGA.Core</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Form1.Designer.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Form1.Designer.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Form1.Designer.cs	(revision 13524)
@@ -0,0 +1,150 @@
+﻿namespace DistributedGA.Test
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.button3 = new System.Windows.Forms.Button();
+            this.label3 = new System.Windows.Forms.Label();
+            this.button4 = new System.Windows.Forms.Button();
+            this.button5 = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(16, 29);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(75, 23);
+            this.button1.TabIndex = 0;
+            this.button1.Text = "start host";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(16, 58);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(75, 23);
+            this.button2.TabIndex = 1;
+            this.button2.Text = "client";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(13, 13);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(172, 13);
+            this.label1.TabIndex = 2;
+            this.label1.Text = "MessageSender & MessageService:";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(13, 126);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(90, 13);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "MessageHandler:";
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(16, 142);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(75, 23);
+            this.button3.TabIndex = 4;
+            this.button3.Text = "start handler";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.button3_Click);
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(13, 84);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(81, 13);
+            this.label3.TabIndex = 5;
+            this.label3.Text = "Contact Server:";
+            // 
+            // button4
+            // 
+            this.button4.Location = new System.Drawing.Point(12, 100);
+            this.button4.Name = "button4";
+            this.button4.Size = new System.Drawing.Size(125, 23);
+            this.button4.TabIndex = 6;
+            this.button4.Text = "test ContactServer";
+            this.button4.UseVisualStyleBackColor = true;
+            this.button4.Click += new System.EventHandler(this.button4_Click);
+            // 
+            // button5
+            // 
+            this.button5.Location = new System.Drawing.Point(19, 210);
+            this.button5.Name = "button5";
+            this.button5.Size = new System.Drawing.Size(75, 23);
+            this.button5.TabIndex = 7;
+            this.button5.Text = "Test";
+            this.button5.UseVisualStyleBackColor = true;
+            this.button5.Click += new System.EventHandler(this.button5_Click);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(284, 261);
+            this.Controls.Add(this.button5);
+            this.Controls.Add(this.button4);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.button3);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.button1);
+            this.Name = "Form1";
+            this.Text = "Form1";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Button button4;
+        private System.Windows.Forms.Button button5;
+    }
+}
+
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Form1.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Form1.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Form1.cs	(revision 13524)
@@ -0,0 +1,133 @@
+﻿using DistributedGA.Core;
+using DistributedGA.Core.Domain;
+using DistributedGA.Core.Implementation;
+using DistributedGA.Core.Interface;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DistributedGA.Test
+{
+    public partial class Form1 : Form
+    {
+        public Form1()
+        {
+            InitializeComponent();
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            IMessageService s = new WcfMessageService();
+            s.Init("");
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            IMessageSender c = new WcfMessageSender();
+            c.Init(null);
+            c.SendPopulation(null, null);
+        }
+
+        private void button3_Click(object sender, EventArgs e)
+        {
+            IMessageHandler h1 = new PeerNetworkMessageHandler();
+            h1.Init();
+            IMessageHandler h2 = new PeerNetworkMessageHandler();
+            h2.Init();
+            IMessageHandler h3 = new PeerNetworkMessageHandler();
+            h3.Init();
+            IMessageHandler h4 = new PeerNetworkMessageHandler();
+            h4.Init();
+            IMessageHandler h5 = new PeerNetworkMessageHandler();
+            h5.Init();
+            var pop1 = CreatePopulation();
+            h1.PublishMigrationInfo(pop1);
+            h1.PublishMigrationInfo(pop1);
+            var res1 = h1.GetMigrationInfo();
+            var res2 = h2.GetMigrationInfo();
+            h1.PublishMigrationInfo(pop1);
+            h1.PublishMigrationInfo(pop1);
+            var res3 = h1.GetMigrationInfo();
+            var res4 = h2.GetMigrationInfo();
+            h1.PublishMigrationInfo(pop1);
+            h1.PublishMigrationInfo(pop1);
+            var res5 = h1.GetMigrationInfo();
+            var res6 = h2.GetMigrationInfo();
+            int i = 0;
+        }
+
+        private void button4_Click(object sender, EventArgs e)
+        {
+            var l = new WcfPeerListManager();
+            l.Init(CreatePeerInfo());
+            l.GetPeerList();
+        }      
+
+        private void button5_Click(object sender, EventArgs e)
+        {
+            Dictionary<string, int> d1 = new Dictionary<string, int>();
+            d1.Add("test", 5);
+            if(d1.ContainsKey("test"))
+            {
+                int i = 0;
+            }
+            else
+            {
+                int j = 0;
+            }
+            Dictionary<PeerInfo, int> d2 = new Dictionary<PeerInfo, int>();
+            PeerInfo p1 = CreatePeerInfo();
+            PeerInfo p2 = CreatePeerInfo();
+            d2.Add(p1, 5);
+            if (d2.ContainsKey(p1))
+            {
+                int i = 0;
+            }
+            if(d2.ContainsKey(p2))
+            {
+                int i = 0;
+            }
+        }
+
+        private PeerInfo CreatePeerInfo()
+        {
+            return new PeerInfo() { IpAddress = "192.168.0.4", Port = 3030 };
+        }
+
+        private  SolutionInfo[] CreatePopulation()
+        {
+            SolutionInfo si1 = new SolutionInfo()
+            {
+                IterationNumber = 1,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            SolutionInfo si2 = new SolutionInfo()
+            {
+                IterationNumber = 2,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            SolutionInfo si3 = new SolutionInfo()
+            {
+                IterationNumber = 3,
+                Quality = 3.5f,
+                Solution = new Solution()
+                {
+                }
+            };
+            return new SolutionInfo[] { si1, si2, si3 };
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Form1.resx
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Form1.resx	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Form1.resx	(revision 13524)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Program.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Program.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Program.cs	(revision 13524)
@@ -0,0 +1,22 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace DistributedGA.Test
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Properties/AssemblyInfo.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Properties/AssemblyInfo.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Properties/AssemblyInfo.cs	(revision 13524)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedGA.Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedGA.Test")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("4136854d-fcba-4965-b9d8-8d8d2ff1c9cb")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.Designer.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.Designer.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.Designer.cs	(revision 13524)
@@ -0,0 +1,71 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.33440
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DistributedGA.Test.Properties
+{
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DistributedGA.Test.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.resx
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.resx	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Resources.resx	(revision 13524)
@@ -0,0 +1,117 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.Designer.cs
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.Designer.cs	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.Designer.cs	(revision 13524)
@@ -0,0 +1,30 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.33440
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DistributedGA.Test.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}
Index: /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.settings
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.settings	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/Properties/Settings.settings	(revision 13524)
@@ -0,0 +1,7 @@
+﻿<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.config
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.config	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.config	(revision 13524)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+    </startup>
+</configuration>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.manifest
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.manifest	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/bin/Debug/DistributedGA.Test.vshost.exe.manifest	(revision 13524)
@@ -0,0 +1,11 @@
+﻿<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
Index: /branches/thasling/DistributedGA/DistributedGA.Test/obj/Debug/DistributedGA.Test.csproj.FileListAbsolute.txt
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.Test/obj/Debug/DistributedGA.Test.csproj.FileListAbsolute.txt	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.Test/obj/Debug/DistributedGA.Test.csproj.FileListAbsolute.txt	(revision 13524)
@@ -0,0 +1,11 @@
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\bin\Debug\DistributedGA.Test.exe.config
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\bin\Debug\DistributedGA.Test.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\bin\Debug\DistributedGA.Test.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\bin\Debug\DistributedGA.Core.dll
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\bin\Debug\DistributedGA.Core.pdb
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.csprojResolveAssemblyReference.cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.Form1.resources
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.Properties.Resources.resources
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.csproj.GenerateResource.Cache
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.exe
+M:\FHOOE_02_Master\_MasterArbeit\_Implementierung\MAKK_20151116a\MAKK\02_Implementierung\VS\DistributedGA\DistributedGA.Test\obj\Debug\DistributedGA.Test.pdb
Index: /branches/thasling/DistributedGA/DistributedGA.sln
===================================================================
--- /branches/thasling/DistributedGA/DistributedGA.sln	(revision 13524)
+++ /branches/thasling/DistributedGA/DistributedGA.sln	(revision 13524)
@@ -0,0 +1,52 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.Test", "DistributedGA.Test\DistributedGA.Test.csproj", "{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.Core", "DistributedGA.Core\DistributedGA.Core.csproj", "{02E73F42-BDC9-4A7A-B74F-5879DEF27320}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.Operator", "DistributedGA.Operator\DistributedGA.Operator.csproj", "{2443717F-222B-41AB-AC69-0EF69E83765F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.ContactServer", "DistributedGA.ContactServer\DistributedGA.ContactServer.csproj", "{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.ContactServer.Host", "DistributedGA.ContactServer.Host\DistributedGA.ContactServer.Host.csproj", "{458532D3-F61A-4988-877A-306A28F26636}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedGA.Core.Host", "DistributedGA.Core.Host\DistributedGA.Core.Host.csproj", "{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E0E91C06-C56A-454F-9F7C-3FA7AE7F920E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{02E73F42-BDC9-4A7A-B74F-5879DEF27320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{02E73F42-BDC9-4A7A-B74F-5879DEF27320}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{02E73F42-BDC9-4A7A-B74F-5879DEF27320}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{02E73F42-BDC9-4A7A-B74F-5879DEF27320}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2443717F-222B-41AB-AC69-0EF69E83765F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2443717F-222B-41AB-AC69-0EF69E83765F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2443717F-222B-41AB-AC69-0EF69E83765F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2443717F-222B-41AB-AC69-0EF69E83765F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{554DAD06-0BF9-4908-BD62-D5FDC46A8B74}.Release|Any CPU.Build.0 = Release|Any CPU
+		{458532D3-F61A-4988-877A-306A28F26636}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{458532D3-F61A-4988-877A-306A28F26636}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{458532D3-F61A-4988-877A-306A28F26636}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{458532D3-F61A-4988-877A-306A28F26636}.Release|Any CPU.Build.0 = Release|Any CPU
+		{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{81CDDF40-E50C-4A78-90EC-D0DD43DA5690}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
