Index: branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/DistributedGA.ContactServer.Host.csproj	(revision 13887)
@@ -48,4 +48,7 @@
   <ItemGroup>
     <None Include="App.config" />
+    <None Include="startServer.bat">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
   </ItemGroup>
   <ItemGroup>
Index: branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.ContactServer.Host/Program.cs	(revision 13887)
@@ -2,33 +2,39 @@
 using System.ServiceModel;
 
-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 = "net.tcp://localhost:9090/DistributedGA.ContactServer/ContactService";
-      }
-      using (ServiceHost host = new ServiceHost(typeof(ContactServiceImpl), new Uri[] { new Uri(baseAddress) })) {
-        // Enable metadata publishing.
+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 = "net.tcp://localhost:9090/DistributedGA.ContactServer/ContactService";
+            }
+            using (ServiceHost host = new ServiceHost(typeof(ContactServiceImpl), new Uri[] { new Uri(baseAddress) }))
+            {
+                // Enable metadata publishing.
 
 
-        // 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.
+                // 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();
+                host.Open();
 
-        Console.WriteLine("The service is ready at {0}", baseAddress);
-        Console.WriteLine("Press <Enter> to stop the service.");
-        Console.ReadLine();
+                Console.WriteLine("The service is ready at {0}", baseAddress);
+                Console.WriteLine("Press <Enter> to stop the service.");
+                Console.ReadLine();
 
-        // Close the ServiceHost.
-        host.Close();
-      }
+                // Close the ServiceHost.
+                host.Close();
+            }
+        }
     }
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.ContactServer/ContactServiceImpl.cs	(revision 13887)
@@ -8,89 +8,120 @@
 using DistributedGA.Core.Domain;
 
-namespace DistributedGA.ContactServer {
+namespace DistributedGA.ContactServer
+{
 
-  [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
-  public class ContactServiceImpl : IContactService {
+    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
+    public class ContactServiceImpl : IContactService
+    {
 
-    private ConcurrentDictionary<PeerInfo, DateTime> allPeers = null;
+        private ConcurrentDictionary<PeerInfo, DateTime> allPeers = null;
 
-    private Timer timer = null;
+        private Timer timer = null;
 
-    private Object logLock = new Object();
+        private Object logLock = new Object();
 
-    public ContactServiceImpl() {
-      allPeers = new ConcurrentDictionary<PeerInfo, DateTime>();
+        public ContactServiceImpl()
+        {
+            allPeers = new ConcurrentDictionary<PeerInfo, DateTime>();
 
-      timer = new Timer(60 * 1000); //each hour
-      timer.Elapsed += CleanUpContactTable;
-      timer.Start();
+            timer = new Timer(1000 * 60 * 60); //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 
+                lock (logLock)
+                {
+                    File.AppendAllText("Log.txt", string.Concat(source.IpAddress, ":", source.Port, ",", source.ProblemInstance, ",", msg, Environment.NewLine));
+                }
+            }
+            catch (Exception ex)
+            {
+                //Nothing to do because maybe called from adderror
+            }
+        }
+
+        public void UpdateHeartbeat(PeerInfo source)
+        {
+            try
+            {
+                Console.WriteLine("hb from {0}:{1}", source.IpAddress, source.Port);
+                DateTime now = DateTime.Now;
+                allPeers.AddOrUpdate(source, now, (k, v) => v = now);
+            }
+            catch (Exception ex)
+            {
+                AddError("ContactServiceImpl.UpdateHeartbeat", ex);
+            }
+        }
+
+        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);
+        }
+
     }
-
-    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 
-        lock (logLock) {
-          File.AppendAllText("Log.txt", string.Concat(source.IpAddress, ":", source.Port, ",", source.ProblemInstance, ",", msg, Environment.NewLine));
-        }
-      } catch (Exception ex) {
-        //Nothing to do because maybe called from adderror
-      }
-    }
-
-    private void UpdateHeartbeat(PeerInfo source) {
-      Console.WriteLine("hb from {0}:{1}", source.IpAddress, source.Port);
-      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/IContactService.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.ContactServer/IContactService.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.ContactServer/IContactService.cs	(revision 13887)
@@ -19,6 +19,9 @@
 
         [OperationContract]
-        void MakeLog(PeerInfo source, string msg); //used to log all peers at a single location
-  
+        void UpdateHeartbeat(PeerInfo source); //Sends heartbeat to contact-server
+
+        [OperationContract]
+        void MakeLog(PeerInfo source, string msg); //Used to log all peers at a single location
+
     }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core.Host/App.config	(revision 13887)
@@ -6,5 +6,6 @@
   <appSettings>
     <add key="ContactServerURL" value="net.tcp://localhost:9090/DistributedGA.ContactServer/ContactService"/>
-    <add key="LanIpPrefix" value="10."/>
+    <add key="LanIpPrefix" value="192."/>
+    <!--<add key="LanIpPrefix" value="10."/>-->
   </appSettings>
 </configuration>
Index: branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core.Host/Program.cs	(revision 13887)
@@ -6,64 +6,73 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Host {
-  class Program {
-    static void Main(string[] args) {
-      try {
-        Console.WriteLine("Starting peer...");
-        string ipPrefix = ConfigurationManager.AppSettings["LanIpPrefix"];
-        string serverUrl = ConfigurationManager.AppSettings["ContactServerURL"];
+namespace DistributedGA.Core.Host
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            try
+            {
+                Console.WriteLine("Starting peer...");
+                string ipPrefix = ConfigurationManager.AppSettings["LanIpPrefix"];
+                string serverUrl = ConfigurationManager.AppSettings["ContactServerURL"];
 
+                IMessageHandler h = new PeerNetworkMessageHandler();
+                h.Init(ipPrefix, serverUrl);
 
-        IMessageHandler h = new PeerNetworkMessageHandler();
-        h.Init(ipPrefix, serverUrl);
-        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));
+                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));
+                }
+
+                int i = 0;
+                while (i < 10)
+                {
+                    i++;
+                    Thread.Sleep(1000 * 10);
+                    var message = CreateMessage(pi, i);
+                    Console.WriteLine("Publishing messages...");
+                    h.PublishDataToNetwork(message);
+                    Console.WriteLine("Messages published.");
+                    Console.WriteLine("Recieved messages:");
+                    foreach (var item in h.GetDataFromNetwork())
+                    {
+                        Console.WriteLine(string.Format("Message:{0}", GetString(item)));
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+                Console.WriteLine("press any key to continue...");
+                Console.ReadLine();
+            }
+
         }
-        int i = 1;
-        while (i < 10) {
-          i++;
-          Thread.Sleep(1000 * 10);
-          var pop1 = CreatePopulation();
-          Console.WriteLine("Publish population into network...");
-          h.PublishDataToNetwork(pop1);
-          Console.WriteLine("Population published.");
-          Console.WriteLine("Recieved populations:");
-          foreach (var item in h.GetDataFromNetwork()) {
-            Console.WriteLine(string.Format("Population with Quality: {0:2} in Iteration {1}", item.Quality, item.IterationNumber));
-          }
+
+        private static byte[][] CreateMessage(PeerInfo pi, int iterationNumber)
+        {
+            string msg1 = string.Concat("Message 1 from Peer ", pi.IpAddress, ":", pi.Port, " at iteration ", iterationNumber);
+            string msg2 = string.Concat("Message 2 from Peer ", pi.IpAddress, ":", pi.Port, " at iteration ", iterationNumber);
+            return new byte[][] { GetBytes(msg1), GetBytes(msg2) };
         }
-      } catch (Exception ex) {
-        Console.WriteLine(ex.Message);
-        Console.WriteLine("press any key to continue...");
-        Console.ReadLine();
-      }
 
+        static byte[] GetBytes(string str)
+        {
+            byte[] bytes = new byte[str.Length * sizeof(char)];
+            System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
+            return bytes;
+        }
+
+        static string GetString(byte[] bytes)
+        {
+            char[] chars = new char[bytes.Length / sizeof(char)];
+            System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
+            return new string(chars);
+        }
     }
-
-    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/DistributedGA.Core.csproj
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/DistributedGA.Core.csproj	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/DistributedGA.Core.csproj	(revision 13887)
@@ -64,6 +64,4 @@
     <Compile Include="Interface\IPeerListManager.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Solution.cs" />
-    <Compile Include="SolutionInfo.cs" />
   </ItemGroup>
   <ItemGroup>
Index: branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Domain/MessageRecieveEventArgs.cs	(revision 13887)
@@ -1,9 +1,11 @@
 ﻿using System;
 
-namespace DistributedGA.Core.Domain {
-  public class MessageRecieveEventArgs : EventArgs {
-    public int val;
-    public SolutionInfo[] data { get; set; }
-    public PeerInfo Sender { get; set; }
-  }
+namespace DistributedGA.Core.Domain
+{
+    public class MessageRecieveEventArgs : EventArgs
+    {
+        public int val;
+        public byte[][] data { get; set; }
+        public PeerInfo Sender { get; set; }
+    }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/MessageContractImpl.cs	(revision 13887)
@@ -4,17 +4,21 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Implementation {
-  [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
-  public class MessageContractImpl : IMessageContract {
-    public void SendData(PeerInfo sender, SolutionInfo[] data) {
-      MessageRecieveEventArgs args = new MessageRecieveEventArgs() { Sender = sender, data = data };
+namespace DistributedGA.Core.Implementation
+{
+    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
+    public class MessageContractImpl : IMessageContract
+    {
+        public void SendData(PeerInfo sender, byte[][] data)
+        {
+            MessageRecieveEventArgs args = new MessageRecieveEventArgs() { Sender = sender, data = data };
 
-      if (MessageRecieved != null) {
-        MessageRecieved(this, args);
-      }
+            if (MessageRecieved != null)
+            {
+                MessageRecieved(this, args);
+            }
+        }
+
+        public event EventHandler<MessageRecieveEventArgs> MessageRecieved;
+
     }
-
-    public event EventHandler<MessageRecieveEventArgs> MessageRecieved;
-
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/PeerNetworkMessageHandler.cs	(revision 13887)
@@ -7,141 +7,176 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Implementation {
-  public class PeerNetworkMessageHandler : IMessageHandler {
-    //own peer-instance Information
-    private PeerInfo ownInstance = null;
+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 peer-list from IPeerListManager to decide which peers to contact
+        private IPeerListManager peerListManager;
 
-    //uses IMessageSender to send populations to peers
-    private IMessageSender sender = null;
+        //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 object activeQueueLocker = new object();
-    private ConcurrentQueue<SolutionInfo> writeQueue;
-    private ConcurrentQueue<SolutionInfo> readQueue;
+        //provides current population for the higher layer IMigrationOperator
+        //to queues are used to gather and and provide population more efficiently
+        private object activeQueueLocker = new object();
+        private ConcurrentQueue<byte[]> writeQueue;
+        private ConcurrentQueue<byte[]> readQueue;
 
-    //uses IMessageService for recieving population from one peer at once
-    private IMessageService host = null;
+        //uses IMessageService for recieving population from one peer at once
+        private IMessageService host = null;
 
 
 
-    public void Init(string lanIpPrefix, string contactServerUrl) {
-      try {
-        ownInstance = new PeerInfo() {
-          IpAddress = GetExternalIpAddress(lanIpPrefix),
-          Port = 0,
-          ProblemInstance = "TestProblem"
-        }; // TODO: get own peerinfo
+        public void Init(string lanIpPrefix, string contactServerUrl)
+        {
+            try
+            {
+                ownInstance = new PeerInfo()
+                {
+                    IpAddress = GetInternalIpAddress(lanIpPrefix),
+                    Port = 0,
+                    ProblemInstance = "TestProblem"
+                }; // TODO: get own peerinfo
 
-        writeQueue = new ConcurrentQueue<SolutionInfo>();
-        readQueue = new ConcurrentQueue<SolutionInfo>();
+                writeQueue = new ConcurrentQueue<byte[]>();
+                readQueue = new ConcurrentQueue<byte[]>();
 
-        host = new WcfMessageService();
-        ownInstance.Port = host.Init(ownInstance.IpAddress); //getting port, on which service is hostet
-        host.OnDataRecieved += new EventHandler<MessageRecieveEventArgs>(OnPopulationRecieved);
+                host = new WcfMessageService();
+                ownInstance.Port = host.Init(ownInstance.IpAddress); //getting port, on which service is hostet
+                host.OnDataRecieved += new EventHandler<MessageRecieveEventArgs>(OnPopulationRecieved);
 
-        peerListManager = new WcfPeerListManager();
-        peerListManager.Init(ownInstance, contactServerUrl);
+                peerListManager = new WcfPeerListManager();
+                peerListManager.Init(ownInstance, contactServerUrl);
 
-        sender = new WcfMessageSender();
-        sender.Init(ownInstance);
+                sender = new WcfMessageSender();
+                sender.Init(ownInstance);
 
-      } catch (Exception ex) {
-        AddError("PeerNetworkMessageHandler.Init", ex);
-      }
-    }
-
-    public void Dispose() {
-      try {
-        host.Dispose();
-      } catch (Exception ex) {
-        AddError("PeerNetworkMessageHandler.Dispose", ex);
-      }
-    }
-
-    public void PublishDataToNetwork(SolutionInfo[] data) {
-      try {
-        foreach (PeerInfo peer in peerListManager.GetPeerList()) {
-          //HACK: manipulate for monitoring in test
-          foreach (SolutionInfo si in data) {
-            si.IterationNumber = ownInstance.Port;
-          }
-          //maybe something will go wrong during network communication...
-          try {
-            sender.SendData(peer, data);
-          } catch (Exception ex) {
-            AddError("PeerNetworkMessageHandler.PublishMigrationInfo(during sending to one peer!)", ex);
-          }
-        }
-      } catch (Exception ex) {
-        AddError("PeerNetworkMessageHandler.PublishMigrationInfo", ex);
-      }
-    }
-
-    public SolutionInfo[] GetDataFromNetwork() {
-      try {
-        List<SolutionInfo> res = new List<SolutionInfo>();
-        SolutionInfo item = null;
-        lock (activeQueueLocker) {
-          var tmp = readQueue;
-          readQueue = writeQueue;
-          writeQueue = tmp;
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.Init", ex);
+            }
         }
 
-        //creating resultset
-        while (!readQueue.IsEmpty) {
-          if (readQueue.TryDequeue(out item)) {
-            res.Add(item);
-          }
+        public void Dispose()
+        {
+            try
+            {
+                host.Dispose();
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.Dispose", ex);
+            }
         }
-        return res.ToArray();
-      } catch (Exception ex) {
-        AddError("PeerNetworkMessageHandler.GetMigrationInfo", ex);
-        return null;
-      }
+
+        public void PublishDataToNetwork(byte[][] data)
+        {
+            try
+            {
+                foreach (PeerInfo peer in peerListManager.GetPeerList())
+                {
+                    //maybe something will go wrong during network communication...
+                    try
+                    {
+                        sender.SendData(peer, data);
+                    }
+                    catch (Exception ex)
+                    {
+                        AddError("PeerNetworkMessageHandler.PublishDataToNetwork(during sending to one peer!)", ex);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.PublishDataToNetwork", ex);
+            }
+        }
+
+        public byte[][] GetDataFromNetwork()
+        {
+            try
+            {
+                List<byte[]> res = new List<byte[]>();
+                byte[] item = null;
+                lock (activeQueueLocker)
+                {
+                    var tmp = readQueue;
+                    readQueue = writeQueue;
+                    writeQueue = tmp;
+                }
+
+                //creating resultset
+                while (!readQueue.IsEmpty)
+                {
+                    if (readQueue.TryDequeue(out item))
+                    {
+                        res.Add(item);
+                    }
+                }
+                return res.ToArray();
+            }
+            catch (Exception ex)
+            {
+                AddError("PeerNetworkMessageHandler.GetDataFromNetwork", ex);
+                return null;
+            }
+        }
+
+        public PeerInfo GetPeerInfo()
+        {
+            return ownInstance;
+        }
+
+        public List<PeerInfo> GetCurrentNetwork()
+        {
+            return peerListManager.GetPeerList();
+        }
+
+        private string GetInternalIpAddress(string ipPrefix)
+        {
+            try
+            {
+                var strHostName = Dns.GetHostName();
+                // Then using host name, get the IP address list..
+                IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
+                IPAddress[] addr = ipEntry.AddressList;
+
+                return addr
+                  .Select(ip => ip.ToString())
+                  .First(str => str.StartsWith(ipPrefix));
+            }
+            catch { return null; }
+        }
+
+        private void OnPopulationRecieved(object sender, MessageRecieveEventArgs e)
+        {
+            if (e != null)
+            {
+                lock (activeQueueLocker)
+                {
+                    foreach (byte[] item in e.data)
+                    {
+                        writeQueue.Enqueue(item);
+                    }
+                }
+            }
+        }
+
+        private void AddError(string source, Exception ex)
+        {
+            if (peerListManager != null)
+            {
+                try
+                {
+                    peerListManager.SendLogToServer(string.Concat("Source: ", source, ", Exception: ", ex.Message));
+                }
+                catch { }
+            }
+        }
+
     }
-
-    public PeerInfo GetPeerInfo() {
-      return ownInstance;
-    }
-
-    public List<PeerInfo> GetCurrentNetwork() {
-      return peerListManager.GetPeerList();
-    }
-
-    private string GetExternalIpAddress(string ipPrefix) {
-      try {
-        var strHostName = Dns.GetHostName();
-        // Then using host name, get the IP address list..
-        IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
-        IPAddress[] addr = ipEntry.AddressList;
-
-        return addr
-          .Select(ip => ip.ToString())
-          .First(str => str.StartsWith(ipPrefix));
-      } catch { return null; }
-    }
-
-    private void OnPopulationRecieved(object sender, MessageRecieveEventArgs e) {
-      if (e != null) {
-        lock (activeQueueLocker) {
-          foreach (SolutionInfo si in e.data) {
-            writeQueue.Enqueue(si);
-          }
-        }
-      }
-    }
-
-    private void AddError(string source, Exception ex) {
-      if (peerListManager != null) {
-        try {
-          peerListManager.SendLogToServer(string.Concat("Source: ", source, ", Exception: ", ex.Message));
-        } catch { }
-      }
-    }
-
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/TestPeerListManager.cs	(revision 13887)
@@ -3,24 +3,29 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Implementation {
-  public class TestPeerListManager : IPeerListManager {
+namespace DistributedGA.Core.Implementation
+{
+    public class TestPeerListManager : IPeerListManager
+    {
 
 
-    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 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)
+        {
+
+        }
+
+        public void Init(PeerInfo source, string contactServerUrl)
+        {
+
+        }
     }
-
-    public void SendLogToServer(string msg) {
-
-    }
-
-    public void Init(PeerInfo source, string contactServerUrl) {
-
-    }
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageSender.cs	(revision 13887)
@@ -4,31 +4,36 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Implementation {
-  public class WcfMessageSender : IMessageSender {
-    private PeerInfo myself;
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfMessageSender : IMessageSender
+    {
+        private PeerInfo myself;
 
-    public void Init(PeerInfo source) {
-      myself = source;
+        public void Init(PeerInfo source)
+        {
+            myself = source;
+        }
+
+        public void SendData(PeerInfo destination, byte[][] data)
+        {
+            var client = CreateServerClient(destination.IpAddress, destination.Port);
+            client.SendData(myself, data); //maybe timout exception...
+        }
+
+        private IMessageContract CreateServerClient(string ip, int port)
+        {
+            var serviceUrl = "DistributedGA.svc";
+            var baseUri = new Uri(string.Concat("net.tcp://", ip, ":", port, "/DistributedGA"));
+            var serviceUri = new Uri(baseUri, serviceUrl);
+
+            var binding = new NetTcpBinding();
+            var endpoint = new EndpointAddress(serviceUri);
+            var myChannelFactory = new ChannelFactory<IMessageContract>(binding, endpoint);
+
+            IMessageContract client = null;
+            client = myChannelFactory.CreateChannel();
+            return client;
+        }
+
     }
-
-    public void SendData(PeerInfo destination, SolutionInfo[] data) {
-      var client = CreateServerClient(destination.IpAddress, destination.Port);
-      client.SendData(myself, data); //maybe timout exception...
-    }
-
-    private IMessageContract CreateServerClient(string ip, int port) {
-      var serviceUrl = "DistributedGA.svc";
-      var baseUri = new Uri(string.Concat("net.tcp://", ip, ":", port, "/DistributedGA"));
-      var serviceUri = new Uri(baseUri, serviceUrl);
-
-      var binding = new NetTcpBinding();
-      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 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfMessageService.cs	(revision 13887)
@@ -7,56 +7,65 @@
 using DistributedGA.Core.Interface;
 
-namespace DistributedGA.Core.Implementation {
-  public class WcfMessageService : IMessageService {
-    public event EventHandler<MessageRecieveEventArgs> OnDataRecieved;
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfMessageService : IMessageService
+    {
+        public event EventHandler<MessageRecieveEventArgs> OnDataRecieved;
 
-    private static ManualResetEvent _ResetEvent = new ManualResetEvent(false);
+        private static ManualResetEvent _ResetEvent = new ManualResetEvent(false);
 
-    private IMessageContract messageContract = null;
+        private IMessageContract messageContract = null;
 
-    public int Init(string ip) {
-      int port = 0;
-      port = FreeTcpPort();
+        public int Init(string ip)
+        {
+            int port = 0;
+            port = FreeTcpPort();
 
-      messageContract = new MessageContractImpl();
-      messageContract.MessageRecieved += new EventHandler<MessageRecieveEventArgs>(OnMessageRecieved);
+            messageContract = new MessageContractImpl();
+            messageContract.MessageRecieved += new EventHandler<MessageRecieveEventArgs>(OnMessageRecieved);
 
-      var serviceUrl = "DistributedGA.svc";
-      new Thread(() => {
-        var baseUri = new Uri(string.Concat("net.tcp://", ip, ":", port, "/DistributedGA"));
-        var serviceUri = new Uri(baseUri, serviceUrl);
-        NetTcpBinding binding = new NetTcpBinding();
-        //using (var host = new ServiceHost(typeof(MessageContractImpl), serviceUri))
+            var serviceUrl = "DistributedGA.svc";
+            new Thread(() =>
+            {
+                var baseUri = new Uri(string.Concat("net.tcp://", ip, ":", port, "/DistributedGA"));
+                var serviceUri = new Uri(baseUri, serviceUrl);
+                NetTcpBinding binding = new NetTcpBinding();
+                //using (var host = new ServiceHost(typeof(MessageContractImpl), serviceUri))
 
-        using (var host = new ServiceHost(messageContract, serviceUri)) {
-          host.AddServiceEndpoint(typeof(IMessageContract), binding, serviceUri);
+                using (var host = new ServiceHost(messageContract, serviceUri))
+                {
+                    host.AddServiceEndpoint(typeof(IMessageContract), binding, serviceUri);
 
-          host.Open();
+                    host.Open();
 
-          _ResetEvent.WaitOne();
+                    _ResetEvent.WaitOne();
+                }
+            }).Start();
+            //close service again:
+            //  _ResetEvent.Set();
+            return port;
         }
-      }).Start();
-      //close service again:
-      //  _ResetEvent.Set();
-      return port;
+
+        public void Dispose()
+        {
+            _ResetEvent.Set();
+        }
+
+        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 (OnDataRecieved != null)
+            {
+                OnDataRecieved(this, e);
+            }
+        }
     }
-
-    public void Dispose() {
-      _ResetEvent.Set();
-    }
-
-    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 (OnDataRecieved != null) {
-        OnDataRecieved(this, e);
-      }
-    }
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Implementation/WcfPeerListManager.cs	(revision 13887)
@@ -5,65 +5,96 @@
 using DistributedGA.Core.Domain;
 using DistributedGA.Core.Interface;
+using System.Timers;
 
-namespace DistributedGA.Core.Implementation {
-  public class WcfPeerListManager : IPeerListManager {
-    private string serverString = null;
+namespace DistributedGA.Core.Implementation
+{
+    public class WcfPeerListManager : IPeerListManager
+    {
+        private string serverString = null;
 
-    private IContactService client = null;
+        private IContactService client = null;
 
-    private PeerInfo myself = null;
+        private IContactService heartbeatClient = null;
 
-    public void Init(PeerInfo source, string contactServerUrl) {
-      serverString = contactServerUrl;
-      client = CreateClient();
-      myself = source;
-      client.RegisterPeer(source);
+        private PeerInfo myself = null;
+
+        private Timer timer = null; //sends heartbeat to contact-server
+
+        public void Init(PeerInfo source, string contactServerUrl)
+        {
+            serverString = contactServerUrl;
+            client = CreateClient();
+            heartbeatClient = CreateClient();
+            myself = source;
+            client.RegisterPeer(source);
+            timer = new Timer(1000 * 60 * 5); //each 5 minutes
+            timer.Elapsed += SendHeartbeatToServer;
+            timer.Start();
+        }
+
+
+
+        public List<PeerInfo> GetPeerList()
+        {
+            var allPeers = client.GetPeerList(myself);
+            var peersForMessaging = ChoosePeersForMessaging(allPeers);
+            //return peersForMessaging;
+            return allPeers; //TODO: Enable 10% list communication
+        }
+
+        public void SendLogToServer(string msg)
+        {
+            client.MakeLog(myself, msg);
+        }
+
+        private IContactService CreateClient()
+        {
+            var binding = new NetTcpBinding();
+            var endpoint = new EndpointAddress(serverString);
+            var myChannelFactory = new ChannelFactory<IContactService>(binding, endpoint);
+
+            IContactService client = null;
+            client = myChannelFactory.CreateChannel();
+            return client;
+        }
+
+        private List<PeerInfo> ChoosePeersForMessaging(List<PeerInfo> allPeers)
+        {
+            //communicate with 10% of the network
+            int noOfPeers = allPeers.Count / 10;
+            List<int> indexList = GetRandomItemIndexes(noOfPeers, 0, allPeers.Count - 1);
+            List<PeerInfo> res = new List<PeerInfo>();
+            foreach (int index in indexList)
+            {
+                res.Add(allPeers.ElementAt(index));
+            }
+            return res;
+        }
+
+        private List<int> GetRandomItemIndexes(int noOfItems, int minValue, int maxValue)
+        {
+            List<int> res = new List<int>();
+            Random rnd = new Random();
+            int tmp = -1;
+            while (res.Count < noOfItems)
+            {
+                tmp = rnd.Next(minValue, maxValue);
+                if (!res.Contains(tmp))
+                {
+                    res.Add(tmp);
+                }
+            }
+            return res;
+        }
+
+        private void SendHeartbeatToServer(object sender, ElapsedEventArgs e)
+        {
+            try
+            {
+                heartbeatClient.UpdateHeartbeat(myself);
+            }
+            catch { } //nothing to do, exception is raised when getting peer list
+        }
+
     }
-
-    public List<PeerInfo> GetPeerList() {
-      var allPeers = client.GetPeerList(myself);
-      var peersForMessaging = ChoosePeersForMessaging(allPeers);
-      //return peersForMessaging;
-      return allPeers; //TODO: Enable 10% list communication
-    }
-
-    public void SendLogToServer(string msg) {
-      client.MakeLog(myself, msg);
-    }
-
-    private IContactService CreateClient() {
-      var binding = new NetTcpBinding();
-      var endpoint = new EndpointAddress(serverString);
-      var myChannelFactory = new ChannelFactory<IContactService>(binding, endpoint);
-
-      IContactService client = null;
-      client = myChannelFactory.CreateChannel();
-      return client;
-    }
-
-    private List<PeerInfo> ChoosePeersForMessaging(List<PeerInfo> allPeers) {
-      //communicate with 10% of the network
-      int noOfPeers = allPeers.Count / 10;
-      List<int> indexList = GetRandomItemIndexes(noOfPeers, 0, allPeers.Count - 1);
-      List<PeerInfo> res = new List<PeerInfo>();
-      foreach (int index in indexList) {
-        res.Add(allPeers.ElementAt(index));
-      }
-      return allPeers;
-    }
-
-    private List<int> GetRandomItemIndexes(int noOfItems, int minValue, int maxValue) {
-      List<int> res = new List<int>();
-      Random rnd = new Random();
-      int tmp = -1;
-      while (res.Count < noOfItems) {
-        tmp = rnd.Next(minValue, maxValue);
-        if (!res.Contains(tmp)) {
-          res.Add(tmp);
-        }
-      }
-      return res;
-    }
-
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IContactService.cs	(revision 13887)
@@ -19,6 +19,9 @@
 
         [OperationContract]
-        void MakeLog(PeerInfo source, string msg); //used to log all peers at a single location
-  
+        void UpdateHeartbeat(PeerInfo source); //Sends heartbeat to 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 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageContract.cs	(revision 13887)
@@ -3,11 +3,15 @@
 using DistributedGA.Core.Domain;
 
-namespace DistributedGA.Core.Interface {
-  [ServiceContract]
-  public interface IMessageContract {
-    [OperationContract]
-    void SendData(PeerInfo sender, SolutionInfo[] data);
+namespace DistributedGA.Core.Interface
+{
 
-    event EventHandler<MessageRecieveEventArgs> MessageRecieved;
-  }
+    [ServiceContract]
+    public interface IMessageContract
+    {
+
+        [OperationContract]
+        void SendData(PeerInfo sender, byte[][] data);
+
+        event EventHandler<MessageRecieveEventArgs> MessageRecieved;
+    }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageHandler.cs	(revision 13887)
@@ -2,17 +2,21 @@
 using DistributedGA.Core.Domain;
 
-namespace DistributedGA.Core.Interface {
-  public interface IMessageHandler {
-    void Init(string lanIpPrefix, string contactServerUrl); //Registers at contract-server
+namespace DistributedGA.Core.Interface
+{
 
-    void PublishDataToNetwork(SolutionInfo[] data);
+    public interface IMessageHandler
+    {
 
-    SolutionInfo[] GetDataFromNetwork();
+        void Init(string lanIpPrefix, string contactServerUrl); //Registers at contract-server
 
-    PeerInfo GetPeerInfo();
+        void PublishDataToNetwork(byte[][] data);
 
-    List<PeerInfo> GetCurrentNetwork();
+        byte[][] GetDataFromNetwork();
 
-    void Dispose();
-  }
+        PeerInfo GetPeerInfo();
+
+        List<PeerInfo> GetCurrentNetwork();
+
+        void Dispose();
+    }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageSender.cs	(revision 13887)
@@ -1,9 +1,13 @@
 ﻿using DistributedGA.Core.Domain;
 
-namespace DistributedGA.Core.Interface {
-  public interface IMessageSender {
-    void Init(PeerInfo source);
+namespace DistributedGA.Core.Interface
+{
 
-    void SendData(PeerInfo destination, SolutionInfo[] data);
-  }
+    public interface IMessageSender
+    {
+
+        void Init(PeerInfo source);
+
+        void SendData(PeerInfo destination, byte[][] data);
+    }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IMessageService.cs	(revision 13887)
@@ -2,16 +2,20 @@
 using DistributedGA.Core.Domain;
 
-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);
+namespace DistributedGA.Core.Interface
+{
 
-    void Dispose();
+    public interface IMessageService
+    {
 
-    event EventHandler<MessageRecieveEventArgs> OnDataRecieved;
-  }
+        /// <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);
+
+        void Dispose();
+
+        event EventHandler<MessageRecieveEventArgs> OnDataRecieved;
+    }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Core/Interface/IPeerListManager.cs	(revision 13887)
@@ -2,11 +2,15 @@
 using DistributedGA.Core.Domain;
 
-namespace DistributedGA.Core.Interface {
-  public interface IPeerListManager {
-    void Init(PeerInfo source, string contactServerUrl); //Registers own instance at the contact-server
+namespace DistributedGA.Core.Interface
+{
 
-    List<PeerInfo> GetPeerList(); //Recieves all peers in the network from contact-server
+    public interface IPeerListManager
+    {
 
-    void SendLogToServer(string msg);
-  }
+        void Init(PeerInfo source, string contactServerUrl); //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/Solution.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Core/Solution.cs	(revision 13557)
+++ 	(revision )
@@ -1,12 +1,0 @@
-﻿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 13557)
+++ 	(revision )
@@ -1,17 +1,0 @@
-﻿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.Hive/DistributedGA.Hive.csproj
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Hive/DistributedGA.Hive.csproj	(revision 13557)
+++ 	(revision )
@@ -1,108 +1,0 @@
-﻿<?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>{F191E644-1AFC-4825-8897-E79A6ED91B20}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>DistributedGA.Hive</RootNamespace>
-    <AssemblyName>DistributedGA.Hive</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>
-  <PropertyGroup>
-    <StartupObject />
-  </PropertyGroup>
-  <PropertyGroup>
-    <SignAssembly>true</SignAssembly>
-  </PropertyGroup>
-  <PropertyGroup>
-    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="HeuristicLab.Clients.Hive-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Clients.Hive-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Collections-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Collections-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Common-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Common-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Core-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Core-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Data-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Data-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Hive-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Hive-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Optimization-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Optimization-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Parameters-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.Persistence-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.Persistence-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
-      <HintPath>..\..\..\..\Users\Lokal\Downloads\HeuristicLab 3.3.13\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Drawing" />
-    <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="P2PTask.cs" />
-    <Compile Include="Plugin.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="App.config" />
-    <None Include="HeuristicLab.snk" />
-  </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.Hive/P2PTask.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Hive/P2PTask.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Hive/P2PTask.cs	(revision 13887)
@@ -14,228 +14,253 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace DistributedGA.Hive {
-  [StorableClass]
-  [Creatable(Category = "Haslinger's Very Special XO", Priority = 1000)]
-  public class P2PTask : ParameterizedNamedItem, IOptimizer {
-
-
-    [Storable]
-    private DateTime startTime;
-    [Storable]
-    private RunCollection runCollection;
-
-    #region Constructors and Cloning
-    [StorableConstructor]
-    protected P2PTask(bool deserializing) { }
-    protected P2PTask(P2PTask original, Cloner cloner)
-      : base(original, cloner) {
-      startTime = original.startTime;
-      runCollection = cloner.Clone(original.runCollection);
+namespace DistributedGA.Hive
+{
+    [StorableClass]
+    [Creatable(Category = "Haslinger's Very Special XO", Priority = 1000)]
+    public class P2PTask : ParameterizedNamedItem, IOptimizer
+    {
+
+        [Storable]
+        private DateTime startTime;
+        [Storable]
+        private RunCollection runCollection;
+
+        #region Constructors and Cloning
+        [StorableConstructor]
+        protected P2PTask(bool deserializing) { }
+        protected P2PTask(P2PTask original, Cloner cloner)
+            : base(original, cloner)
+        {
+            startTime = original.startTime;
+            runCollection = cloner.Clone(original.runCollection);
+        }
+        public P2PTask()
+        {
+            Name = "P2PTask";
+            Description = "P2PTask";
+            runCollection = new RunCollection();
+
+            Parameters.Add(new ValueParameter<StringValue>("LanIpPrefix", "", new StringValue("10.")));
+            Parameters.Add(new ValueParameter<StringValue>("ContactServerURL", "", new StringValue("net.tcp://10.42.1.150:9090/DistributedGA.ContactServer/ContactService")));
+            Parameters.Add(new ValueParameter<Log>("Log", "", new Log()));
+
+        }
+
+        [StorableHook(HookType.AfterDeserialization)]
+        protected virtual void AfterDeserialization()
+        {
+        }
+
+        public override IDeepCloneable Clone(Cloner cloner)
+        {
+            return new P2PTask(this, cloner);
+        }
+        #endregion
+
+        #region ITask Members
+        public ExecutionState ExecutionState { get; private set; }
+
+        public TimeSpan ExecutionTime { get; private set; }
+
+        public void Prepare()
+        {
+            Prepare(true);
+        }
+        public void Prepare(bool clearRuns)
+        {
+            // ignore
+            ExecutionState = HeuristicLab.Core.ExecutionState.Prepared;
+            OnExecutionStateChanged();
+            OnPrepared();
+        }
+
+        private CancellationTokenSource cts;
+        private ManualResetEvent stoppedEvent;
+
+        public void Start()
+        {
+            Task.Factory.StartNew(() =>
+            {
+                cts = new CancellationTokenSource();
+                stoppedEvent = new ManualResetEvent(false);
+                startTime = DateTime.Now;
+
+                ExecutionState = HeuristicLab.Core.ExecutionState.Started;
+                OnExecutionStateChanged();
+                OnStarted();
+
+                var log = ((Log)(Parameters["Log"].ActualValue));
+
+                try
+                {
+
+                    log.LogMessage("Starting peer...");
+                    IMessageHandler h = new PeerNetworkMessageHandler();
+                    var lanIpPrefix = ((StringValue)(Parameters["LanIpPrefix"].ActualValue)).Value;
+                    var contactServerUri = ((StringValue)(Parameters["ContactServerURL"].ActualValue)).Value;
+                    h.Init(lanIpPrefix, contactServerUri);
+                    PeerInfo pi = h.GetPeerInfo();
+                    log.LogMessage(string.Format("Peer is hostet at IP: {0} and port: {1}", pi.IpAddress, pi.Port));
+                    Thread.Sleep(1000 * 20);
+                    log.LogMessage("Current peers within network:");
+                    foreach (var item in h.GetCurrentNetwork())
+                    {
+                        log.LogMessage(string.Format("Peer at {0}:{1}", item.IpAddress, item.Port));
+                    }
+                    int i = 0;
+                    while (i < 10 && !cts.Token.IsCancellationRequested)
+                    {
+                        i++;
+                        Thread.Sleep(1000 * 10);
+                        var message = CreateMessage(pi, i);
+                        Console.WriteLine("Publishing messages...");
+                        h.PublishDataToNetwork(message);
+                        Console.WriteLine("Messages published.");
+                        Console.WriteLine("Recieved messages:");
+                        foreach (var item in h.GetDataFromNetwork())
+                        {
+                            log.LogMessage(string.Format("Message:{0}", GetString(item)));
+                        }
+                        ExecutionTime = DateTime.Now - startTime;
+                        OnExecutionTimeChanged();
+                    }
+                }
+                catch (Exception ex)
+                {
+                    log.LogMessage(ex.Message);
+                    log.LogMessage("press any key to continue...");
+                }
+
+                var run = new Run();
+                var results = new ResultCollection();
+
+                run.Results.Add("Execution Time", new TimeSpanValue(ExecutionTime));
+                run.Results.Add("Log", log);
+
+                runCollection.Add(run);
+
+                stoppedEvent.Set();
+                ExecutionState = HeuristicLab.Core.ExecutionState.Stopped;
+
+                OnExecutionStateChanged();
+                OnStopped();
+            });
+        }
+
+
+        public void Pause()
+        {
+            if (cts != null) cts.Cancel();
+            stoppedEvent.WaitOne();
+
+            ExecutionState = HeuristicLab.Core.ExecutionState.Paused;
+            OnExecutionStateChanged();
+
+            OnPaused();
+        }
+
+        public void Stop()
+        {
+            if (cts != null) cts.Cancel();
+            stoppedEvent.WaitOne();
+
+            ExecutionState = HeuristicLab.Core.ExecutionState.Stopped;
+            OnExecutionStateChanged();
+
+            OnStopped();
+        }
+
+        public event EventHandler Started;
+        protected virtual void OnStarted()
+        {
+            EventHandler handler = Started;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+
+        public event EventHandler Stopped;
+        protected virtual void OnStopped()
+        {
+            EventHandler handler = Stopped;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+
+        public event EventHandler Paused;
+        protected virtual void OnPaused()
+        {
+            EventHandler handler = Paused;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+
+        public event EventHandler Prepared;
+        protected virtual void OnPrepared()
+        {
+            EventHandler handler = Prepared;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+
+
+        public event EventHandler ComputeInParallelChanged;
+        protected virtual void OnComputeInParallelChanged()
+        {
+            EventHandler handler = ComputeInParallelChanged;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+        #endregion
+
+        #region Events
+        public event EventHandler ExecutionTimeChanged;
+        protected virtual void OnExecutionTimeChanged()
+        {
+            EventHandler handler = ExecutionTimeChanged;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+        public event EventHandler ExecutionStateChanged;
+        protected virtual void OnExecutionStateChanged()
+        {
+            EventHandler handler = ExecutionStateChanged;
+            if (handler != null) handler(this, EventArgs.Empty);
+        }
+        #endregion
+
+        public override string ToString()
+        {
+            return Name;
+        }
+
+
+
+        private static byte[][] CreateMessage(PeerInfo pi, int iterationNumber)
+        {
+            string msg1 = string.Concat("Message 1 from Peer ", pi.IpAddress, ":", pi.Port, " at iteration ", iterationNumber);
+            string msg2 = string.Concat("Message 2 from Peer ", pi.IpAddress, ":", pi.Port, " at iteration ", iterationNumber);
+            return new byte[][] { GetBytes(msg1), GetBytes(msg2) };
+        }
+
+        static byte[] GetBytes(string str)
+        {
+            byte[] bytes = new byte[str.Length * sizeof(char)];
+            System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
+            return bytes;
+        }
+
+        static string GetString(byte[] bytes)
+        {
+            char[] chars = new char[bytes.Length / sizeof(char)];
+            System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
+            return new string(chars);
+        }
+
+        public System.Collections.Generic.IEnumerable<IOptimizer> NestedOptimizers
+        {
+            get { return Enumerable.Empty<IOptimizer>(); }
+        }
+
+        public RunCollection Runs
+        {
+            get { return runCollection; }
+        }
+
+        public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
+
     }
-    public P2PTask() {
-      Name = "P2PTask";
-      Description = "P2PTask";
-      runCollection = new RunCollection();
-
-      Parameters.Add(new ValueParameter<StringValue>("LanIpPrefix", "", new StringValue("10.")));
-      Parameters.Add(new ValueParameter<StringValue>("ContactServerURL", "", new StringValue("net.tcp://10.42.1.150:9090/DistributedGA.ContactServer/ContactService")));
-      Parameters.Add(new ValueParameter<Log>("Log", "", new Log()));
-
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    protected virtual void AfterDeserialization() {
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new P2PTask(this, cloner);
-    }
-    #endregion
-
-    #region ITask Members
-    public ExecutionState ExecutionState { get; private set; }
-
-    public TimeSpan ExecutionTime { get; private set; }
-
-    public void Prepare() {
-      Prepare(true);
-    }
-    public void Prepare(bool clearRuns) {
-      // ignore
-      ExecutionState = HeuristicLab.Core.ExecutionState.Prepared;
-      OnExecutionStateChanged();
-      OnPrepared();
-    }
-
-    private CancellationTokenSource cts;
-    private ManualResetEvent stoppedEvent;
-
-    public void Start() {
-      Task.Factory.StartNew(() => {
-        cts = new CancellationTokenSource();
-        stoppedEvent = new ManualResetEvent(false);
-        startTime = DateTime.Now;
-
-        ExecutionState = HeuristicLab.Core.ExecutionState.Started;
-        OnExecutionStateChanged();
-        OnStarted();
-
-        var log = ((Log)(Parameters["Log"].ActualValue));
-
-
-        try {
-
-          log.LogMessage("Starting peer...");
-          IMessageHandler h = new PeerNetworkMessageHandler();
-          var lanIpPrefix = ((StringValue)(Parameters["LanIpPrefix"].ActualValue)).Value;
-          var contactServerUri = ((StringValue)(Parameters["ContactServerURL"].ActualValue)).Value;
-          h.Init(lanIpPrefix, contactServerUri);
-          PeerInfo pi = h.GetPeerInfo();
-          log.LogMessage(string.Format("Peer is hostet at IP: {0} and port: {1}", pi.IpAddress, pi.Port));
-          Thread.Sleep(1000 * 20);
-          log.LogMessage("Current peers within network:");
-          foreach (var item in h.GetCurrentNetwork()) {
-            log.LogMessage(string.Format("Peer at {0}:{1}", item.IpAddress, item.Port));
-          }
-          int i = 1;
-          while (i < 10 && !cts.Token.IsCancellationRequested) {
-            i++;
-            Thread.Sleep(1000 * 10);
-            var pop1 = CreatePopulation();
-            log.LogMessage("Publish population into network...");
-            h.PublishDataToNetwork(pop1);
-            log.LogMessage("Population published.");
-            log.LogMessage("Recieved populations:");
-            foreach (var item in h.GetDataFromNetwork()) {
-              log.LogMessage(string.Format("Population with Quality: {0:2} in Iteration {1}", item.Quality, item.IterationNumber));
-            }
-            ExecutionTime = DateTime.Now - startTime;
-            OnExecutionTimeChanged();
-          }
-        } catch (Exception ex) {
-          log.LogMessage(ex.Message);
-          log.LogMessage("press any key to continue...");
-        }
-
-        var run = new Run();
-        var results = new ResultCollection();
-
-        run.Results.Add("Execution Time", new TimeSpanValue(ExecutionTime));
-        run.Results.Add("Log", log);
-
-        runCollection.Add(run);
-
-        stoppedEvent.Set();
-        ExecutionState = HeuristicLab.Core.ExecutionState.Stopped;
-
-        OnExecutionStateChanged();
-        OnStopped();
-      });
-    }
-
-
-    public void Pause() {
-      if (cts != null) cts.Cancel();
-      stoppedEvent.WaitOne();
-
-      ExecutionState = HeuristicLab.Core.ExecutionState.Paused;
-      OnExecutionStateChanged();
-
-      OnPaused();
-    }
-
-    public void Stop() {
-      if (cts != null) cts.Cancel();
-      stoppedEvent.WaitOne();
-
-      ExecutionState = HeuristicLab.Core.ExecutionState.Stopped;
-      OnExecutionStateChanged();
-
-      OnStopped();
-    }
-
-    public event EventHandler Started;
-    protected virtual void OnStarted() {
-      EventHandler handler = Started;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Stopped;
-    protected virtual void OnStopped() {
-      EventHandler handler = Stopped;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Paused;
-    protected virtual void OnPaused() {
-      EventHandler handler = Paused;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-    public event EventHandler Prepared;
-    protected virtual void OnPrepared() {
-      EventHandler handler = Prepared;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-
-
-    public event EventHandler ComputeInParallelChanged;
-    protected virtual void OnComputeInParallelChanged() {
-      EventHandler handler = ComputeInParallelChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    #endregion
-
-    #region Events
-    public event EventHandler ExecutionTimeChanged;
-    protected virtual void OnExecutionTimeChanged() {
-      EventHandler handler = ExecutionTimeChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler ExecutionStateChanged;
-    protected virtual void OnExecutionStateChanged() {
-      EventHandler handler = ExecutionStateChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    #endregion
-
-    public override string ToString() {
-      return Name;
-    }
-
-
-
-    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 };
-    }
-
-    public System.Collections.Generic.IEnumerable<IOptimizer> NestedOptimizers {
-      get { return Enumerable.Empty<IOptimizer>(); }
-    }
-
-    public RunCollection Runs {
-      get { return runCollection; }
-    }
-
-    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
-
-  }
 }
Index: branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Operator/DistributedGA.Operator.csproj	(revision 13887)
@@ -40,9 +40,10 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Implementation\DefaultMigrationOperator.cs" />
-    <Compile Include="Interface\IMigrationOperator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Folder Include="Implementation\" />
+    <Folder Include="Interface\" />
+  </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\DistributedGA.Core\DistributedGA.Core.csproj">
Index: branches/thasling/DistributedGA/DistributedGA.Operator/Implementation/DefaultMigrationOperator.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Operator/Implementation/DefaultMigrationOperator.cs	(revision 13557)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿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 13557)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿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.Test/Form1.cs
===================================================================
--- branches/thasling/DistributedGA/DistributedGA.Test/Form1.cs	(revision 13557)
+++ branches/thasling/DistributedGA/DistributedGA.Test/Form1.cs	(revision 13887)
@@ -35,15 +35,15 @@
       IMessageHandler h5 = new PeerNetworkMessageHandler();
       h5.Init("", "");
-      var pop1 = CreatePopulation();
-      h1.PublishDataToNetwork(pop1);
-      h1.PublishDataToNetwork(pop1);
-      var res1 = h1.GetDataFromNetwork();
-      var res2 = h2.GetDataFromNetwork();
-      h1.PublishDataToNetwork(pop1);
-      h1.PublishDataToNetwork(pop1);
-      var res3 = h1.GetDataFromNetwork();
-      var res4 = h2.GetDataFromNetwork();
-      h1.PublishDataToNetwork(pop1);
-      h1.PublishDataToNetwork(pop1);
+      //byte[] message = CreateTestMessage();
+      //h1.PublishDataToNetwork(pop1);
+      //h1.PublishDataToNetwork(pop1);
+      //var res1 = h1.GetDataFromNetwork();
+      //var res2 = h2.GetDataFromNetwork();
+      //h1.PublishDataToNetwork(pop1);
+      //h1.PublishDataToNetwork(pop1);
+      //var res3 = h1.GetDataFromNetwork();
+      //var res4 = h2.GetDataFromNetwork();
+      //h1.PublishDataToNetwork(pop1);
+      //h1.PublishDataToNetwork(pop1);
       var res5 = h1.GetDataFromNetwork();
       var res6 = h2.GetDataFromNetwork();
@@ -81,25 +81,4 @@
     }
 
-    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 };
-    }
   }
 }
