Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationExpressionGrammar.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationExpressionGrammar.cs	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationExpressionGrammar.cs	(revision 16565)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -23,10 +23,10 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Attic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 
 namespace HeuristicLab.Problems.ExternalEvaluation.GP {
-  [StorableClass]
+  [StorableType("747A7784-EF15-4CEF-A621-79A9071A69F5")]
   [Item("ExternalEvaluationExpressionGrammar", "Represents a grammar for functional expressions using all available functions.")]
   public class ExternalEvaluationExpressionGrammar : SymbolicExpressionGrammar, ISymbolicDataAnalysisGrammar {
@@ -34,5 +34,5 @@
     private HeuristicLab.Problems.DataAnalysis.Symbolic.Variable variableSymbol;
     [StorableConstructor]
-    protected ExternalEvaluationExpressionGrammar(bool deserializing) : base(deserializing) { }
+    protected ExternalEvaluationExpressionGrammar(StorableConstructorFlag _) : base(_) { }
     protected ExternalEvaluationExpressionGrammar(ExternalEvaluationExpressionGrammar original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeBinaryConverter.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeBinaryConverter.cs	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeBinaryConverter.cs	(revision 16565)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -25,12 +25,14 @@
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Attic;
+using System;
 
 namespace HeuristicLab.Problems.ExternalEvaluation.GP {
-  [Item("SymbolicExpressionTreeBinaryConverter", "Converts a symbolic expression tree into a binary representation by iterating over all nodes in a prefix way. The binary format is defined in HeuristicLab.Persistence.")]
-  [StorableClass]
+  [Item("SymbolicExpressionTreeBinaryConverter", "Converts a symbolic expression tree into a binary representation by prefix iteration over all nodes in the tree. The binary format is defined in HeuristicLab.Persistence.")]
+  [StorableType("E3C9DE32-6EF2-4BA5-AFDF-23AE7D198AC6")]
+  [Obsolete("Use the SymbolicExpressionTreeProtobufConverter instead; The SymbolicExpressionTreeBinaryConverter uses the old serialization format and will be removed in the next major release of HeuristicLab.")]
   public class SymbolicExpressionTreeBinaryConverter : SymbolicExpressionTreeConverter {
     [StorableConstructor]
-    protected SymbolicExpressionTreeBinaryConverter(bool deserializing) : base(deserializing) { }
+    protected SymbolicExpressionTreeBinaryConverter(StorableConstructorFlag _) : base(_) { }
     protected SymbolicExpressionTreeBinaryConverter(SymbolicExpressionTreeBinaryConverter original, Cloner cloner)
       : base(original, cloner) {
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeConverter.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeConverter.cs	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeConverter.cs	(revision 16565)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -24,14 +24,14 @@
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Attic;
 
 namespace HeuristicLab.Problems.ExternalEvaluation.GP {
   [Item("SymbolicExpressionTreeStringConverter", "Abstract base class for symbolic expression tree converters.")]
-  [StorableClass]
+  [StorableType("AA6D2726-06C7-4E12-92EC-24BFADAE7402")]
   public abstract class SymbolicExpressionTreeConverter : Item, IItemToSolutionMessageConverter {
     private static readonly Type[] itemTypes = new Type[] { typeof(SymbolicExpressionTree) };
 
     [StorableConstructor]
-    protected SymbolicExpressionTreeConverter(bool deserializing) : base(deserializing) { }
+    protected SymbolicExpressionTreeConverter(StorableConstructorFlag _) : base(_) { }
     protected SymbolicExpressionTreeConverter(SymbolicExpressionTreeConverter original, Cloner cloner)
       : base(original, cloner) {
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringConverter.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringConverter.cs	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringConverter.cs	(revision 16565)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -24,14 +24,14 @@
 using HeuristicLab.Core;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Attic;
 
 namespace HeuristicLab.Problems.ExternalEvaluation.GP {
   [Item("SymbolicExpressionTreeStringConverter", "Converts a symbolic expression tree into a string representation by iterating over all nodes in a prefix way. The string is added to the SolutionMessage's StringVars.")]
-  [StorableClass]
+  [StorableType("0C11DC1E-D6A3-4BDB-A236-132D855F3A45")]
   public class SymbolicExpressionTreeStringConverter : SymbolicExpressionTreeConverter {
     private ExternalEvaluationSymbolicExpressionTreeStringFormatter formatter;
 
     [StorableConstructor]
-    protected SymbolicExpressionTreeStringConverter(bool deserializing) : base(deserializing) { }
+    protected SymbolicExpressionTreeStringConverter(StorableConstructorFlag _) : base(_) { }
     protected SymbolicExpressionTreeStringConverter(SymbolicExpressionTreeStringConverter original, Cloner cloner)
       : base(original, cloner) {
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringFormatter.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringFormatter.cs	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/ExternalEvaluationSymbolicExpressionTreeStringFormatter.cs	(revision 16565)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -24,5 +24,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Common;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Attic;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
@@ -33,5 +33,5 @@
 
   [Item("ExternalEvaluationSymbolicExpressionTreeStringFormatter", "A string formatter for symbolic expression trees for external evaluation.")]
-  [StorableClass]
+  [StorableType("6621B850-D3F2-4824-B6A8-19F4969AFB44")]
   public class ExternalEvaluationSymbolicExpressionTreeStringFormatter : NamedItem, ISymbolicExpressionTreeStringFormatter {
 
@@ -39,5 +39,5 @@
 
     [StorableConstructor]
-    protected ExternalEvaluationSymbolicExpressionTreeStringFormatter(bool deserializing) : base(deserializing) { }
+    protected ExternalEvaluationSymbolicExpressionTreeStringFormatter(StorableConstructorFlag _) : base(_) { }
     protected ExternalEvaluationSymbolicExpressionTreeStringFormatter(ExternalEvaluationSymbolicExpressionTreeStringFormatter original, Cloner cloner)
       : base(original, cloner) {
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/HeuristicLab.Problems.ExternalEvaluation.GP-3.5.csproj
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/HeuristicLab.Problems.ExternalEvaluation.GP-3.5.csproj	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/HeuristicLab.Problems.ExternalEvaluation.GP-3.5.csproj	(revision 16565)
@@ -11,5 +11,5 @@
     <RootNamespace>HeuristicLab.Problems.ExternalEvaluation.GP</RootNamespace>
     <AssemblyName>HeuristicLab.Problems.ExternalEvaluation.GP-3.5</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
     <TargetFrameworkProfile>
     </TargetFrameworkProfile>
@@ -101,7 +101,13 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Google.Protobuf, Version=3.6.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath>
+    </Reference>
     <Reference Include="Google.ProtocolBuffers-2.4.1.473, Version=2.4.1.473, Culture=neutral, PublicKeyToken=17b3b1f090c3ea48, processorArchitecture=MSIL">
       <HintPath>..\..\bin\Google.ProtocolBuffers-2.4.1.473.dll</HintPath>
       <Private>False</Private>
+    </Reference>
+    <Reference Include="HEAL.Attic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\HEAL.Attic.1.0.0-pre01\lib\netstandard2.0\HEAL.Attic.dll</HintPath>
     </Reference>
     <Reference Include="System" />
@@ -110,4 +116,7 @@
     </Reference>
     <Reference Include="System.Drawing" />
+    <Reference Include="System.Drawing.Common, Version=4.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\System.Drawing.Common.4.5.1\lib\net461\System.Drawing.Common.dll</HintPath>
+    </Reference>
     <Reference Include="System.Xml.Linq">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -120,6 +129,8 @@
   </ItemGroup>
   <ItemGroup>
+    <None Include="packages.config" />
     <None Include="Plugin.cs.frame" />
     <Compile Include="ExternalEvaluationExpressionGrammar.cs" />
+    <Compile Include="SymbolicExpressionTreeProtobufConverter.cs" />
     <Compile Include="ExternalEvaluationSymbolicExpressionTreeBinaryConverter.cs" />
     <Compile Include="ExternalEvaluationSymbolicExpressionTreeConverter.cs" />
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/Plugin.cs.frame
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/Plugin.cs.frame	(revision 16430)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/Plugin.cs.frame	(revision 16565)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/SymbolicExpressionTreeProtobufConverter.cs
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/SymbolicExpressionTreeProtobufConverter.cs	(revision 16565)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/SymbolicExpressionTreeProtobufConverter.cs	(revision 16565)
@@ -0,0 +1,55 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.IO;
+using Google.ProtocolBuffers;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HEAL.Attic;
+
+namespace HeuristicLab.Problems.ExternalEvaluation.GP {
+  [Item("SymbolicExpressionTreeProtobufConverter", "Converts a symbolic expression tree into a binary representation. The binary format is based on Google.Protobuf and defined in HeuristicLab.Persistence.")]
+  [StorableType("95569F3E-0953-472E-BC20-78DBD6E572D6")]
+  public class SymbolicExpressionTreeProtobufConverter : SymbolicExpressionTreeConverter {
+    [StorableConstructor]
+    protected SymbolicExpressionTreeProtobufConverter(StorableConstructorFlag _) : base(_) { }
+    protected SymbolicExpressionTreeProtobufConverter(SymbolicExpressionTreeProtobufConverter original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicExpressionTreeProtobufConverter(this, cloner);
+    }
+    public SymbolicExpressionTreeProtobufConverter() : base() { }
+
+    protected override void ConvertSymbolicExpressionTree(SymbolicExpressionTree tree, string name, SolutionMessage.Builder builder) {
+      using (MemoryStream memoryStream = new MemoryStream()) {
+        var ser = new ProtoBufSerializer();
+        ser.Serialize(tree, memoryStream, disposeStream: false);
+        memoryStream.Flush();
+        byte[] byteRep = memoryStream.ToArray();
+        SolutionMessage.Types.RawVariable.Builder rawVariable = SolutionMessage.Types.RawVariable.CreateBuilder();
+        rawVariable.SetName(name).SetData(ByteString.CopyFrom(byteRep));
+        builder.AddRawVars(rawVariable.Build());
+      }
+    }
+  }
+}
Index: trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/packages.config
===================================================================
--- trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/packages.config	(revision 16565)
+++ trunk/HeuristicLab.Problems.ExternalEvaluation.GP/3.5/packages.config	(revision 16565)
@@ -0,0 +1,6 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Google.Protobuf" version="3.6.1" targetFramework="net461" />
+  <package id="HEAL.Attic" version="1.0.0-pre01" targetFramework="net461" />
+  <package id="System.Drawing.Common" version="4.5.1" targetFramework="net461" />
+</packages>
