diff --git a/ModeliRpc.proto b/ModeliRpc.proto
index bda63be726d5818ca322f17ac55425170b2392fa..9abe80c29169a522489541c20b5e3e3b2ce7882c 100644
--- a/ModeliRpc.proto
+++ b/ModeliRpc.proto
@@ -22,7 +22,10 @@ service ModeliBackend {
     rpc RemoveChannelLink (RemoveChannelLinkRequest) returns (RemoveChannelLinkResponse);
     
     // Transfer settable channel values
-    rpc SetValues (SetValuesReqest) returns (SetValuesResponse);
+    rpc SetInt (SetIntRequest) returns (SetIntResponse);
+    rpc SetReal (SetRealRequest) returns (SetRealResponse);
+    rpc SetBool (SetBoolRequest) returns (SetBoolResponse);
+    rpc SetString (SetStringRequest) returns (SetStringResponse);
     
     // Stream simulation results to the client
     rpc NewValues (NewValuesRequest) returns (stream NewValuesResponse);
@@ -41,16 +44,23 @@ enum Fmi2Status {
 }
 
 // Contains values from and for the fmu
-message Values {
-    string instance_name =  1;
-    repeated uint32 int_vrs = 2;
-    repeated int32 int_values = 3;
-    repeated uint32 real_vrs = 4;
-    repeated double real_values = 5;
-    repeated uint32 bool_vrs = 6;
-    repeated int32 bool_values = 7;     // fmi2Bool = int32 (0 = false, 1 = true)
-    repeated uint32 string_vrs = 8;
-    repeated string string_values = 9;
+message IntValues {   
+    repeated uint32 valueRefs = 1;
+    repeated int32 values = 2;
+}
+
+message RealValues {
+    repeated uint32 valueRefs = 1;
+    repeated double values = 2;
+}
+
+message BoolValues {
+    repeated uint32 valueRefs = 1;
+    repeated int32 values = 2;  // Fmi2 standard encodes bools as int (1: true, 0: false)
+}
+message StringValues {
+    repeated uint32 valueRefs = 1;
+    repeated string values = 2;
 }
 
 // The metadata of a ChannelLink
@@ -121,19 +131,50 @@ message RemoveChannelLinkResponse {
     bool success = 1;
 }
 
-message SetValuesReqest {
-    Values values = 1;
+message SetIntRequest {
+    string instance_name =  1;
+    IntValues values = 2;
+}
+
+message SetIntResponse {
+    Fmi2Status status = 1;
+}
+
+message SetRealRequest {
+    string instance_name =  1;
+    RealValues values = 2;
+}
+
+message SetRealResponse {
+    Fmi2Status status = 1;
+}
+
+message SetBoolRequest {
+    string instance_name =  1;
+    BoolValues values = 2;
+}
+
+message SetBoolResponse {
+    Fmi2Status status = 1;
+}
+
+message SetStringRequest {
+    string instance_name =  1;
+    StringValues values = 2;
 }
 
-message SetValuesResponse {
+message SetStringResponse {
     Fmi2Status status = 1;
 }
 
 message NewValuesRequest {}
 
 message NewValuesResponse {
-    Values values = 1;
-    double timestamp = 2;
+    double timestamp = 1;
+    IntValues intValues = 2;
+    RealValues realValues = 3;
+    BoolValues boolValues = 4;
+    StringValues stringValues = 5;
 }
 
 message LogRequest {}
diff --git a/ModeliRpc_Cpp/ModeliRpc.grpc.pb.cc b/ModeliRpc_Cpp/ModeliRpc.grpc.pb.cc
index f96c5af1d67fb7bf333fd90a1e3ebb02f4374115..a118618a34646e18cd07c7a7f4e1f0b1f1a7f182 100644
--- a/ModeliRpc_Cpp/ModeliRpc.grpc.pb.cc
+++ b/ModeliRpc_Cpp/ModeliRpc.grpc.pb.cc
@@ -24,7 +24,10 @@ static const char* ModeliBackend_method_names[] = {
   "/ModeliRpc.ModeliBackend/RemoveFmu",
   "/ModeliRpc.ModeliBackend/AddChannelLink",
   "/ModeliRpc.ModeliBackend/RemoveChannelLink",
-  "/ModeliRpc.ModeliBackend/SetValues",
+  "/ModeliRpc.ModeliBackend/SetInt",
+  "/ModeliRpc.ModeliBackend/SetReal",
+  "/ModeliRpc.ModeliBackend/SetBool",
+  "/ModeliRpc.ModeliBackend/SetString",
   "/ModeliRpc.ModeliBackend/NewValues",
   "/ModeliRpc.ModeliBackend/Log",
 };
@@ -44,9 +47,12 @@ ModeliBackend::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chan
   , rpcmethod_RemoveFmu_(ModeliBackend_method_names[5], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
   , rpcmethod_AddChannelLink_(ModeliBackend_method_names[6], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
   , rpcmethod_RemoveChannelLink_(ModeliBackend_method_names[7], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
-  , rpcmethod_SetValues_(ModeliBackend_method_names[8], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
-  , rpcmethod_NewValues_(ModeliBackend_method_names[9], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
-  , rpcmethod_Log_(ModeliBackend_method_names[10], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
+  , rpcmethod_SetInt_(ModeliBackend_method_names[8], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_SetReal_(ModeliBackend_method_names[9], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_SetBool_(ModeliBackend_method_names[10], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_SetString_(ModeliBackend_method_names[11], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_NewValues_(ModeliBackend_method_names[12], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
+  , rpcmethod_Log_(ModeliBackend_method_names[13], ::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
   {}
 
 ::grpc::Status ModeliBackend::Stub::Play(::grpc::ClientContext* context, const ::ModeliRpc::PlayRequest& request, ::ModeliRpc::PlayResponse* response) {
@@ -145,16 +151,52 @@ ModeliBackend::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& chan
   return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::RemoveChannelLinkResponse>::Create(channel_.get(), cq, rpcmethod_RemoveChannelLink_, context, request, false);
 }
 
-::grpc::Status ModeliBackend::Stub::SetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::ModeliRpc::SetValuesResponse* response) {
-  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetValues_, context, request, response);
+::grpc::Status ModeliBackend::Stub::SetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::ModeliRpc::SetIntResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetInt_, context, request, response);
 }
 
-::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>* ModeliBackend::Stub::AsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetValuesResponse>::Create(channel_.get(), cq, rpcmethod_SetValues_, context, request, true);
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>* ModeliBackend::Stub::AsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetIntResponse>::Create(channel_.get(), cq, rpcmethod_SetInt_, context, request, true);
 }
 
-::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>* ModeliBackend::Stub::PrepareAsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetValuesResponse>::Create(channel_.get(), cq, rpcmethod_SetValues_, context, request, false);
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>* ModeliBackend::Stub::PrepareAsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetIntResponse>::Create(channel_.get(), cq, rpcmethod_SetInt_, context, request, false);
+}
+
+::grpc::Status ModeliBackend::Stub::SetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::ModeliRpc::SetRealResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetReal_, context, request, response);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>* ModeliBackend::Stub::AsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetRealResponse>::Create(channel_.get(), cq, rpcmethod_SetReal_, context, request, true);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>* ModeliBackend::Stub::PrepareAsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetRealResponse>::Create(channel_.get(), cq, rpcmethod_SetReal_, context, request, false);
+}
+
+::grpc::Status ModeliBackend::Stub::SetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::ModeliRpc::SetBoolResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetBool_, context, request, response);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>* ModeliBackend::Stub::AsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetBoolResponse>::Create(channel_.get(), cq, rpcmethod_SetBool_, context, request, true);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>* ModeliBackend::Stub::PrepareAsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetBoolResponse>::Create(channel_.get(), cq, rpcmethod_SetBool_, context, request, false);
+}
+
+::grpc::Status ModeliBackend::Stub::SetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::ModeliRpc::SetStringResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetString_, context, request, response);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>* ModeliBackend::Stub::AsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetStringResponse>::Create(channel_.get(), cq, rpcmethod_SetString_, context, request, true);
+}
+
+::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>* ModeliBackend::Stub::PrepareAsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc::internal::ClientAsyncResponseReaderFactory< ::ModeliRpc::SetStringResponse>::Create(channel_.get(), cq, rpcmethod_SetString_, context, request, false);
 }
 
 ::grpc::ClientReader< ::ModeliRpc::NewValuesResponse>* ModeliBackend::Stub::NewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request) {
@@ -225,15 +267,30 @@ ModeliBackend::Service::Service() {
   AddMethod(new ::grpc::internal::RpcServiceMethod(
       ModeliBackend_method_names[8],
       ::grpc::internal::RpcMethod::NORMAL_RPC,
-      new ::grpc::internal::RpcMethodHandler< ModeliBackend::Service, ::ModeliRpc::SetValuesReqest, ::ModeliRpc::SetValuesResponse>(
-          std::mem_fn(&ModeliBackend::Service::SetValues), this)));
+      new ::grpc::internal::RpcMethodHandler< ModeliBackend::Service, ::ModeliRpc::SetIntRequest, ::ModeliRpc::SetIntResponse>(
+          std::mem_fn(&ModeliBackend::Service::SetInt), this)));
   AddMethod(new ::grpc::internal::RpcServiceMethod(
       ModeliBackend_method_names[9],
+      ::grpc::internal::RpcMethod::NORMAL_RPC,
+      new ::grpc::internal::RpcMethodHandler< ModeliBackend::Service, ::ModeliRpc::SetRealRequest, ::ModeliRpc::SetRealResponse>(
+          std::mem_fn(&ModeliBackend::Service::SetReal), this)));
+  AddMethod(new ::grpc::internal::RpcServiceMethod(
+      ModeliBackend_method_names[10],
+      ::grpc::internal::RpcMethod::NORMAL_RPC,
+      new ::grpc::internal::RpcMethodHandler< ModeliBackend::Service, ::ModeliRpc::SetBoolRequest, ::ModeliRpc::SetBoolResponse>(
+          std::mem_fn(&ModeliBackend::Service::SetBool), this)));
+  AddMethod(new ::grpc::internal::RpcServiceMethod(
+      ModeliBackend_method_names[11],
+      ::grpc::internal::RpcMethod::NORMAL_RPC,
+      new ::grpc::internal::RpcMethodHandler< ModeliBackend::Service, ::ModeliRpc::SetStringRequest, ::ModeliRpc::SetStringResponse>(
+          std::mem_fn(&ModeliBackend::Service::SetString), this)));
+  AddMethod(new ::grpc::internal::RpcServiceMethod(
+      ModeliBackend_method_names[12],
       ::grpc::internal::RpcMethod::SERVER_STREAMING,
       new ::grpc::internal::ServerStreamingHandler< ModeliBackend::Service, ::ModeliRpc::NewValuesRequest, ::ModeliRpc::NewValuesResponse>(
           std::mem_fn(&ModeliBackend::Service::NewValues), this)));
   AddMethod(new ::grpc::internal::RpcServiceMethod(
-      ModeliBackend_method_names[10],
+      ModeliBackend_method_names[13],
       ::grpc::internal::RpcMethod::SERVER_STREAMING,
       new ::grpc::internal::ServerStreamingHandler< ModeliBackend::Service, ::ModeliRpc::LogRequest, ::ModeliRpc::LogResponse>(
           std::mem_fn(&ModeliBackend::Service::Log), this)));
@@ -298,7 +355,28 @@ ModeliBackend::Service::~Service() {
   return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 }
 
-::grpc::Status ModeliBackend::Service::SetValues(::grpc::ServerContext* context, const ::ModeliRpc::SetValuesReqest* request, ::ModeliRpc::SetValuesResponse* response) {
+::grpc::Status ModeliBackend::Service::SetInt(::grpc::ServerContext* context, const ::ModeliRpc::SetIntRequest* request, ::ModeliRpc::SetIntResponse* response) {
+  (void) context;
+  (void) request;
+  (void) response;
+  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
+::grpc::Status ModeliBackend::Service::SetReal(::grpc::ServerContext* context, const ::ModeliRpc::SetRealRequest* request, ::ModeliRpc::SetRealResponse* response) {
+  (void) context;
+  (void) request;
+  (void) response;
+  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
+::grpc::Status ModeliBackend::Service::SetBool(::grpc::ServerContext* context, const ::ModeliRpc::SetBoolRequest* request, ::ModeliRpc::SetBoolResponse* response) {
+  (void) context;
+  (void) request;
+  (void) response;
+  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
+::grpc::Status ModeliBackend::Service::SetString(::grpc::ServerContext* context, const ::ModeliRpc::SetStringRequest* request, ::ModeliRpc::SetStringResponse* response) {
   (void) context;
   (void) request;
   (void) response;
diff --git a/ModeliRpc_Cpp/ModeliRpc.grpc.pb.h b/ModeliRpc_Cpp/ModeliRpc.grpc.pb.h
index 4ae86f36a4f30ace6e6759426dd82b83df50c086..d45f8a21ca1eaa91235454113909ff06dc0c527b 100644
--- a/ModeliRpc_Cpp/ModeliRpc.grpc.pb.h
+++ b/ModeliRpc_Cpp/ModeliRpc.grpc.pb.h
@@ -100,12 +100,33 @@ class ModeliBackend final {
       return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::RemoveChannelLinkResponse>>(PrepareAsyncRemoveChannelLinkRaw(context, request, cq));
     }
     // Transfer settable channel values
-    virtual ::grpc::Status SetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::ModeliRpc::SetValuesResponse* response) = 0;
-    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>> AsyncSetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>>(AsyncSetValuesRaw(context, request, cq));
+    virtual ::grpc::Status SetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::ModeliRpc::SetIntResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>> AsyncSetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>>(AsyncSetIntRaw(context, request, cq));
     }
-    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>> PrepareAsyncSetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>>(PrepareAsyncSetValuesRaw(context, request, cq));
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>> PrepareAsyncSetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>>(PrepareAsyncSetIntRaw(context, request, cq));
+    }
+    virtual ::grpc::Status SetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::ModeliRpc::SetRealResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>> AsyncSetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>>(AsyncSetRealRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>> PrepareAsyncSetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>>(PrepareAsyncSetRealRaw(context, request, cq));
+    }
+    virtual ::grpc::Status SetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::ModeliRpc::SetBoolResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>> AsyncSetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>>(AsyncSetBoolRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>> PrepareAsyncSetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>>(PrepareAsyncSetBoolRaw(context, request, cq));
+    }
+    virtual ::grpc::Status SetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::ModeliRpc::SetStringResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>> AsyncSetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>>(AsyncSetStringRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>> PrepareAsyncSetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>>(PrepareAsyncSetStringRaw(context, request, cq));
     }
     // Stream simulation results to the client
     std::unique_ptr< ::grpc::ClientReaderInterface< ::ModeliRpc::NewValuesResponse>> NewValues(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request) {
@@ -145,8 +166,14 @@ class ModeliBackend final {
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::AddChannelLinkResponse>* PrepareAsyncAddChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::AddChannelLinkRequest& request, ::grpc::CompletionQueue* cq) = 0;
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::RemoveChannelLinkResponse>* AsyncRemoveChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::RemoveChannelLinkRequest& request, ::grpc::CompletionQueue* cq) = 0;
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::RemoveChannelLinkResponse>* PrepareAsyncRemoveChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::RemoveChannelLinkRequest& request, ::grpc::CompletionQueue* cq) = 0;
-    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>* AsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) = 0;
-    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetValuesResponse>* PrepareAsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>* AsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetIntResponse>* PrepareAsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>* AsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetRealResponse>* PrepareAsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>* AsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetBoolResponse>* PrepareAsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>* AsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::ModeliRpc::SetStringResponse>* PrepareAsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) = 0;
     virtual ::grpc::ClientReaderInterface< ::ModeliRpc::NewValuesResponse>* NewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request) = 0;
     virtual ::grpc::ClientAsyncReaderInterface< ::ModeliRpc::NewValuesResponse>* AsyncNewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
     virtual ::grpc::ClientAsyncReaderInterface< ::ModeliRpc::NewValuesResponse>* PrepareAsyncNewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request, ::grpc::CompletionQueue* cq) = 0;
@@ -215,12 +242,33 @@ class ModeliBackend final {
     std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::RemoveChannelLinkResponse>> PrepareAsyncRemoveChannelLink(::grpc::ClientContext* context, const ::ModeliRpc::RemoveChannelLinkRequest& request, ::grpc::CompletionQueue* cq) {
       return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::RemoveChannelLinkResponse>>(PrepareAsyncRemoveChannelLinkRaw(context, request, cq));
     }
-    ::grpc::Status SetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::ModeliRpc::SetValuesResponse* response) override;
-    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>> AsyncSetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>>(AsyncSetValuesRaw(context, request, cq));
+    ::grpc::Status SetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::ModeliRpc::SetIntResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>> AsyncSetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>>(AsyncSetIntRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>> PrepareAsyncSetInt(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>>(PrepareAsyncSetIntRaw(context, request, cq));
+    }
+    ::grpc::Status SetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::ModeliRpc::SetRealResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>> AsyncSetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>>(AsyncSetRealRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>> PrepareAsyncSetReal(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>>(PrepareAsyncSetRealRaw(context, request, cq));
     }
-    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>> PrepareAsyncSetValues(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) {
-      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>>(PrepareAsyncSetValuesRaw(context, request, cq));
+    ::grpc::Status SetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::ModeliRpc::SetBoolResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>> AsyncSetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>>(AsyncSetBoolRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>> PrepareAsyncSetBool(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>>(PrepareAsyncSetBoolRaw(context, request, cq));
+    }
+    ::grpc::Status SetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::ModeliRpc::SetStringResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>> AsyncSetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>>(AsyncSetStringRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>> PrepareAsyncSetString(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>>(PrepareAsyncSetStringRaw(context, request, cq));
     }
     std::unique_ptr< ::grpc::ClientReader< ::ModeliRpc::NewValuesResponse>> NewValues(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request) {
       return std::unique_ptr< ::grpc::ClientReader< ::ModeliRpc::NewValuesResponse>>(NewValuesRaw(context, request));
@@ -260,8 +308,14 @@ class ModeliBackend final {
     ::grpc::ClientAsyncResponseReader< ::ModeliRpc::AddChannelLinkResponse>* PrepareAsyncAddChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::AddChannelLinkRequest& request, ::grpc::CompletionQueue* cq) override;
     ::grpc::ClientAsyncResponseReader< ::ModeliRpc::RemoveChannelLinkResponse>* AsyncRemoveChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::RemoveChannelLinkRequest& request, ::grpc::CompletionQueue* cq) override;
     ::grpc::ClientAsyncResponseReader< ::ModeliRpc::RemoveChannelLinkResponse>* PrepareAsyncRemoveChannelLinkRaw(::grpc::ClientContext* context, const ::ModeliRpc::RemoveChannelLinkRequest& request, ::grpc::CompletionQueue* cq) override;
-    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>* AsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) override;
-    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetValuesResponse>* PrepareAsyncSetValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetValuesReqest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>* AsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetIntResponse>* PrepareAsyncSetIntRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetIntRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>* AsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetRealResponse>* PrepareAsyncSetRealRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetRealRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>* AsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetBoolResponse>* PrepareAsyncSetBoolRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetBoolRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>* AsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::ModeliRpc::SetStringResponse>* PrepareAsyncSetStringRaw(::grpc::ClientContext* context, const ::ModeliRpc::SetStringRequest& request, ::grpc::CompletionQueue* cq) override;
     ::grpc::ClientReader< ::ModeliRpc::NewValuesResponse>* NewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request) override;
     ::grpc::ClientAsyncReader< ::ModeliRpc::NewValuesResponse>* AsyncNewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
     ::grpc::ClientAsyncReader< ::ModeliRpc::NewValuesResponse>* PrepareAsyncNewValuesRaw(::grpc::ClientContext* context, const ::ModeliRpc::NewValuesRequest& request, ::grpc::CompletionQueue* cq) override;
@@ -276,7 +330,10 @@ class ModeliBackend final {
     const ::grpc::internal::RpcMethod rpcmethod_RemoveFmu_;
     const ::grpc::internal::RpcMethod rpcmethod_AddChannelLink_;
     const ::grpc::internal::RpcMethod rpcmethod_RemoveChannelLink_;
-    const ::grpc::internal::RpcMethod rpcmethod_SetValues_;
+    const ::grpc::internal::RpcMethod rpcmethod_SetInt_;
+    const ::grpc::internal::RpcMethod rpcmethod_SetReal_;
+    const ::grpc::internal::RpcMethod rpcmethod_SetBool_;
+    const ::grpc::internal::RpcMethod rpcmethod_SetString_;
     const ::grpc::internal::RpcMethod rpcmethod_NewValues_;
     const ::grpc::internal::RpcMethod rpcmethod_Log_;
   };
@@ -299,7 +356,10 @@ class ModeliBackend final {
     virtual ::grpc::Status AddChannelLink(::grpc::ServerContext* context, const ::ModeliRpc::AddChannelLinkRequest* request, ::ModeliRpc::AddChannelLinkResponse* response);
     virtual ::grpc::Status RemoveChannelLink(::grpc::ServerContext* context, const ::ModeliRpc::RemoveChannelLinkRequest* request, ::ModeliRpc::RemoveChannelLinkResponse* response);
     // Transfer settable channel values
-    virtual ::grpc::Status SetValues(::grpc::ServerContext* context, const ::ModeliRpc::SetValuesReqest* request, ::ModeliRpc::SetValuesResponse* response);
+    virtual ::grpc::Status SetInt(::grpc::ServerContext* context, const ::ModeliRpc::SetIntRequest* request, ::ModeliRpc::SetIntResponse* response);
+    virtual ::grpc::Status SetReal(::grpc::ServerContext* context, const ::ModeliRpc::SetRealRequest* request, ::ModeliRpc::SetRealResponse* response);
+    virtual ::grpc::Status SetBool(::grpc::ServerContext* context, const ::ModeliRpc::SetBoolRequest* request, ::ModeliRpc::SetBoolResponse* response);
+    virtual ::grpc::Status SetString(::grpc::ServerContext* context, const ::ModeliRpc::SetStringRequest* request, ::ModeliRpc::SetStringResponse* response);
     // Stream simulation results to the client
     virtual ::grpc::Status NewValues(::grpc::ServerContext* context, const ::ModeliRpc::NewValuesRequest* request, ::grpc::ServerWriter< ::ModeliRpc::NewValuesResponse>* writer);
     // Stream log messages to the client
@@ -466,32 +526,92 @@ class ModeliBackend final {
     }
   };
   template <class BaseClass>
-  class WithAsyncMethod_SetValues : public BaseClass {
+  class WithAsyncMethod_SetInt : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
-    WithAsyncMethod_SetValues() {
+    WithAsyncMethod_SetInt() {
       ::grpc::Service::MarkMethodAsync(8);
     }
-    ~WithAsyncMethod_SetValues() override {
+    ~WithAsyncMethod_SetInt() override {
       BaseClassMustBeDerivedFromService(this);
     }
     // disable synchronous version of this method
-    ::grpc::Status SetValues(::grpc::ServerContext* context, const ::ModeliRpc::SetValuesReqest* request, ::ModeliRpc::SetValuesResponse* response) final override {
+    ::grpc::Status SetInt(::grpc::ServerContext* context, const ::ModeliRpc::SetIntRequest* request, ::ModeliRpc::SetIntResponse* response) final override {
       abort();
       return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
     }
-    void RequestSetValues(::grpc::ServerContext* context, ::ModeliRpc::SetValuesReqest* request, ::grpc::ServerAsyncResponseWriter< ::ModeliRpc::SetValuesResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+    void RequestSetInt(::grpc::ServerContext* context, ::ModeliRpc::SetIntRequest* request, ::grpc::ServerAsyncResponseWriter< ::ModeliRpc::SetIntResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
       ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
     }
   };
   template <class BaseClass>
+  class WithAsyncMethod_SetReal : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_SetReal() {
+      ::grpc::Service::MarkMethodAsync(9);
+    }
+    ~WithAsyncMethod_SetReal() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetReal(::grpc::ServerContext* context, const ::ModeliRpc::SetRealRequest* request, ::ModeliRpc::SetRealResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestSetReal(::grpc::ServerContext* context, ::ModeliRpc::SetRealRequest* request, ::grpc::ServerAsyncResponseWriter< ::ModeliRpc::SetRealResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(9, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_SetBool : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_SetBool() {
+      ::grpc::Service::MarkMethodAsync(10);
+    }
+    ~WithAsyncMethod_SetBool() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetBool(::grpc::ServerContext* context, const ::ModeliRpc::SetBoolRequest* request, ::ModeliRpc::SetBoolResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestSetBool(::grpc::ServerContext* context, ::ModeliRpc::SetBoolRequest* request, ::grpc::ServerAsyncResponseWriter< ::ModeliRpc::SetBoolResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(10, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_SetString : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithAsyncMethod_SetString() {
+      ::grpc::Service::MarkMethodAsync(11);
+    }
+    ~WithAsyncMethod_SetString() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetString(::grpc::ServerContext* context, const ::ModeliRpc::SetStringRequest* request, ::ModeliRpc::SetStringResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestSetString(::grpc::ServerContext* context, ::ModeliRpc::SetStringRequest* request, ::grpc::ServerAsyncResponseWriter< ::ModeliRpc::SetStringResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
   class WithAsyncMethod_NewValues : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithAsyncMethod_NewValues() {
-      ::grpc::Service::MarkMethodAsync(9);
+      ::grpc::Service::MarkMethodAsync(12);
     }
     ~WithAsyncMethod_NewValues() override {
       BaseClassMustBeDerivedFromService(this);
@@ -502,7 +622,7 @@ class ModeliBackend final {
       return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
     }
     void RequestNewValues(::grpc::ServerContext* context, ::ModeliRpc::NewValuesRequest* request, ::grpc::ServerAsyncWriter< ::ModeliRpc::NewValuesResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
-      ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag);
+      ::grpc::Service::RequestAsyncServerStreaming(12, context, request, writer, new_call_cq, notification_cq, tag);
     }
   };
   template <class BaseClass>
@@ -511,7 +631,7 @@ class ModeliBackend final {
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithAsyncMethod_Log() {
-      ::grpc::Service::MarkMethodAsync(10);
+      ::grpc::Service::MarkMethodAsync(13);
     }
     ~WithAsyncMethod_Log() override {
       BaseClassMustBeDerivedFromService(this);
@@ -522,10 +642,10 @@ class ModeliBackend final {
       return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
     }
     void RequestLog(::grpc::ServerContext* context, ::ModeliRpc::LogRequest* request, ::grpc::ServerAsyncWriter< ::ModeliRpc::LogResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
-      ::grpc::Service::RequestAsyncServerStreaming(10, context, request, writer, new_call_cq, notification_cq, tag);
+      ::grpc::Service::RequestAsyncServerStreaming(13, context, request, writer, new_call_cq, notification_cq, tag);
     }
   };
-  typedef WithAsyncMethod_Play<WithAsyncMethod_PlayFast<WithAsyncMethod_Pause<WithAsyncMethod_Stop<WithAsyncMethod_AddFmu<WithAsyncMethod_RemoveFmu<WithAsyncMethod_AddChannelLink<WithAsyncMethod_RemoveChannelLink<WithAsyncMethod_SetValues<WithAsyncMethod_NewValues<WithAsyncMethod_Log<Service > > > > > > > > > > > AsyncService;
+  typedef WithAsyncMethod_Play<WithAsyncMethod_PlayFast<WithAsyncMethod_Pause<WithAsyncMethod_Stop<WithAsyncMethod_AddFmu<WithAsyncMethod_RemoveFmu<WithAsyncMethod_AddChannelLink<WithAsyncMethod_RemoveChannelLink<WithAsyncMethod_SetInt<WithAsyncMethod_SetReal<WithAsyncMethod_SetBool<WithAsyncMethod_SetString<WithAsyncMethod_NewValues<WithAsyncMethod_Log<Service > > > > > > > > > > > > > > AsyncService;
   template <class BaseClass>
   class WithGenericMethod_Play : public BaseClass {
    private:
@@ -663,18 +783,69 @@ class ModeliBackend final {
     }
   };
   template <class BaseClass>
-  class WithGenericMethod_SetValues : public BaseClass {
+  class WithGenericMethod_SetInt : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
-    WithGenericMethod_SetValues() {
+    WithGenericMethod_SetInt() {
       ::grpc::Service::MarkMethodGeneric(8);
     }
-    ~WithGenericMethod_SetValues() override {
+    ~WithGenericMethod_SetInt() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetInt(::grpc::ServerContext* context, const ::ModeliRpc::SetIntRequest* request, ::ModeliRpc::SetIntResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
+  class WithGenericMethod_SetReal : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_SetReal() {
+      ::grpc::Service::MarkMethodGeneric(9);
+    }
+    ~WithGenericMethod_SetReal() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetReal(::grpc::ServerContext* context, const ::ModeliRpc::SetRealRequest* request, ::ModeliRpc::SetRealResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
+  class WithGenericMethod_SetBool : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_SetBool() {
+      ::grpc::Service::MarkMethodGeneric(10);
+    }
+    ~WithGenericMethod_SetBool() override {
       BaseClassMustBeDerivedFromService(this);
     }
     // disable synchronous version of this method
-    ::grpc::Status SetValues(::grpc::ServerContext* context, const ::ModeliRpc::SetValuesReqest* request, ::ModeliRpc::SetValuesResponse* response) final override {
+    ::grpc::Status SetBool(::grpc::ServerContext* context, const ::ModeliRpc::SetBoolRequest* request, ::ModeliRpc::SetBoolResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
+  class WithGenericMethod_SetString : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithGenericMethod_SetString() {
+      ::grpc::Service::MarkMethodGeneric(11);
+    }
+    ~WithGenericMethod_SetString() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetString(::grpc::ServerContext* context, const ::ModeliRpc::SetStringRequest* request, ::ModeliRpc::SetStringResponse* response) final override {
       abort();
       return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
     }
@@ -685,7 +856,7 @@ class ModeliBackend final {
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithGenericMethod_NewValues() {
-      ::grpc::Service::MarkMethodGeneric(9);
+      ::grpc::Service::MarkMethodGeneric(12);
     }
     ~WithGenericMethod_NewValues() override {
       BaseClassMustBeDerivedFromService(this);
@@ -702,7 +873,7 @@ class ModeliBackend final {
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithGenericMethod_Log() {
-      ::grpc::Service::MarkMethodGeneric(10);
+      ::grpc::Service::MarkMethodGeneric(13);
     }
     ~WithGenericMethod_Log() override {
       BaseClassMustBeDerivedFromService(this);
@@ -854,33 +1025,93 @@ class ModeliBackend final {
     virtual ::grpc::Status StreamedRemoveChannelLink(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::RemoveChannelLinkRequest,::ModeliRpc::RemoveChannelLinkResponse>* server_unary_streamer) = 0;
   };
   template <class BaseClass>
-  class WithStreamedUnaryMethod_SetValues : public BaseClass {
+  class WithStreamedUnaryMethod_SetInt : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
-    WithStreamedUnaryMethod_SetValues() {
+    WithStreamedUnaryMethod_SetInt() {
       ::grpc::Service::MarkMethodStreamed(8,
-        new ::grpc::internal::StreamedUnaryHandler< ::ModeliRpc::SetValuesReqest, ::ModeliRpc::SetValuesResponse>(std::bind(&WithStreamedUnaryMethod_SetValues<BaseClass>::StreamedSetValues, this, std::placeholders::_1, std::placeholders::_2)));
+        new ::grpc::internal::StreamedUnaryHandler< ::ModeliRpc::SetIntRequest, ::ModeliRpc::SetIntResponse>(std::bind(&WithStreamedUnaryMethod_SetInt<BaseClass>::StreamedSetInt, this, std::placeholders::_1, std::placeholders::_2)));
     }
-    ~WithStreamedUnaryMethod_SetValues() override {
+    ~WithStreamedUnaryMethod_SetInt() override {
       BaseClassMustBeDerivedFromService(this);
     }
     // disable regular version of this method
-    ::grpc::Status SetValues(::grpc::ServerContext* context, const ::ModeliRpc::SetValuesReqest* request, ::ModeliRpc::SetValuesResponse* response) final override {
+    ::grpc::Status SetInt(::grpc::ServerContext* context, const ::ModeliRpc::SetIntRequest* request, ::ModeliRpc::SetIntResponse* response) final override {
       abort();
       return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
     }
     // replace default version of method with streamed unary
-    virtual ::grpc::Status StreamedSetValues(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::SetValuesReqest,::ModeliRpc::SetValuesResponse>* server_unary_streamer) = 0;
+    virtual ::grpc::Status StreamedSetInt(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::SetIntRequest,::ModeliRpc::SetIntResponse>* server_unary_streamer) = 0;
   };
-  typedef WithStreamedUnaryMethod_Play<WithStreamedUnaryMethod_PlayFast<WithStreamedUnaryMethod_Pause<WithStreamedUnaryMethod_Stop<WithStreamedUnaryMethod_RemoveFmu<WithStreamedUnaryMethod_AddChannelLink<WithStreamedUnaryMethod_RemoveChannelLink<WithStreamedUnaryMethod_SetValues<Service > > > > > > > > StreamedUnaryService;
+  template <class BaseClass>
+  class WithStreamedUnaryMethod_SetReal : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithStreamedUnaryMethod_SetReal() {
+      ::grpc::Service::MarkMethodStreamed(9,
+        new ::grpc::internal::StreamedUnaryHandler< ::ModeliRpc::SetRealRequest, ::ModeliRpc::SetRealResponse>(std::bind(&WithStreamedUnaryMethod_SetReal<BaseClass>::StreamedSetReal, this, std::placeholders::_1, std::placeholders::_2)));
+    }
+    ~WithStreamedUnaryMethod_SetReal() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable regular version of this method
+    ::grpc::Status SetReal(::grpc::ServerContext* context, const ::ModeliRpc::SetRealRequest* request, ::ModeliRpc::SetRealResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    // replace default version of method with streamed unary
+    virtual ::grpc::Status StreamedSetReal(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::SetRealRequest,::ModeliRpc::SetRealResponse>* server_unary_streamer) = 0;
+  };
+  template <class BaseClass>
+  class WithStreamedUnaryMethod_SetBool : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithStreamedUnaryMethod_SetBool() {
+      ::grpc::Service::MarkMethodStreamed(10,
+        new ::grpc::internal::StreamedUnaryHandler< ::ModeliRpc::SetBoolRequest, ::ModeliRpc::SetBoolResponse>(std::bind(&WithStreamedUnaryMethod_SetBool<BaseClass>::StreamedSetBool, this, std::placeholders::_1, std::placeholders::_2)));
+    }
+    ~WithStreamedUnaryMethod_SetBool() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable regular version of this method
+    ::grpc::Status SetBool(::grpc::ServerContext* context, const ::ModeliRpc::SetBoolRequest* request, ::ModeliRpc::SetBoolResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    // replace default version of method with streamed unary
+    virtual ::grpc::Status StreamedSetBool(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::SetBoolRequest,::ModeliRpc::SetBoolResponse>* server_unary_streamer) = 0;
+  };
+  template <class BaseClass>
+  class WithStreamedUnaryMethod_SetString : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service *service) {}
+   public:
+    WithStreamedUnaryMethod_SetString() {
+      ::grpc::Service::MarkMethodStreamed(11,
+        new ::grpc::internal::StreamedUnaryHandler< ::ModeliRpc::SetStringRequest, ::ModeliRpc::SetStringResponse>(std::bind(&WithStreamedUnaryMethod_SetString<BaseClass>::StreamedSetString, this, std::placeholders::_1, std::placeholders::_2)));
+    }
+    ~WithStreamedUnaryMethod_SetString() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable regular version of this method
+    ::grpc::Status SetString(::grpc::ServerContext* context, const ::ModeliRpc::SetStringRequest* request, ::ModeliRpc::SetStringResponse* response) final override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    // replace default version of method with streamed unary
+    virtual ::grpc::Status StreamedSetString(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::ModeliRpc::SetStringRequest,::ModeliRpc::SetStringResponse>* server_unary_streamer) = 0;
+  };
+  typedef WithStreamedUnaryMethod_Play<WithStreamedUnaryMethod_PlayFast<WithStreamedUnaryMethod_Pause<WithStreamedUnaryMethod_Stop<WithStreamedUnaryMethod_RemoveFmu<WithStreamedUnaryMethod_AddChannelLink<WithStreamedUnaryMethod_RemoveChannelLink<WithStreamedUnaryMethod_SetInt<WithStreamedUnaryMethod_SetReal<WithStreamedUnaryMethod_SetBool<WithStreamedUnaryMethod_SetString<Service > > > > > > > > > > > StreamedUnaryService;
   template <class BaseClass>
   class WithSplitStreamingMethod_NewValues : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithSplitStreamingMethod_NewValues() {
-      ::grpc::Service::MarkMethodStreamed(9,
+      ::grpc::Service::MarkMethodStreamed(12,
         new ::grpc::internal::SplitServerStreamingHandler< ::ModeliRpc::NewValuesRequest, ::ModeliRpc::NewValuesResponse>(std::bind(&WithSplitStreamingMethod_NewValues<BaseClass>::StreamedNewValues, this, std::placeholders::_1, std::placeholders::_2)));
     }
     ~WithSplitStreamingMethod_NewValues() override {
@@ -900,7 +1131,7 @@ class ModeliBackend final {
     void BaseClassMustBeDerivedFromService(const Service *service) {}
    public:
     WithSplitStreamingMethod_Log() {
-      ::grpc::Service::MarkMethodStreamed(10,
+      ::grpc::Service::MarkMethodStreamed(13,
         new ::grpc::internal::SplitServerStreamingHandler< ::ModeliRpc::LogRequest, ::ModeliRpc::LogResponse>(std::bind(&WithSplitStreamingMethod_Log<BaseClass>::StreamedLog, this, std::placeholders::_1, std::placeholders::_2)));
     }
     ~WithSplitStreamingMethod_Log() override {
@@ -915,7 +1146,7 @@ class ModeliBackend final {
     virtual ::grpc::Status StreamedLog(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::ModeliRpc::LogRequest,::ModeliRpc::LogResponse>* server_split_streamer) = 0;
   };
   typedef WithSplitStreamingMethod_NewValues<WithSplitStreamingMethod_Log<Service > > SplitStreamedService;
-  typedef WithStreamedUnaryMethod_Play<WithStreamedUnaryMethod_PlayFast<WithStreamedUnaryMethod_Pause<WithStreamedUnaryMethod_Stop<WithStreamedUnaryMethod_RemoveFmu<WithStreamedUnaryMethod_AddChannelLink<WithStreamedUnaryMethod_RemoveChannelLink<WithStreamedUnaryMethod_SetValues<WithSplitStreamingMethod_NewValues<WithSplitStreamingMethod_Log<Service > > > > > > > > > > StreamedService;
+  typedef WithStreamedUnaryMethod_Play<WithStreamedUnaryMethod_PlayFast<WithStreamedUnaryMethod_Pause<WithStreamedUnaryMethod_Stop<WithStreamedUnaryMethod_RemoveFmu<WithStreamedUnaryMethod_AddChannelLink<WithStreamedUnaryMethod_RemoveChannelLink<WithStreamedUnaryMethod_SetInt<WithStreamedUnaryMethod_SetReal<WithStreamedUnaryMethod_SetBool<WithStreamedUnaryMethod_SetString<WithSplitStreamingMethod_NewValues<WithSplitStreamingMethod_Log<Service > > > > > > > > > > > > > StreamedService;
 };
 
 }  // namespace ModeliRpc
diff --git a/ModeliRpc_Cpp/ModeliRpc.pb.cc b/ModeliRpc_Cpp/ModeliRpc.pb.cc
index 9f522addeb6680cd81cbb3ac1fe1654ea722ce46..ba01c0f2807996271998e576afd526afb62be74a 100644
--- a/ModeliRpc_Cpp/ModeliRpc.pb.cc
+++ b/ModeliRpc_Cpp/ModeliRpc.pb.cc
@@ -20,11 +20,26 @@
 #endif
 // @@protoc_insertion_point(includes)
 namespace ModeliRpc {
-class ValuesDefaultTypeInternal {
+class IntValuesDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<Values>
+  ::google::protobuf::internal::ExplicitlyConstructed<IntValues>
       _instance;
-} _Values_default_instance_;
+} _IntValues_default_instance_;
+class RealValuesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<RealValues>
+      _instance;
+} _RealValues_default_instance_;
+class BoolValuesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<BoolValues>
+      _instance;
+} _BoolValues_default_instance_;
+class StringValuesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<StringValues>
+      _instance;
+} _StringValues_default_instance_;
 class ChannelLinkDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ChannelLink>
@@ -110,16 +125,46 @@ class RemoveChannelLinkResponseDefaultTypeInternal {
   ::google::protobuf::internal::ExplicitlyConstructed<RemoveChannelLinkResponse>
       _instance;
 } _RemoveChannelLinkResponse_default_instance_;
-class SetValuesReqestDefaultTypeInternal {
+class SetIntRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetIntRequest>
+      _instance;
+} _SetIntRequest_default_instance_;
+class SetIntResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetIntResponse>
+      _instance;
+} _SetIntResponse_default_instance_;
+class SetRealRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetRealRequest>
+      _instance;
+} _SetRealRequest_default_instance_;
+class SetRealResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetRealResponse>
+      _instance;
+} _SetRealResponse_default_instance_;
+class SetBoolRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetBoolRequest>
+      _instance;
+} _SetBoolRequest_default_instance_;
+class SetBoolResponseDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<SetValuesReqest>
+  ::google::protobuf::internal::ExplicitlyConstructed<SetBoolResponse>
       _instance;
-} _SetValuesReqest_default_instance_;
-class SetValuesResponseDefaultTypeInternal {
+} _SetBoolResponse_default_instance_;
+class SetStringRequestDefaultTypeInternal {
  public:
-  ::google::protobuf::internal::ExplicitlyConstructed<SetValuesResponse>
+  ::google::protobuf::internal::ExplicitlyConstructed<SetStringRequest>
       _instance;
-} _SetValuesResponse_default_instance_;
+} _SetStringRequest_default_instance_;
+class SetStringResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetStringResponse>
+      _instance;
+} _SetStringResponse_default_instance_;
 class NewValuesRequestDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<NewValuesRequest>
@@ -142,7 +187,49 @@ class LogResponseDefaultTypeInternal {
 } _LogResponse_default_instance_;
 }  // namespace ModeliRpc
 namespace protobuf_ModeliRpc_2eproto {
-void InitDefaultsValuesImpl() {
+void InitDefaultsIntValuesImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_IntValues_default_instance_;
+    new (ptr) ::ModeliRpc::IntValues();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::IntValues::InitAsDefaultInstance();
+}
+
+void InitDefaultsIntValues() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsIntValuesImpl);
+}
+
+void InitDefaultsRealValuesImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_RealValues_default_instance_;
+    new (ptr) ::ModeliRpc::RealValues();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::RealValues::InitAsDefaultInstance();
+}
+
+void InitDefaultsRealValues() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsRealValuesImpl);
+}
+
+void InitDefaultsBoolValuesImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
 #ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
@@ -151,16 +238,37 @@ void InitDefaultsValuesImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
-    void* ptr = &::ModeliRpc::_Values_default_instance_;
-    new (ptr) ::ModeliRpc::Values();
+    void* ptr = &::ModeliRpc::_BoolValues_default_instance_;
+    new (ptr) ::ModeliRpc::BoolValues();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::ModeliRpc::Values::InitAsDefaultInstance();
+  ::ModeliRpc::BoolValues::InitAsDefaultInstance();
 }
 
-void InitDefaultsValues() {
+void InitDefaultsBoolValues() {
   static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
-  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsValuesImpl);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsBoolValuesImpl);
+}
+
+void InitDefaultsStringValuesImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_StringValues_default_instance_;
+    new (ptr) ::ModeliRpc::StringValues();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::StringValues::InitAsDefaultInstance();
+}
+
+void InitDefaultsStringValues() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsStringValuesImpl);
 }
 
 void InitDefaultsChannelLinkImpl() {
@@ -522,7 +630,136 @@ void InitDefaultsRemoveChannelLinkResponse() {
   ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsRemoveChannelLinkResponseImpl);
 }
 
-void InitDefaultsSetValuesReqestImpl() {
+void InitDefaultsSetIntRequestImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_ModeliRpc_2eproto::InitDefaultsIntValues();
+  {
+    void* ptr = &::ModeliRpc::_SetIntRequest_default_instance_;
+    new (ptr) ::ModeliRpc::SetIntRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetIntRequest::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetIntRequest() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetIntRequestImpl);
+}
+
+void InitDefaultsSetIntResponseImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_SetIntResponse_default_instance_;
+    new (ptr) ::ModeliRpc::SetIntResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetIntResponse::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetIntResponse() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetIntResponseImpl);
+}
+
+void InitDefaultsSetRealRequestImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_ModeliRpc_2eproto::InitDefaultsRealValues();
+  {
+    void* ptr = &::ModeliRpc::_SetRealRequest_default_instance_;
+    new (ptr) ::ModeliRpc::SetRealRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetRealRequest::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetRealRequest() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetRealRequestImpl);
+}
+
+void InitDefaultsSetRealResponseImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_SetRealResponse_default_instance_;
+    new (ptr) ::ModeliRpc::SetRealResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetRealResponse::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetRealResponse() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetRealResponseImpl);
+}
+
+void InitDefaultsSetBoolRequestImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_ModeliRpc_2eproto::InitDefaultsBoolValues();
+  {
+    void* ptr = &::ModeliRpc::_SetBoolRequest_default_instance_;
+    new (ptr) ::ModeliRpc::SetBoolRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetBoolRequest::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetBoolRequest() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetBoolRequestImpl);
+}
+
+void InitDefaultsSetBoolResponseImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::ModeliRpc::_SetBoolResponse_default_instance_;
+    new (ptr) ::ModeliRpc::SetBoolResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::ModeliRpc::SetBoolResponse::InitAsDefaultInstance();
+}
+
+void InitDefaultsSetBoolResponse() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetBoolResponseImpl);
+}
+
+void InitDefaultsSetStringRequestImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
 #ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
@@ -530,21 +767,21 @@ void InitDefaultsSetValuesReqestImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_ModeliRpc_2eproto::InitDefaultsValues();
+  protobuf_ModeliRpc_2eproto::InitDefaultsStringValues();
   {
-    void* ptr = &::ModeliRpc::_SetValuesReqest_default_instance_;
-    new (ptr) ::ModeliRpc::SetValuesReqest();
+    void* ptr = &::ModeliRpc::_SetStringRequest_default_instance_;
+    new (ptr) ::ModeliRpc::SetStringRequest();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::ModeliRpc::SetValuesReqest::InitAsDefaultInstance();
+  ::ModeliRpc::SetStringRequest::InitAsDefaultInstance();
 }
 
-void InitDefaultsSetValuesReqest() {
+void InitDefaultsSetStringRequest() {
   static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
-  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetValuesReqestImpl);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetStringRequestImpl);
 }
 
-void InitDefaultsSetValuesResponseImpl() {
+void InitDefaultsSetStringResponseImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
 #ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
@@ -553,16 +790,16 @@ void InitDefaultsSetValuesResponseImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
-    void* ptr = &::ModeliRpc::_SetValuesResponse_default_instance_;
-    new (ptr) ::ModeliRpc::SetValuesResponse();
+    void* ptr = &::ModeliRpc::_SetStringResponse_default_instance_;
+    new (ptr) ::ModeliRpc::SetStringResponse();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::ModeliRpc::SetValuesResponse::InitAsDefaultInstance();
+  ::ModeliRpc::SetStringResponse::InitAsDefaultInstance();
 }
 
-void InitDefaultsSetValuesResponse() {
+void InitDefaultsSetStringResponse() {
   static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
-  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetValuesResponseImpl);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsSetStringResponseImpl);
 }
 
 void InitDefaultsNewValuesRequestImpl() {
@@ -594,7 +831,10 @@ void InitDefaultsNewValuesResponseImpl() {
 #else
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
-  protobuf_ModeliRpc_2eproto::InitDefaultsValues();
+  protobuf_ModeliRpc_2eproto::InitDefaultsIntValues();
+  protobuf_ModeliRpc_2eproto::InitDefaultsRealValues();
+  protobuf_ModeliRpc_2eproto::InitDefaultsBoolValues();
+  protobuf_ModeliRpc_2eproto::InitDefaultsStringValues();
   {
     void* ptr = &::ModeliRpc::_NewValuesResponse_default_instance_;
     new (ptr) ::ModeliRpc::NewValuesResponse();
@@ -650,24 +890,38 @@ void InitDefaultsLogResponse() {
   ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLogResponseImpl);
 }
 
-::google::protobuf::Metadata file_level_metadata[24];
+::google::protobuf::Metadata file_level_metadata[33];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[1];
 
 const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   ~0u,  // no _has_bits_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::IntValues, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::IntValues, valuerefs_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::IntValues, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::RealValues, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::RealValues, valuerefs_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::RealValues, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::BoolValues, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::BoolValues, valuerefs_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::BoolValues, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::StringValues, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, instance_name_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, int_vrs_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, int_values_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, real_vrs_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, real_values_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, bool_vrs_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, bool_values_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, string_vrs_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::Values, string_values_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::StringValues, valuerefs_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::StringValues, values_),
   ~0u,  // no _has_bits_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::ChannelLink, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -773,17 +1027,57 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _weak_field_map_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::RemoveChannelLinkResponse, success_),
   ~0u,  // no _has_bits_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetValuesReqest, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetIntRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetIntRequest, instance_name_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetIntRequest, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetIntResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetIntResponse, status_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetRealRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetRealRequest, instance_name_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetRealRequest, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetRealResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetRealResponse, status_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetBoolRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetBoolRequest, instance_name_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetBoolRequest, values_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetBoolResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetBoolResponse, status_),
+  ~0u,  // no _has_bits_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetStringRequest, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetValuesReqest, values_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetStringRequest, instance_name_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetStringRequest, values_),
   ~0u,  // no _has_bits_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetValuesResponse, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetStringResponse, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetValuesResponse, status_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::SetStringResponse, status_),
   ~0u,  // no _has_bits_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesRequest, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -794,8 +1088,11 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, values_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, timestamp_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, intvalues_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, realvalues_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, boolvalues_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::NewValuesResponse, stringvalues_),
   ~0u,  // no _has_bits_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::LogRequest, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -811,34 +1108,46 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ModeliRpc::LogResponse, message_),
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, -1, sizeof(::ModeliRpc::Values)},
-  { 14, -1, sizeof(::ModeliRpc::ChannelLink)},
-  { 25, -1, sizeof(::ModeliRpc::PlayRequest)},
-  { 30, -1, sizeof(::ModeliRpc::PlayResponse)},
-  { 36, -1, sizeof(::ModeliRpc::PlayFastRequest)},
-  { 42, -1, sizeof(::ModeliRpc::PlayFastResponse)},
-  { 48, -1, sizeof(::ModeliRpc::PauseRequest)},
-  { 53, -1, sizeof(::ModeliRpc::PauseResponse)},
-  { 58, -1, sizeof(::ModeliRpc::StopRequest)},
-  { 63, -1, sizeof(::ModeliRpc::StopResponse)},
-  { 69, -1, sizeof(::ModeliRpc::AddFmuRequest)},
-  { 76, -1, sizeof(::ModeliRpc::AddFmuResponse)},
-  { 82, -1, sizeof(::ModeliRpc::RemoveFmuRequest)},
-  { 88, -1, sizeof(::ModeliRpc::RemoveFmuResponse)},
-  { 94, -1, sizeof(::ModeliRpc::AddChannelLinkRequest)},
-  { 100, -1, sizeof(::ModeliRpc::AddChannelLinkResponse)},
-  { 106, -1, sizeof(::ModeliRpc::RemoveChannelLinkRequest)},
-  { 112, -1, sizeof(::ModeliRpc::RemoveChannelLinkResponse)},
-  { 118, -1, sizeof(::ModeliRpc::SetValuesReqest)},
-  { 124, -1, sizeof(::ModeliRpc::SetValuesResponse)},
-  { 130, -1, sizeof(::ModeliRpc::NewValuesRequest)},
-  { 135, -1, sizeof(::ModeliRpc::NewValuesResponse)},
-  { 142, -1, sizeof(::ModeliRpc::LogRequest)},
-  { 147, -1, sizeof(::ModeliRpc::LogResponse)},
+  { 0, -1, sizeof(::ModeliRpc::IntValues)},
+  { 7, -1, sizeof(::ModeliRpc::RealValues)},
+  { 14, -1, sizeof(::ModeliRpc::BoolValues)},
+  { 21, -1, sizeof(::ModeliRpc::StringValues)},
+  { 28, -1, sizeof(::ModeliRpc::ChannelLink)},
+  { 39, -1, sizeof(::ModeliRpc::PlayRequest)},
+  { 44, -1, sizeof(::ModeliRpc::PlayResponse)},
+  { 50, -1, sizeof(::ModeliRpc::PlayFastRequest)},
+  { 56, -1, sizeof(::ModeliRpc::PlayFastResponse)},
+  { 62, -1, sizeof(::ModeliRpc::PauseRequest)},
+  { 67, -1, sizeof(::ModeliRpc::PauseResponse)},
+  { 72, -1, sizeof(::ModeliRpc::StopRequest)},
+  { 77, -1, sizeof(::ModeliRpc::StopResponse)},
+  { 83, -1, sizeof(::ModeliRpc::AddFmuRequest)},
+  { 90, -1, sizeof(::ModeliRpc::AddFmuResponse)},
+  { 96, -1, sizeof(::ModeliRpc::RemoveFmuRequest)},
+  { 102, -1, sizeof(::ModeliRpc::RemoveFmuResponse)},
+  { 108, -1, sizeof(::ModeliRpc::AddChannelLinkRequest)},
+  { 114, -1, sizeof(::ModeliRpc::AddChannelLinkResponse)},
+  { 120, -1, sizeof(::ModeliRpc::RemoveChannelLinkRequest)},
+  { 126, -1, sizeof(::ModeliRpc::RemoveChannelLinkResponse)},
+  { 132, -1, sizeof(::ModeliRpc::SetIntRequest)},
+  { 139, -1, sizeof(::ModeliRpc::SetIntResponse)},
+  { 145, -1, sizeof(::ModeliRpc::SetRealRequest)},
+  { 152, -1, sizeof(::ModeliRpc::SetRealResponse)},
+  { 158, -1, sizeof(::ModeliRpc::SetBoolRequest)},
+  { 165, -1, sizeof(::ModeliRpc::SetBoolResponse)},
+  { 171, -1, sizeof(::ModeliRpc::SetStringRequest)},
+  { 178, -1, sizeof(::ModeliRpc::SetStringResponse)},
+  { 184, -1, sizeof(::ModeliRpc::NewValuesRequest)},
+  { 189, -1, sizeof(::ModeliRpc::NewValuesResponse)},
+  { 199, -1, sizeof(::ModeliRpc::LogRequest)},
+  { 204, -1, sizeof(::ModeliRpc::LogResponse)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
-  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_Values_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_IntValues_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_RealValues_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_BoolValues_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_StringValues_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_ChannelLink_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_PlayRequest_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_PlayResponse_default_instance_),
@@ -856,8 +1165,14 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_AddChannelLinkResponse_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_RemoveChannelLinkRequest_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_RemoveChannelLinkResponse_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetValuesReqest_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetValuesResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetIntRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetIntResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetRealRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetRealResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetBoolRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetBoolResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetStringRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_SetStringResponse_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_NewValuesRequest_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_NewValuesResponse_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::ModeliRpc::_LogRequest_default_instance_),
@@ -880,72 +1195,91 @@ void protobuf_AssignDescriptorsOnce() {
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
 void protobuf_RegisterTypes(const ::std::string&) {
   protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 24);
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 33);
 }
 
 void AddDescriptorsImpl() {
   InitDefaults();
   static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-      "\n\017ModeliRpc.proto\022\tModeliRpc\"\275\001\n\006Values\022"
-      "\025\n\rinstance_name\030\001 \001(\t\022\017\n\007int_vrs\030\002 \003(\r\022"
-      "\022\n\nint_values\030\003 \003(\005\022\020\n\010real_vrs\030\004 \003(\r\022\023\n"
-      "\013real_values\030\005 \003(\001\022\020\n\010bool_vrs\030\006 \003(\r\022\023\n\013"
-      "bool_values\030\007 \003(\005\022\022\n\nstring_vrs\030\010 \003(\r\022\025\n"
-      "\rstring_values\030\t \003(\t\"\215\001\n\013ChannelLink\022\034\n\024"
-      "master_instance_name\030\001 \001(\t\022\033\n\023slave_inst"
-      "ance_name\030\002 \001(\t\022\021\n\tmaster_vr\030\003 \001(\r\022\020\n\010sl"
-      "ave_vr\030\004 \001(\r\022\016\n\006factor\030\005 \001(\001\022\016\n\006offset\030\006"
-      " \001(\001\"\r\n\013PlayRequest\"5\n\014PlayResponse\022%\n\006s"
-      "tatus\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\"\037\n\017Pl"
-      "ayFastRequest\022\014\n\004time\030\001 \001(\001\"9\n\020PlayFastR"
-      "esponse\022%\n\006status\030\001 \001(\0162\025.ModeliRpc.Fmi2"
-      "Status\"\016\n\014PauseRequest\"\017\n\rPauseResponse\""
-      "\r\n\013StopRequest\"5\n\014StopResponse\022%\n\006status"
-      "\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\"4\n\rAddFmuR"
-      "equest\022\025\n\rinstance_name\030\001 \001(\t\022\014\n\004data\030\002 "
-      "\001(\014\"!\n\016AddFmuResponse\022\017\n\007success\030\001 \001(\010\")"
-      "\n\020RemoveFmuRequest\022\025\n\rinstance_name\030\001 \001("
-      "\t\"$\n\021RemoveFmuResponse\022\017\n\007success\030\001 \001(\010\""
-      "E\n\025AddChannelLinkRequest\022,\n\014channel_link"
-      "\030\001 \001(\0132\026.ModeliRpc.ChannelLink\")\n\026AddCha"
-      "nnelLinkResponse\022\017\n\007success\030\001 \001(\010\"H\n\030Rem"
-      "oveChannelLinkRequest\022,\n\014channel_link\030\001 "
-      "\001(\0132\026.ModeliRpc.ChannelLink\",\n\031RemoveCha"
-      "nnelLinkResponse\022\017\n\007success\030\001 \001(\010\"4\n\017Set"
-      "ValuesReqest\022!\n\006values\030\001 \001(\0132\021.ModeliRpc"
-      ".Values\":\n\021SetValuesResponse\022%\n\006status\030\001"
-      " \001(\0162\025.ModeliRpc.Fmi2Status\"\022\n\020NewValues"
-      "Request\"I\n\021NewValuesResponse\022!\n\006values\030\001"
-      " \001(\0132\021.ModeliRpc.Values\022\021\n\ttimestamp\030\002 \001"
-      "(\001\"\014\n\nLogRequest\"\\\n\013LogResponse\022\025\n\rinsta"
-      "nce_name\030\001 \001(\t\022%\n\006status\030\002 \001(\0162\025.ModeliR"
-      "pc.Fmi2Status\022\017\n\007message\030\003 \001(\t*o\n\nFmi2St"
-      "atus\022\013\n\007FMI2_OK\020\000\022\020\n\014FMI2_WARNING\020\001\022\020\n\014F"
-      "MI2_DISCARD\020\002\022\016\n\nFMI2_ERROR\020\003\022\016\n\nFMI2_FA"
-      "TAL\020\004\022\020\n\014FMI2_PENDING\020\0052\213\006\n\rModeliBacken"
-      "d\0227\n\004Play\022\026.ModeliRpc.PlayRequest\032\027.Mode"
-      "liRpc.PlayResponse\022C\n\010PlayFast\022\032.ModeliR"
-      "pc.PlayFastRequest\032\033.ModeliRpc.PlayFastR"
-      "esponse\022:\n\005Pause\022\027.ModeliRpc.PauseReques"
-      "t\032\030.ModeliRpc.PauseResponse\0227\n\004Stop\022\026.Mo"
-      "deliRpc.StopRequest\032\027.ModeliRpc.StopResp"
-      "onse\022\?\n\006AddFmu\022\030.ModeliRpc.AddFmuRequest"
-      "\032\031.ModeliRpc.AddFmuResponse(\001\022F\n\tRemoveF"
-      "mu\022\033.ModeliRpc.RemoveFmuRequest\032\034.Modeli"
-      "Rpc.RemoveFmuResponse\022U\n\016AddChannelLink\022"
-      " .ModeliRpc.AddChannelLinkRequest\032!.Mode"
-      "liRpc.AddChannelLinkResponse\022^\n\021RemoveCh"
-      "annelLink\022#.ModeliRpc.RemoveChannelLinkR"
-      "equest\032$.ModeliRpc.RemoveChannelLinkResp"
-      "onse\022E\n\tSetValues\022\032.ModeliRpc.SetValuesR"
-      "eqest\032\034.ModeliRpc.SetValuesResponse\022H\n\tN"
-      "ewValues\022\033.ModeliRpc.NewValuesRequest\032\034."
-      "ModeliRpc.NewValuesResponse0\001\0226\n\003Log\022\025.M"
-      "odeliRpc.LogRequest\032\026.ModeliRpc.LogRespo"
-      "nse0\001b\006proto3"
+      "\n\017ModeliRpc.proto\022\tModeliRpc\".\n\tIntValue"
+      "s\022\021\n\tvalueRefs\030\001 \003(\r\022\016\n\006values\030\002 \003(\005\"/\n\n"
+      "RealValues\022\021\n\tvalueRefs\030\001 \003(\r\022\016\n\006values\030"
+      "\002 \003(\001\"/\n\nBoolValues\022\021\n\tvalueRefs\030\001 \003(\r\022\016"
+      "\n\006values\030\002 \003(\005\"1\n\014StringValues\022\021\n\tvalueR"
+      "efs\030\001 \003(\r\022\016\n\006values\030\002 \003(\t\"\215\001\n\013ChannelLin"
+      "k\022\034\n\024master_instance_name\030\001 \001(\t\022\033\n\023slave"
+      "_instance_name\030\002 \001(\t\022\021\n\tmaster_vr\030\003 \001(\r\022"
+      "\020\n\010slave_vr\030\004 \001(\r\022\016\n\006factor\030\005 \001(\001\022\016\n\006off"
+      "set\030\006 \001(\001\"\r\n\013PlayRequest\"5\n\014PlayResponse"
+      "\022%\n\006status\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\""
+      "\037\n\017PlayFastRequest\022\014\n\004time\030\001 \001(\001\"9\n\020Play"
+      "FastResponse\022%\n\006status\030\001 \001(\0162\025.ModeliRpc"
+      ".Fmi2Status\"\016\n\014PauseRequest\"\017\n\rPauseResp"
+      "onse\"\r\n\013StopRequest\"5\n\014StopResponse\022%\n\006s"
+      "tatus\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\"4\n\rAd"
+      "dFmuRequest\022\025\n\rinstance_name\030\001 \001(\t\022\014\n\004da"
+      "ta\030\002 \001(\014\"!\n\016AddFmuResponse\022\017\n\007success\030\001 "
+      "\001(\010\")\n\020RemoveFmuRequest\022\025\n\rinstance_name"
+      "\030\001 \001(\t\"$\n\021RemoveFmuResponse\022\017\n\007success\030\001"
+      " \001(\010\"E\n\025AddChannelLinkRequest\022,\n\014channel"
+      "_link\030\001 \001(\0132\026.ModeliRpc.ChannelLink\")\n\026A"
+      "ddChannelLinkResponse\022\017\n\007success\030\001 \001(\010\"H"
+      "\n\030RemoveChannelLinkRequest\022,\n\014channel_li"
+      "nk\030\001 \001(\0132\026.ModeliRpc.ChannelLink\",\n\031Remo"
+      "veChannelLinkResponse\022\017\n\007success\030\001 \001(\010\"L"
+      "\n\rSetIntRequest\022\025\n\rinstance_name\030\001 \001(\t\022$"
+      "\n\006values\030\002 \001(\0132\024.ModeliRpc.IntValues\"7\n\016"
+      "SetIntResponse\022%\n\006status\030\001 \001(\0162\025.ModeliR"
+      "pc.Fmi2Status\"N\n\016SetRealRequest\022\025\n\rinsta"
+      "nce_name\030\001 \001(\t\022%\n\006values\030\002 \001(\0132\025.ModeliR"
+      "pc.RealValues\"8\n\017SetRealResponse\022%\n\006stat"
+      "us\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\"N\n\016SetBo"
+      "olRequest\022\025\n\rinstance_name\030\001 \001(\t\022%\n\006valu"
+      "es\030\002 \001(\0132\025.ModeliRpc.BoolValues\"8\n\017SetBo"
+      "olResponse\022%\n\006status\030\001 \001(\0162\025.ModeliRpc.F"
+      "mi2Status\"R\n\020SetStringRequest\022\025\n\rinstanc"
+      "e_name\030\001 \001(\t\022\'\n\006values\030\002 \001(\0132\027.ModeliRpc"
+      ".StringValues\":\n\021SetStringResponse\022%\n\006st"
+      "atus\030\001 \001(\0162\025.ModeliRpc.Fmi2Status\"\022\n\020New"
+      "ValuesRequest\"\324\001\n\021NewValuesResponse\022\021\n\tt"
+      "imestamp\030\001 \001(\001\022\'\n\tintValues\030\002 \001(\0132\024.Mode"
+      "liRpc.IntValues\022)\n\nrealValues\030\003 \001(\0132\025.Mo"
+      "deliRpc.RealValues\022)\n\nboolValues\030\004 \001(\0132\025"
+      ".ModeliRpc.BoolValues\022-\n\014stringValues\030\005 "
+      "\001(\0132\027.ModeliRpc.StringValues\"\014\n\nLogReque"
+      "st\"\\\n\013LogResponse\022\025\n\rinstance_name\030\001 \001(\t"
+      "\022%\n\006status\030\002 \001(\0162\025.ModeliRpc.Fmi2Status\022"
+      "\017\n\007message\030\003 \001(\t*o\n\nFmi2Status\022\013\n\007FMI2_O"
+      "K\020\000\022\020\n\014FMI2_WARNING\020\001\022\020\n\014FMI2_DISCARD\020\002\022"
+      "\016\n\nFMI2_ERROR\020\003\022\016\n\nFMI2_FATAL\020\004\022\020\n\014FMI2_"
+      "PENDING\020\0052\317\007\n\rModeliBackend\0227\n\004Play\022\026.Mo"
+      "deliRpc.PlayRequest\032\027.ModeliRpc.PlayResp"
+      "onse\022C\n\010PlayFast\022\032.ModeliRpc.PlayFastReq"
+      "uest\032\033.ModeliRpc.PlayFastResponse\022:\n\005Pau"
+      "se\022\027.ModeliRpc.PauseRequest\032\030.ModeliRpc."
+      "PauseResponse\0227\n\004Stop\022\026.ModeliRpc.StopRe"
+      "quest\032\027.ModeliRpc.StopResponse\022\?\n\006AddFmu"
+      "\022\030.ModeliRpc.AddFmuRequest\032\031.ModeliRpc.A"
+      "ddFmuResponse(\001\022F\n\tRemoveFmu\022\033.ModeliRpc"
+      ".RemoveFmuRequest\032\034.ModeliRpc.RemoveFmuR"
+      "esponse\022U\n\016AddChannelLink\022 .ModeliRpc.Ad"
+      "dChannelLinkRequest\032!.ModeliRpc.AddChann"
+      "elLinkResponse\022^\n\021RemoveChannelLink\022#.Mo"
+      "deliRpc.RemoveChannelLinkRequest\032$.Model"
+      "iRpc.RemoveChannelLinkResponse\022=\n\006SetInt"
+      "\022\030.ModeliRpc.SetIntRequest\032\031.ModeliRpc.S"
+      "etIntResponse\022@\n\007SetReal\022\031.ModeliRpc.Set"
+      "RealRequest\032\032.ModeliRpc.SetRealResponse\022"
+      "@\n\007SetBool\022\031.ModeliRpc.SetBoolRequest\032\032."
+      "ModeliRpc.SetBoolResponse\022F\n\tSetString\022\033"
+      ".ModeliRpc.SetStringRequest\032\034.ModeliRpc."
+      "SetStringResponse\022H\n\tNewValues\022\033.ModeliR"
+      "pc.NewValuesRequest\032\034.ModeliRpc.NewValue"
+      "sResponse0\001\0226\n\003Log\022\025.ModeliRpc.LogReques"
+      "t\032\026.ModeliRpc.LogResponse0\001b\006proto3"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 2253);
+      descriptor, 3035);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "ModeliRpc.proto", &protobuf_RegisterTypes);
 }
@@ -983,536 +1317,223 @@ bool Fmi2Status_IsValid(int value) {
 
 // ===================================================================
 
-void Values::InitAsDefaultInstance() {
+void IntValues::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int Values::kInstanceNameFieldNumber;
-const int Values::kIntVrsFieldNumber;
-const int Values::kIntValuesFieldNumber;
-const int Values::kRealVrsFieldNumber;
-const int Values::kRealValuesFieldNumber;
-const int Values::kBoolVrsFieldNumber;
-const int Values::kBoolValuesFieldNumber;
-const int Values::kStringVrsFieldNumber;
-const int Values::kStringValuesFieldNumber;
+const int IntValues::kValueRefsFieldNumber;
+const int IntValues::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-Values::Values()
+IntValues::IntValues()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsValues();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsIntValues();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.Values)
+  // @@protoc_insertion_point(constructor:ModeliRpc.IntValues)
 }
-Values::Values(const Values& from)
+IntValues::IntValues(const IntValues& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
-      int_vrs_(from.int_vrs_),
-      int_values_(from.int_values_),
-      real_vrs_(from.real_vrs_),
-      real_values_(from.real_values_),
-      bool_vrs_(from.bool_vrs_),
-      bool_values_(from.bool_values_),
-      string_vrs_(from.string_vrs_),
-      string_values_(from.string_values_),
+      valuerefs_(from.valuerefs_),
+      values_(from.values_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.instance_name().size() > 0) {
-    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
-  }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.Values)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.IntValues)
 }
 
-void Values::SharedCtor() {
-  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+void IntValues::SharedCtor() {
   _cached_size_ = 0;
 }
 
-Values::~Values() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.Values)
+IntValues::~IntValues() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.IntValues)
   SharedDtor();
 }
 
-void Values::SharedDtor() {
-  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+void IntValues::SharedDtor() {
 }
 
-void Values::SetCachedSize(int size) const {
+void IntValues::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* Values::descriptor() {
+const ::google::protobuf::Descriptor* IntValues::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const Values& Values::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsValues();
+const IntValues& IntValues::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsIntValues();
   return *internal_default_instance();
 }
 
-Values* Values::New(::google::protobuf::Arena* arena) const {
-  Values* n = new Values;
+IntValues* IntValues::New(::google::protobuf::Arena* arena) const {
+  IntValues* n = new IntValues;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void Values::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.Values)
+void IntValues::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.IntValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  int_vrs_.Clear();
-  int_values_.Clear();
-  real_vrs_.Clear();
-  real_values_.Clear();
-  bool_vrs_.Clear();
-  bool_values_.Clear();
-  string_vrs_.Clear();
-  string_values_.Clear();
-  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  valuerefs_.Clear();
+  values_.Clear();
   _internal_metadata_.Clear();
 }
 
-bool Values::MergePartialFromCodedStream(
+bool IntValues::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.Values)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.IntValues)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // string instance_name = 1;
+      // repeated uint32 valueRefs = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_instance_name()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.Values.instance_name"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated uint32 int_vrs = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_int_vrs())));
+                 input, this->mutable_valuerefs())));
         } else if (
             static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
           DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 18u, input, this->mutable_int_vrs())));
+                 1, 10u, input, this->mutable_valuerefs())));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // repeated int32 int_values = 3;
-      case 3: {
+      // repeated int32 values = 2;
+      case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, this->mutable_int_values())));
+                 input, this->mutable_values())));
         } else if (
             static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
           DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                    ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 1, 26u, input, this->mutable_int_values())));
+                 1, 18u, input, this->mutable_values())));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // repeated uint32 real_vrs = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_real_vrs())));
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 34u, input, this->mutable_real_vrs())));
-        } else {
-          goto handle_unusual;
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
         }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
         break;
       }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.IntValues)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.IntValues)
+  return false;
+#undef DO_
+}
 
-      // repeated double real_values = 5;
-      case 5: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
-                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 input, this->mutable_real_values())));
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(41u /* 41 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
-                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 1, 42u, input, this->mutable_real_values())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated uint32 bool_vrs = 6;
-      case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_bool_vrs())));
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 50u, input, this->mutable_bool_vrs())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated int32 bool_values = 7;
-      case 7: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, this->mutable_bool_values())));
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 1, 58u, input, this->mutable_bool_values())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated uint32 string_vrs = 8;
-      case 8: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, this->mutable_string_vrs())));
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
-                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 1, 66u, input, this->mutable_string_vrs())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated string string_values = 9;
-      case 9: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->add_string_values()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->string_values(this->string_values_size() - 1).data(),
-            static_cast<int>(this->string_values(this->string_values_size() - 1).length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.Values.string_values"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      default: {
-      handle_unusual:
-        if (tag == 0) {
-          goto success;
-        }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
-        break;
-      }
-    }
-  }
-success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.Values)
-  return true;
-failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.Values)
-  return false;
-#undef DO_
-}
-
-void Values::SerializeWithCachedSizes(
+void IntValues::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.Values)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.IntValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.Values.instance_name");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      1, this->instance_name(), output);
-  }
-
-  // repeated uint32 int_vrs = 2;
-  if (this->int_vrs_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
-    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _int_vrs_cached_byte_size_));
-  }
-  for (int i = 0, n = this->int_vrs_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
-      this->int_vrs(i), output);
-  }
-
-  // repeated int32 int_values = 3;
-  if (this->int_values_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
-    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _int_values_cached_byte_size_));
-  }
-  for (int i = 0, n = this->int_values_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
-      this->int_values(i), output);
-  }
-
-  // repeated uint32 real_vrs = 4;
-  if (this->real_vrs_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
-    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _real_vrs_cached_byte_size_));
-  }
-  for (int i = 0, n = this->real_vrs_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
-      this->real_vrs(i), output);
-  }
-
-  // repeated double real_values = 5;
-  if (this->real_values_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
-    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _real_values_cached_byte_size_));
-    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
-      this->real_values().data(), this->real_values_size(), output);
-  }
-
-  // repeated uint32 bool_vrs = 6;
-  if (this->bool_vrs_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(6, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
     output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _bool_vrs_cached_byte_size_));
+        _valuerefs_cached_byte_size_));
   }
-  for (int i = 0, n = this->bool_vrs_size(); i < n; i++) {
+  for (int i = 0, n = this->valuerefs_size(); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
-      this->bool_vrs(i), output);
+      this->valuerefs(i), output);
   }
 
-  // repeated int32 bool_values = 7;
-  if (this->bool_values_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(7, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+  // repeated int32 values = 2;
+  if (this->values_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
     output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _bool_values_cached_byte_size_));
+        _values_cached_byte_size_));
   }
-  for (int i = 0, n = this->bool_values_size(); i < n; i++) {
+  for (int i = 0, n = this->values_size(); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
-      this->bool_values(i), output);
-  }
-
-  // repeated uint32 string_vrs = 8;
-  if (this->string_vrs_size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
-    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
-        _string_vrs_cached_byte_size_));
-  }
-  for (int i = 0, n = this->string_vrs_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
-      this->string_vrs(i), output);
-  }
-
-  // repeated string string_values = 9;
-  for (int i = 0, n = this->string_values_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->string_values(i).data(), static_cast<int>(this->string_values(i).length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.Values.string_values");
-    ::google::protobuf::internal::WireFormatLite::WriteString(
-      9, this->string_values(i), output);
+      this->values(i), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.Values)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.IntValues)
 }
 
-::google::protobuf::uint8* Values::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* IntValues::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.Values)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.IntValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.Values.instance_name");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        1, this->instance_name(), target);
-  }
-
-  // repeated uint32 int_vrs = 2;
-  if (this->int_vrs_size() > 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      2,
-      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-      target);
-    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
-        static_cast< ::google::protobuf::int32>(
-            _int_vrs_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32NoTagToArray(this->int_vrs_, target);
-  }
-
-  // repeated int32 int_values = 3;
-  if (this->int_values_size() > 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      3,
-      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-      target);
-    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
-        static_cast< ::google::protobuf::int32>(
-            _int_values_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteInt32NoTagToArray(this->int_values_, target);
-  }
-
-  // repeated uint32 real_vrs = 4;
-  if (this->real_vrs_size() > 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      4,
-      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-      target);
-    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
-        static_cast< ::google::protobuf::int32>(
-            _real_vrs_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32NoTagToArray(this->real_vrs_, target);
-  }
-
-  // repeated double real_values = 5;
-  if (this->real_values_size() > 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      5,
-      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-      target);
-    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
-        static_cast< ::google::protobuf::int32>(
-            _real_values_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteDoubleNoTagToArray(this->real_values_, target);
-  }
-
-  // repeated uint32 bool_vrs = 6;
-  if (this->bool_vrs_size() > 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      6,
-      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-      target);
-    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
-        static_cast< ::google::protobuf::int32>(
-            _bool_vrs_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32NoTagToArray(this->bool_vrs_, target);
-  }
-
-  // repeated int32 bool_values = 7;
-  if (this->bool_values_size() > 0) {
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
     target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      7,
+      1,
       ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
       target);
     target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
         static_cast< ::google::protobuf::int32>(
-            _bool_values_cached_byte_size_), target);
+            _valuerefs_cached_byte_size_), target);
     target = ::google::protobuf::internal::WireFormatLite::
-      WriteInt32NoTagToArray(this->bool_values_, target);
+      WriteUInt32NoTagToArray(this->valuerefs_, target);
   }
 
-  // repeated uint32 string_vrs = 8;
-  if (this->string_vrs_size() > 0) {
+  // repeated int32 values = 2;
+  if (this->values_size() > 0) {
     target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
-      8,
+      2,
       ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
       target);
     target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
         static_cast< ::google::protobuf::int32>(
-            _string_vrs_cached_byte_size_), target);
-    target = ::google::protobuf::internal::WireFormatLite::
-      WriteUInt32NoTagToArray(this->string_vrs_, target);
-  }
-
-  // repeated string string_values = 9;
-  for (int i = 0, n = this->string_values_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->string_values(i).data(), static_cast<int>(this->string_values(i).length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.Values.string_values");
+            _values_cached_byte_size_), target);
     target = ::google::protobuf::internal::WireFormatLite::
-      WriteStringToArray(9, this->string_values(i), target);
+      WriteInt32NoTagToArray(this->values_, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.Values)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.IntValues)
   return target;
 }
 
-size_t Values::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.Values)
+size_t IntValues::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.IntValues)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -1520,90 +1541,10 @@ size_t Values::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // repeated uint32 int_vrs = 2;
-  {
-    size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      UInt32Size(this->int_vrs_);
-    if (data_size > 0) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-            static_cast< ::google::protobuf::int32>(data_size));
-    }
-    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
-    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _int_vrs_cached_byte_size_ = cached_size;
-    GOOGLE_SAFE_CONCURRENT_WRITES_END();
-    total_size += data_size;
-  }
-
-  // repeated int32 int_values = 3;
-  {
-    size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      Int32Size(this->int_values_);
-    if (data_size > 0) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-            static_cast< ::google::protobuf::int32>(data_size));
-    }
-    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
-    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _int_values_cached_byte_size_ = cached_size;
-    GOOGLE_SAFE_CONCURRENT_WRITES_END();
-    total_size += data_size;
-  }
-
-  // repeated uint32 real_vrs = 4;
-  {
-    size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      UInt32Size(this->real_vrs_);
-    if (data_size > 0) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-            static_cast< ::google::protobuf::int32>(data_size));
-    }
-    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
-    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _real_vrs_cached_byte_size_ = cached_size;
-    GOOGLE_SAFE_CONCURRENT_WRITES_END();
-    total_size += data_size;
-  }
-
-  // repeated double real_values = 5;
-  {
-    unsigned int count = static_cast<unsigned int>(this->real_values_size());
-    size_t data_size = 8UL * count;
-    if (data_size > 0) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-            static_cast< ::google::protobuf::int32>(data_size));
-    }
-    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
-    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _real_values_cached_byte_size_ = cached_size;
-    GOOGLE_SAFE_CONCURRENT_WRITES_END();
-    total_size += data_size;
-  }
-
-  // repeated uint32 bool_vrs = 6;
-  {
-    size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      UInt32Size(this->bool_vrs_);
-    if (data_size > 0) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-            static_cast< ::google::protobuf::int32>(data_size));
-    }
-    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
-    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _bool_vrs_cached_byte_size_ = cached_size;
-    GOOGLE_SAFE_CONCURRENT_WRITES_END();
-    total_size += data_size;
-  }
-
-  // repeated int32 bool_values = 7;
+  // repeated uint32 valueRefs = 1;
   {
     size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      Int32Size(this->bool_values_);
+      UInt32Size(this->valuerefs_);
     if (data_size > 0) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
@@ -1611,15 +1552,15 @@ size_t Values::ByteSizeLong() const {
     }
     int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
     GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _bool_values_cached_byte_size_ = cached_size;
+    _valuerefs_cached_byte_size_ = cached_size;
     GOOGLE_SAFE_CONCURRENT_WRITES_END();
     total_size += data_size;
   }
 
-  // repeated uint32 string_vrs = 8;
+  // repeated int32 values = 2;
   {
     size_t data_size = ::google::protobuf::internal::WireFormatLite::
-      UInt32Size(this->string_vrs_);
+      Int32Size(this->values_);
     if (data_size > 0) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::Int32Size(
@@ -1627,26 +1568,11 @@ size_t Values::ByteSizeLong() const {
     }
     int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
     GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-    _string_vrs_cached_byte_size_ = cached_size;
+    _values_cached_byte_size_ = cached_size;
     GOOGLE_SAFE_CONCURRENT_WRITES_END();
     total_size += data_size;
   }
 
-  // repeated string string_values = 9;
-  total_size += 1 *
-      ::google::protobuf::internal::FromIntSize(this->string_values_size());
-  for (int i = 0, n = this->string_values_size(); i < n; i++) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-      this->string_values(i));
-  }
-
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->instance_name());
-  }
-
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -1654,80 +1580,63 @@ size_t Values::ByteSizeLong() const {
   return total_size;
 }
 
-void Values::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.Values)
+void IntValues::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.IntValues)
   GOOGLE_DCHECK_NE(&from, this);
-  const Values* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const Values>(
+  const IntValues* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const IntValues>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.Values)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.IntValues)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.Values)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.IntValues)
     MergeFrom(*source);
   }
 }
 
-void Values::MergeFrom(const Values& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.Values)
+void IntValues::MergeFrom(const IntValues& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.IntValues)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  int_vrs_.MergeFrom(from.int_vrs_);
-  int_values_.MergeFrom(from.int_values_);
-  real_vrs_.MergeFrom(from.real_vrs_);
-  real_values_.MergeFrom(from.real_values_);
-  bool_vrs_.MergeFrom(from.bool_vrs_);
-  bool_values_.MergeFrom(from.bool_values_);
-  string_vrs_.MergeFrom(from.string_vrs_);
-  string_values_.MergeFrom(from.string_values_);
-  if (from.instance_name().size() > 0) {
-
-    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
-  }
+  valuerefs_.MergeFrom(from.valuerefs_);
+  values_.MergeFrom(from.values_);
 }
 
-void Values::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.Values)
+void IntValues::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.IntValues)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void Values::CopyFrom(const Values& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.Values)
+void IntValues::CopyFrom(const IntValues& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.IntValues)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool Values::IsInitialized() const {
+bool IntValues::IsInitialized() const {
   return true;
 }
 
-void Values::Swap(Values* other) {
+void IntValues::Swap(IntValues* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void Values::InternalSwap(Values* other) {
+void IntValues::InternalSwap(IntValues* other) {
   using std::swap;
-  int_vrs_.InternalSwap(&other->int_vrs_);
-  int_values_.InternalSwap(&other->int_values_);
-  real_vrs_.InternalSwap(&other->real_vrs_);
-  real_values_.InternalSwap(&other->real_values_);
-  bool_vrs_.InternalSwap(&other->bool_vrs_);
-  bool_values_.InternalSwap(&other->bool_values_);
-  string_vrs_.InternalSwap(&other->string_vrs_);
-  string_values_.InternalSwap(&other->string_values_);
-  instance_name_.Swap(&other->instance_name_);
+  valuerefs_.InternalSwap(&other->valuerefs_);
+  values_.InternalSwap(&other->values_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata Values::GetMetadata() const {
+::google::protobuf::Metadata IntValues::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -1735,192 +1644,119 @@ void Values::InternalSwap(Values* other) {
 
 // ===================================================================
 
-void ChannelLink::InitAsDefaultInstance() {
+void RealValues::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int ChannelLink::kMasterInstanceNameFieldNumber;
-const int ChannelLink::kSlaveInstanceNameFieldNumber;
-const int ChannelLink::kMasterVrFieldNumber;
-const int ChannelLink::kSlaveVrFieldNumber;
-const int ChannelLink::kFactorFieldNumber;
-const int ChannelLink::kOffsetFieldNumber;
+const int RealValues::kValueRefsFieldNumber;
+const int RealValues::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-ChannelLink::ChannelLink()
+RealValues::RealValues()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsChannelLink();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsRealValues();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(constructor:ModeliRpc.RealValues)
 }
-ChannelLink::ChannelLink(const ChannelLink& from)
+RealValues::RealValues(const RealValues& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
+      valuerefs_(from.valuerefs_),
+      values_(from.values_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  master_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.master_instance_name().size() > 0) {
-    master_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.master_instance_name_);
-  }
-  slave_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.slave_instance_name().size() > 0) {
-    slave_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.slave_instance_name_);
-  }
-  ::memcpy(&master_vr_, &from.master_vr_,
-    static_cast<size_t>(reinterpret_cast<char*>(&offset_) -
-    reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RealValues)
 }
 
-void ChannelLink::SharedCtor() {
-  master_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  slave_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&master_vr_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&offset_) -
-      reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
+void RealValues::SharedCtor() {
   _cached_size_ = 0;
 }
 
-ChannelLink::~ChannelLink() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.ChannelLink)
+RealValues::~RealValues() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.RealValues)
   SharedDtor();
 }
 
-void ChannelLink::SharedDtor() {
-  master_instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  slave_instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+void RealValues::SharedDtor() {
 }
 
-void ChannelLink::SetCachedSize(int size) const {
+void RealValues::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* ChannelLink::descriptor() {
+const ::google::protobuf::Descriptor* RealValues::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const ChannelLink& ChannelLink::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsChannelLink();
+const RealValues& RealValues::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsRealValues();
   return *internal_default_instance();
 }
 
-ChannelLink* ChannelLink::New(::google::protobuf::Arena* arena) const {
-  ChannelLink* n = new ChannelLink;
+RealValues* RealValues::New(::google::protobuf::Arena* arena) const {
+  RealValues* n = new RealValues;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void ChannelLink::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.ChannelLink)
+void RealValues::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.RealValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  master_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  slave_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&master_vr_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&offset_) -
-      reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
+  valuerefs_.Clear();
+  values_.Clear();
   _internal_metadata_.Clear();
 }
 
-bool ChannelLink::MergePartialFromCodedStream(
+bool RealValues::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.RealValues)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // string master_instance_name = 1;
+      // repeated uint32 valueRefs = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_master_instance_name()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.ChannelLink.master_instance_name"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // string slave_instance_name = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_slave_instance_name()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.ChannelLink.slave_instance_name"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 master_vr = 3;
-      case 3: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &master_vr_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // uint32 slave_vr = 4;
-      case 4: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                 input, this->mutable_valuerefs())));
+        } else if (
+            static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                    ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
-                 input, &slave_vr_)));
+                 1, 10u, input, this->mutable_valuerefs())));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // double factor = 5;
-      case 5: {
+      // repeated double values = 2;
+      case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(41u /* 41 & 0xFF */)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
                    double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 input, &factor_)));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // double offset = 6;
-      case 6: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {
-
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                 input, this->mutable_values())));
+        } else if (
+            static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(17u /* 17 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
                    double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 input, &offset_)));
+                 1, 18u, input, this->mutable_values())));
         } else {
           goto handle_unusual;
         }
@@ -1939,126 +1775,90 @@ bool ChannelLink::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.RealValues)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.RealValues)
   return false;
 #undef DO_
 }
 
-void ChannelLink::SerializeWithCachedSizes(
+void RealValues::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.RealValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string master_instance_name = 1;
-  if (this->master_instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.ChannelLink.master_instance_name");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      1, this->master_instance_name(), output);
-  }
-
-  // string slave_instance_name = 2;
-  if (this->slave_instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.ChannelLink.slave_instance_name");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      2, this->slave_instance_name(), output);
-  }
-
-  // uint32 master_vr = 3;
-  if (this->master_vr() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->master_vr(), output);
-  }
-
-  // uint32 slave_vr = 4;
-  if (this->slave_vr() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->slave_vr(), output);
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
+        _valuerefs_cached_byte_size_));
   }
-
-  // double factor = 5;
-  if (this->factor() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteDouble(5, this->factor(), output);
+  for (int i = 0, n = this->valuerefs_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->valuerefs(i), output);
   }
 
-  // double offset = 6;
-  if (this->offset() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->offset(), output);
+  // repeated double values = 2;
+  if (this->values_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
+        _values_cached_byte_size_));
+    ::google::protobuf::internal::WireFormatLite::WriteDoubleArray(
+      this->values().data(), this->values_size(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.RealValues)
 }
 
-::google::protobuf::uint8* ChannelLink::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* RealValues::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RealValues)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string master_instance_name = 1;
-  if (this->master_instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.ChannelLink.master_instance_name");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        1, this->master_instance_name(), target);
-  }
-
-  // string slave_instance_name = 2;
-  if (this->slave_instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.ChannelLink.slave_instance_name");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        2, this->slave_instance_name(), target);
-  }
-
-  // uint32 master_vr = 3;
-  if (this->master_vr() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->master_vr(), target);
-  }
-
-  // uint32 slave_vr = 4;
-  if (this->slave_vr() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->slave_vr(), target);
-  }
-
-  // double factor = 5;
-  if (this->factor() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(5, this->factor(), target);
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        static_cast< ::google::protobuf::int32>(
+            _valuerefs_cached_byte_size_), target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->valuerefs_, target);
   }
 
-  // double offset = 6;
-  if (this->offset() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->offset(), target);
+  // repeated double values = 2;
+  if (this->values_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        static_cast< ::google::protobuf::int32>(
+            _values_cached_byte_size_), target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteDoubleNoTagToArray(this->values_, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RealValues)
   return target;
 }
 
-size_t ChannelLink::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.ChannelLink)
+size_t RealValues::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RealValues)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -2066,44 +1866,2442 @@ size_t ChannelLink::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // string master_instance_name = 1;
-  if (this->master_instance_name().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->master_instance_name());
-  }
-
-  // string slave_instance_name = 2;
-  if (this->slave_instance_name().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->slave_instance_name());
+  // repeated uint32 valueRefs = 1;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      UInt32Size(this->valuerefs_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast< ::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _valuerefs_cached_byte_size_ = cached_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
   }
 
-  // uint32 master_vr = 3;
-  if (this->master_vr() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->master_vr());
-  }
+  // repeated double values = 2;
+  {
+    unsigned int count = static_cast<unsigned int>(this->values_size());
+    size_t data_size = 8UL * count;
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast< ::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _values_cached_byte_size_ = cached_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void RealValues::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RealValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  const RealValues* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const RealValues>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RealValues)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RealValues)
+    MergeFrom(*source);
+  }
+}
+
+void RealValues::MergeFrom(const RealValues& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RealValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  valuerefs_.MergeFrom(from.valuerefs_);
+  values_.MergeFrom(from.values_);
+}
+
+void RealValues::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RealValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RealValues::CopyFrom(const RealValues& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RealValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RealValues::IsInitialized() const {
+  return true;
+}
+
+void RealValues::Swap(RealValues* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void RealValues::InternalSwap(RealValues* other) {
+  using std::swap;
+  valuerefs_.InternalSwap(&other->valuerefs_);
+  values_.InternalSwap(&other->values_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata RealValues::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void BoolValues::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int BoolValues::kValueRefsFieldNumber;
+const int BoolValues::kValuesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+BoolValues::BoolValues()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsBoolValues();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.BoolValues)
+}
+BoolValues::BoolValues(const BoolValues& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      valuerefs_(from.valuerefs_),
+      values_(from.values_),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.BoolValues)
+}
+
+void BoolValues::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+BoolValues::~BoolValues() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.BoolValues)
+  SharedDtor();
+}
+
+void BoolValues::SharedDtor() {
+}
+
+void BoolValues::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* BoolValues::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const BoolValues& BoolValues::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsBoolValues();
+  return *internal_default_instance();
+}
+
+BoolValues* BoolValues::New(::google::protobuf::Arena* arena) const {
+  BoolValues* n = new BoolValues;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void BoolValues::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.BoolValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  valuerefs_.Clear();
+  values_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool BoolValues::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.BoolValues)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated uint32 valueRefs = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_valuerefs())));
+        } else if (
+            static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 10u, input, this->mutable_valuerefs())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated int32 values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, this->mutable_values())));
+        } else if (
+            static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 1, 18u, input, this->mutable_values())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.BoolValues)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.BoolValues)
+  return false;
+#undef DO_
+}
+
+void BoolValues::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.BoolValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
+        _valuerefs_cached_byte_size_));
+  }
+  for (int i = 0, n = this->valuerefs_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->valuerefs(i), output);
+  }
+
+  // repeated int32 values = 2;
+  if (this->values_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
+        _values_cached_byte_size_));
+  }
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32NoTag(
+      this->values(i), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.BoolValues)
+}
+
+::google::protobuf::uint8* BoolValues::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.BoolValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        static_cast< ::google::protobuf::int32>(
+            _valuerefs_cached_byte_size_), target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->valuerefs_, target);
+  }
+
+  // repeated int32 values = 2;
+  if (this->values_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        static_cast< ::google::protobuf::int32>(
+            _values_cached_byte_size_), target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteInt32NoTagToArray(this->values_, target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.BoolValues)
+  return target;
+}
+
+size_t BoolValues::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.BoolValues)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // repeated uint32 valueRefs = 1;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      UInt32Size(this->valuerefs_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast< ::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _valuerefs_cached_byte_size_ = cached_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated int32 values = 2;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      Int32Size(this->values_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast< ::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _values_cached_byte_size_ = cached_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void BoolValues::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.BoolValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  const BoolValues* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const BoolValues>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.BoolValues)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.BoolValues)
+    MergeFrom(*source);
+  }
+}
+
+void BoolValues::MergeFrom(const BoolValues& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.BoolValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  valuerefs_.MergeFrom(from.valuerefs_);
+  values_.MergeFrom(from.values_);
+}
+
+void BoolValues::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.BoolValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void BoolValues::CopyFrom(const BoolValues& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.BoolValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool BoolValues::IsInitialized() const {
+  return true;
+}
+
+void BoolValues::Swap(BoolValues* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void BoolValues::InternalSwap(BoolValues* other) {
+  using std::swap;
+  valuerefs_.InternalSwap(&other->valuerefs_);
+  values_.InternalSwap(&other->values_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata BoolValues::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void StringValues::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int StringValues::kValueRefsFieldNumber;
+const int StringValues::kValuesFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+StringValues::StringValues()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsStringValues();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.StringValues)
+}
+StringValues::StringValues(const StringValues& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      valuerefs_(from.valuerefs_),
+      values_(from.values_),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.StringValues)
+}
+
+void StringValues::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+StringValues::~StringValues() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.StringValues)
+  SharedDtor();
+}
+
+void StringValues::SharedDtor() {
+}
+
+void StringValues::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* StringValues::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const StringValues& StringValues::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsStringValues();
+  return *internal_default_instance();
+}
+
+StringValues* StringValues::New(::google::protobuf::Arena* arena) const {
+  StringValues* n = new StringValues;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void StringValues::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.StringValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  valuerefs_.Clear();
+  values_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool StringValues::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.StringValues)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated uint32 valueRefs = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_valuerefs())));
+        } else if (
+            static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 10u, input, this->mutable_valuerefs())));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated string values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->add_values()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->values(this->values_size() - 1).data(),
+            static_cast<int>(this->values(this->values_size() - 1).length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.StringValues.values"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.StringValues)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.StringValues)
+  return false;
+#undef DO_
+}
+
+void StringValues::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.StringValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(static_cast< ::google::protobuf::uint32>(
+        _valuerefs_cached_byte_size_));
+  }
+  for (int i = 0, n = this->valuerefs_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->valuerefs(i), output);
+  }
+
+  // repeated string values = 2;
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values(i).data(), static_cast<int>(this->values(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.StringValues.values");
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      2, this->values(i), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.StringValues)
+}
+
+::google::protobuf::uint8* StringValues::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.StringValues)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated uint32 valueRefs = 1;
+  if (this->valuerefs_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+        static_cast< ::google::protobuf::int32>(
+            _valuerefs_cached_byte_size_), target);
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->valuerefs_, target);
+  }
+
+  // repeated string values = 2;
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->values(i).data(), static_cast<int>(this->values(i).length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.StringValues.values");
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteStringToArray(2, this->values(i), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.StringValues)
+  return target;
+}
+
+size_t StringValues::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.StringValues)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // repeated uint32 valueRefs = 1;
+  {
+    size_t data_size = ::google::protobuf::internal::WireFormatLite::
+      UInt32Size(this->valuerefs_);
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+            static_cast< ::google::protobuf::int32>(data_size));
+    }
+    int cached_size = ::google::protobuf::internal::ToCachedSize(data_size);
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _valuerefs_cached_byte_size_ = cached_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated string values = 2;
+  total_size += 1 *
+      ::google::protobuf::internal::FromIntSize(this->values_size());
+  for (int i = 0, n = this->values_size(); i < n; i++) {
+    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+      this->values(i));
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void StringValues::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.StringValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  const StringValues* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const StringValues>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.StringValues)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.StringValues)
+    MergeFrom(*source);
+  }
+}
+
+void StringValues::MergeFrom(const StringValues& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.StringValues)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  valuerefs_.MergeFrom(from.valuerefs_);
+  values_.MergeFrom(from.values_);
+}
+
+void StringValues::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.StringValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void StringValues::CopyFrom(const StringValues& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.StringValues)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool StringValues::IsInitialized() const {
+  return true;
+}
+
+void StringValues::Swap(StringValues* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void StringValues::InternalSwap(StringValues* other) {
+  using std::swap;
+  valuerefs_.InternalSwap(&other->valuerefs_);
+  values_.InternalSwap(&other->values_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata StringValues::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ChannelLink::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ChannelLink::kMasterInstanceNameFieldNumber;
+const int ChannelLink::kSlaveInstanceNameFieldNumber;
+const int ChannelLink::kMasterVrFieldNumber;
+const int ChannelLink::kSlaveVrFieldNumber;
+const int ChannelLink::kFactorFieldNumber;
+const int ChannelLink::kOffsetFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ChannelLink::ChannelLink()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsChannelLink();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.ChannelLink)
+}
+ChannelLink::ChannelLink(const ChannelLink& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  master_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.master_instance_name().size() > 0) {
+    master_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.master_instance_name_);
+  }
+  slave_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.slave_instance_name().size() > 0) {
+    slave_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.slave_instance_name_);
+  }
+  ::memcpy(&master_vr_, &from.master_vr_,
+    static_cast<size_t>(reinterpret_cast<char*>(&offset_) -
+    reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.ChannelLink)
+}
+
+void ChannelLink::SharedCtor() {
+  master_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  slave_instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&master_vr_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&offset_) -
+      reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
+  _cached_size_ = 0;
+}
+
+ChannelLink::~ChannelLink() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.ChannelLink)
+  SharedDtor();
+}
+
+void ChannelLink::SharedDtor() {
+  master_instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  slave_instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ChannelLink::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* ChannelLink::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const ChannelLink& ChannelLink::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsChannelLink();
+  return *internal_default_instance();
+}
+
+ChannelLink* ChannelLink::New(::google::protobuf::Arena* arena) const {
+  ChannelLink* n = new ChannelLink;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void ChannelLink::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.ChannelLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  master_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  slave_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&master_vr_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&offset_) -
+      reinterpret_cast<char*>(&master_vr_)) + sizeof(offset_));
+  _internal_metadata_.Clear();
+}
+
+bool ChannelLink::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.ChannelLink)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string master_instance_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_master_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.ChannelLink.master_instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string slave_instance_name = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_slave_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.ChannelLink.slave_instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 master_vr = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &master_vr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 slave_vr = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &slave_vr_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double factor = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(41u /* 41 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &factor_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // double offset = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &offset_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.ChannelLink)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.ChannelLink)
+  return false;
+#undef DO_
+}
+
+void ChannelLink::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.ChannelLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string master_instance_name = 1;
+  if (this->master_instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.ChannelLink.master_instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->master_instance_name(), output);
+  }
+
+  // string slave_instance_name = 2;
+  if (this->slave_instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.ChannelLink.slave_instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->slave_instance_name(), output);
+  }
+
+  // uint32 master_vr = 3;
+  if (this->master_vr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->master_vr(), output);
+  }
+
+  // uint32 slave_vr = 4;
+  if (this->slave_vr() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->slave_vr(), output);
+  }
+
+  // double factor = 5;
+  if (this->factor() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(5, this->factor(), output);
+  }
+
+  // double offset = 6;
+  if (this->offset() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->offset(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.ChannelLink)
+}
+
+::google::protobuf::uint8* ChannelLink::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.ChannelLink)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string master_instance_name = 1;
+  if (this->master_instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->master_instance_name().data(), static_cast<int>(this->master_instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.ChannelLink.master_instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->master_instance_name(), target);
+  }
+
+  // string slave_instance_name = 2;
+  if (this->slave_instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->slave_instance_name().data(), static_cast<int>(this->slave_instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.ChannelLink.slave_instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->slave_instance_name(), target);
+  }
+
+  // uint32 master_vr = 3;
+  if (this->master_vr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->master_vr(), target);
+  }
+
+  // uint32 slave_vr = 4;
+  if (this->slave_vr() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->slave_vr(), target);
+  }
+
+  // double factor = 5;
+  if (this->factor() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(5, this->factor(), target);
+  }
+
+  // double offset = 6;
+  if (this->offset() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->offset(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.ChannelLink)
+  return target;
+}
+
+size_t ChannelLink::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.ChannelLink)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // string master_instance_name = 1;
+  if (this->master_instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->master_instance_name());
+  }
+
+  // string slave_instance_name = 2;
+  if (this->slave_instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->slave_instance_name());
+  }
+
+  // uint32 master_vr = 3;
+  if (this->master_vr() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->master_vr());
+  }
+
+  // uint32 slave_vr = 4;
+  if (this->slave_vr() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->slave_vr());
+  }
+
+  // double factor = 5;
+  if (this->factor() != 0) {
+    total_size += 1 + 8;
+  }
+
+  // double offset = 6;
+  if (this->offset() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void ChannelLink::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.ChannelLink)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ChannelLink* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const ChannelLink>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.ChannelLink)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.ChannelLink)
+    MergeFrom(*source);
+  }
+}
+
+void ChannelLink::MergeFrom(const ChannelLink& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.ChannelLink)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.master_instance_name().size() > 0) {
+
+    master_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.master_instance_name_);
+  }
+  if (from.slave_instance_name().size() > 0) {
+
+    slave_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.slave_instance_name_);
+  }
+  if (from.master_vr() != 0) {
+    set_master_vr(from.master_vr());
+  }
+  if (from.slave_vr() != 0) {
+    set_slave_vr(from.slave_vr());
+  }
+  if (from.factor() != 0) {
+    set_factor(from.factor());
+  }
+  if (from.offset() != 0) {
+    set_offset(from.offset());
+  }
+}
+
+void ChannelLink::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.ChannelLink)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ChannelLink::CopyFrom(const ChannelLink& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.ChannelLink)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ChannelLink::IsInitialized() const {
+  return true;
+}
+
+void ChannelLink::Swap(ChannelLink* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void ChannelLink::InternalSwap(ChannelLink* other) {
+  using std::swap;
+  master_instance_name_.Swap(&other->master_instance_name_);
+  slave_instance_name_.Swap(&other->slave_instance_name_);
+  swap(master_vr_, other->master_vr_);
+  swap(slave_vr_, other->slave_vr_);
+  swap(factor_, other->factor_);
+  swap(offset_, other->offset_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata ChannelLink::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PlayRequest::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PlayRequest::PlayRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayRequest();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PlayRequest)
+}
+PlayRequest::PlayRequest(const PlayRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayRequest)
+}
+
+void PlayRequest::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+PlayRequest::~PlayRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PlayRequest)
+  SharedDtor();
+}
+
+void PlayRequest::SharedDtor() {
+}
+
+void PlayRequest::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PlayRequest::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PlayRequest& PlayRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayRequest();
+  return *internal_default_instance();
+}
+
+PlayRequest* PlayRequest::New(::google::protobuf::Arena* arena) const {
+  PlayRequest* n = new PlayRequest;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PlayRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+bool PlayRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayRequest)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayRequest)
+  return false;
+#undef DO_
+}
+
+void PlayRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayRequest)
+}
+
+::google::protobuf::uint8* PlayRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayRequest)
+  return target;
+}
+
+size_t PlayRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayRequest)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void PlayRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PlayRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PlayRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayRequest)
+    MergeFrom(*source);
+  }
+}
+
+void PlayRequest::MergeFrom(const PlayRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void PlayRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PlayRequest::CopyFrom(const PlayRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PlayRequest::IsInitialized() const {
+  return true;
+}
+
+void PlayRequest::Swap(PlayRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PlayRequest::InternalSwap(PlayRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata PlayRequest::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PlayResponse::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PlayResponse::kStatusFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PlayResponse::PlayResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayResponse();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PlayResponse)
+}
+PlayResponse::PlayResponse(const PlayResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  status_ = from.status_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayResponse)
+}
+
+void PlayResponse::SharedCtor() {
+  status_ = 0;
+  _cached_size_ = 0;
+}
+
+PlayResponse::~PlayResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PlayResponse)
+  SharedDtor();
+}
+
+void PlayResponse::SharedDtor() {
+}
+
+void PlayResponse::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PlayResponse::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PlayResponse& PlayResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayResponse();
+  return *internal_default_instance();
+}
+
+PlayResponse* PlayResponse::New(::google::protobuf::Arena* arena) const {
+  PlayResponse* n = new PlayResponse;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PlayResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  status_ = 0;
+  _internal_metadata_.Clear();
+}
+
+bool PlayResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayResponse)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .ModeliRpc.Fmi2Status status = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayResponse)
+  return false;
+#undef DO_
+}
+
+void PlayResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayResponse)
+}
+
+::google::protobuf::uint8* PlayResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayResponse)
+  return target;
+}
+
+size_t PlayResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayResponse)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void PlayResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PlayResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PlayResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayResponse)
+    MergeFrom(*source);
+  }
+}
+
+void PlayResponse::MergeFrom(const PlayResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.status() != 0) {
+    set_status(from.status());
+  }
+}
+
+void PlayResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PlayResponse::CopyFrom(const PlayResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PlayResponse::IsInitialized() const {
+  return true;
+}
+
+void PlayResponse::Swap(PlayResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PlayResponse::InternalSwap(PlayResponse* other) {
+  using std::swap;
+  swap(status_, other->status_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata PlayResponse::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PlayFastRequest::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PlayFastRequest::kTimeFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PlayFastRequest::PlayFastRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastRequest();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PlayFastRequest)
+}
+PlayFastRequest::PlayFastRequest(const PlayFastRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  time_ = from.time_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayFastRequest)
+}
+
+void PlayFastRequest::SharedCtor() {
+  time_ = 0;
+  _cached_size_ = 0;
+}
+
+PlayFastRequest::~PlayFastRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PlayFastRequest)
+  SharedDtor();
+}
+
+void PlayFastRequest::SharedDtor() {
+}
+
+void PlayFastRequest::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PlayFastRequest::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PlayFastRequest& PlayFastRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastRequest();
+  return *internal_default_instance();
+}
+
+PlayFastRequest* PlayFastRequest::New(::google::protobuf::Arena* arena) const {
+  PlayFastRequest* n = new PlayFastRequest;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PlayFastRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayFastRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  time_ = 0;
+  _internal_metadata_.Clear();
+}
+
+bool PlayFastRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayFastRequest)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // double time = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(9u /* 9 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &time_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayFastRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayFastRequest)
+  return false;
+#undef DO_
+}
+
+void PlayFastRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayFastRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double time = 1;
+  if (this->time() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->time(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayFastRequest)
+}
+
+::google::protobuf::uint8* PlayFastRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayFastRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // double time = 1;
+  if (this->time() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->time(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayFastRequest)
+  return target;
+}
+
+size_t PlayFastRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayFastRequest)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // double time = 1;
+  if (this->time() != 0) {
+    total_size += 1 + 8;
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void PlayFastRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayFastRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PlayFastRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PlayFastRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayFastRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayFastRequest)
+    MergeFrom(*source);
+  }
+}
+
+void PlayFastRequest::MergeFrom(const PlayFastRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayFastRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.time() != 0) {
+    set_time(from.time());
+  }
+}
+
+void PlayFastRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayFastRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PlayFastRequest::CopyFrom(const PlayFastRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayFastRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PlayFastRequest::IsInitialized() const {
+  return true;
+}
+
+void PlayFastRequest::Swap(PlayFastRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PlayFastRequest::InternalSwap(PlayFastRequest* other) {
+  using std::swap;
+  swap(time_, other->time_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata PlayFastRequest::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PlayFastResponse::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PlayFastResponse::kStatusFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PlayFastResponse::PlayFastResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastResponse();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PlayFastResponse)
+}
+PlayFastResponse::PlayFastResponse(const PlayFastResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  status_ = from.status_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayFastResponse)
+}
+
+void PlayFastResponse::SharedCtor() {
+  status_ = 0;
+  _cached_size_ = 0;
+}
+
+PlayFastResponse::~PlayFastResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PlayFastResponse)
+  SharedDtor();
+}
+
+void PlayFastResponse::SharedDtor() {
+}
+
+void PlayFastResponse::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PlayFastResponse::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PlayFastResponse& PlayFastResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastResponse();
+  return *internal_default_instance();
+}
+
+PlayFastResponse* PlayFastResponse::New(::google::protobuf::Arena* arena) const {
+  PlayFastResponse* n = new PlayFastResponse;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PlayFastResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayFastResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  status_ = 0;
+  _internal_metadata_.Clear();
+}
+
+bool PlayFastResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayFastResponse)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .ModeliRpc.Fmi2Status status = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayFastResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayFastResponse)
+  return false;
+#undef DO_
+}
+
+void PlayFastResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayFastResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayFastResponse)
+}
+
+::google::protobuf::uint8* PlayFastResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayFastResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
+  }
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayFastResponse)
+  return target;
+}
+
+size_t PlayFastResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayFastResponse)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void PlayFastResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayFastResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PlayFastResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PlayFastResponse>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayFastResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayFastResponse)
+    MergeFrom(*source);
+  }
+}
+
+void PlayFastResponse::MergeFrom(const PlayFastResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayFastResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.status() != 0) {
+    set_status(from.status());
+  }
+}
+
+void PlayFastResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayFastResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PlayFastResponse::CopyFrom(const PlayFastResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayFastResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PlayFastResponse::IsInitialized() const {
+  return true;
+}
+
+void PlayFastResponse::Swap(PlayFastResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PlayFastResponse::InternalSwap(PlayFastResponse* other) {
+  using std::swap;
+  swap(status_, other->status_);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata PlayFastResponse::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PauseRequest::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PauseRequest::PauseRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseRequest();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PauseRequest)
+}
+PauseRequest::PauseRequest(const PauseRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PauseRequest)
+}
+
+void PauseRequest::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+PauseRequest::~PauseRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PauseRequest)
+  SharedDtor();
+}
+
+void PauseRequest::SharedDtor() {
+}
+
+void PauseRequest::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PauseRequest::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PauseRequest& PauseRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseRequest();
+  return *internal_default_instance();
+}
+
+PauseRequest* PauseRequest::New(::google::protobuf::Arena* arena) const {
+  PauseRequest* n = new PauseRequest;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PauseRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PauseRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+bool PauseRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PauseRequest)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PauseRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PauseRequest)
+  return false;
+#undef DO_
+}
+
+void PauseRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PauseRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PauseRequest)
+}
+
+::google::protobuf::uint8* PauseRequest::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PauseRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PauseRequest)
+  return target;
+}
+
+size_t PauseRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PauseRequest)
+  size_t total_size = 0;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
+  }
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void PauseRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PauseRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PauseRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PauseRequest>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PauseRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PauseRequest)
+    MergeFrom(*source);
+  }
+}
+
+void PauseRequest::MergeFrom(const PauseRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PauseRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void PauseRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PauseRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PauseRequest::CopyFrom(const PauseRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PauseRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PauseRequest::IsInitialized() const {
+  return true;
+}
+
+void PauseRequest::Swap(PauseRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PauseRequest::InternalSwap(PauseRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata PauseRequest::GetMetadata() const {
+  protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PauseResponse::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PauseResponse::PauseResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseResponse();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:ModeliRpc.PauseResponse)
+}
+PauseResponse::PauseResponse(const PauseResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PauseResponse)
+}
+
+void PauseResponse::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+PauseResponse::~PauseResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.PauseResponse)
+  SharedDtor();
+}
+
+void PauseResponse::SharedDtor() {
+}
+
+void PauseResponse::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* PauseResponse::descriptor() {
+  ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const PauseResponse& PauseResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseResponse();
+  return *internal_default_instance();
+}
+
+PauseResponse* PauseResponse::New(::google::protobuf::Arena* arena) const {
+  PauseResponse* n = new PauseResponse;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void PauseResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.PauseResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+bool PauseResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:ModeliRpc.PauseResponse)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:ModeliRpc.PauseResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.PauseResponse)
+  return false;
+#undef DO_
+}
+
+void PauseResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.PauseResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
+  }
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.PauseResponse)
+}
+
+::google::protobuf::uint8* PauseResponse::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PauseResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
 
-  // uint32 slave_vr = 4;
-  if (this->slave_vr() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::UInt32Size(
-        this->slave_vr());
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PauseResponse)
+  return target;
+}
 
-  // double factor = 5;
-  if (this->factor() != 0) {
-    total_size += 1 + 8;
-  }
+size_t PauseResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PauseResponse)
+  size_t total_size = 0;
 
-  // double offset = 6;
-  if (this->offset() != 0) {
-    total_size += 1 + 8;
+  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -2111,85 +4309,59 @@ size_t ChannelLink::ByteSizeLong() const {
   return total_size;
 }
 
-void ChannelLink::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.ChannelLink)
+void PauseResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PauseResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const ChannelLink* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const ChannelLink>(
+  const PauseResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const PauseResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PauseResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.ChannelLink)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PauseResponse)
     MergeFrom(*source);
   }
 }
 
-void ChannelLink::MergeFrom(const ChannelLink& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.ChannelLink)
+void PauseResponse::MergeFrom(const PauseResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PauseResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.master_instance_name().size() > 0) {
-
-    master_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.master_instance_name_);
-  }
-  if (from.slave_instance_name().size() > 0) {
-
-    slave_instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.slave_instance_name_);
-  }
-  if (from.master_vr() != 0) {
-    set_master_vr(from.master_vr());
-  }
-  if (from.slave_vr() != 0) {
-    set_slave_vr(from.slave_vr());
-  }
-  if (from.factor() != 0) {
-    set_factor(from.factor());
-  }
-  if (from.offset() != 0) {
-    set_offset(from.offset());
-  }
 }
 
-void ChannelLink::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.ChannelLink)
+void PauseResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PauseResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void ChannelLink::CopyFrom(const ChannelLink& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.ChannelLink)
+void PauseResponse::CopyFrom(const PauseResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PauseResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool ChannelLink::IsInitialized() const {
+bool PauseResponse::IsInitialized() const {
   return true;
 }
 
-void ChannelLink::Swap(ChannelLink* other) {
+void PauseResponse::Swap(PauseResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void ChannelLink::InternalSwap(ChannelLink* other) {
+void PauseResponse::InternalSwap(PauseResponse* other) {
   using std::swap;
-  master_instance_name_.Swap(&other->master_instance_name_);
-  slave_instance_name_.Swap(&other->slave_instance_name_);
-  swap(master_vr_, other->master_vr_);
-  swap(slave_vr_, other->slave_vr_);
-  swap(factor_, other->factor_);
-  swap(offset_, other->offset_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata ChannelLink::GetMetadata() const {
+::google::protobuf::Metadata PauseResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -2197,64 +4369,64 @@ void ChannelLink::InternalSwap(ChannelLink* other) {
 
 // ===================================================================
 
-void PlayRequest::InitAsDefaultInstance() {
+void StopRequest::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PlayRequest::PlayRequest()
+StopRequest::StopRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsStopRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.StopRequest)
 }
-PlayRequest::PlayRequest(const PlayRequest& from)
+StopRequest::StopRequest(const StopRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.StopRequest)
 }
 
-void PlayRequest::SharedCtor() {
+void StopRequest::SharedCtor() {
   _cached_size_ = 0;
 }
 
-PlayRequest::~PlayRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PlayRequest)
+StopRequest::~StopRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.StopRequest)
   SharedDtor();
 }
 
-void PlayRequest::SharedDtor() {
+void StopRequest::SharedDtor() {
 }
 
-void PlayRequest::SetCachedSize(int size) const {
+void StopRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PlayRequest::descriptor() {
+const ::google::protobuf::Descriptor* StopRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PlayRequest& PlayRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayRequest();
+const StopRequest& StopRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsStopRequest();
   return *internal_default_instance();
 }
 
-PlayRequest* PlayRequest::New(::google::protobuf::Arena* arena) const {
-  PlayRequest* n = new PlayRequest;
+StopRequest* StopRequest::New(::google::protobuf::Arena* arena) const {
+  StopRequest* n = new StopRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PlayRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayRequest)
+void StopRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.StopRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -2262,11 +4434,11 @@ void PlayRequest::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool PlayRequest::MergePartialFromCodedStream(
+bool StopRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.StopRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -2279,17 +4451,17 @@ bool PlayRequest::MergePartialFromCodedStream(
           input, tag, _internal_metadata_.mutable_unknown_fields()));
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.StopRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.StopRequest)
   return false;
 #undef DO_
 }
 
-void PlayRequest::SerializeWithCachedSizes(
+void StopRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.StopRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -2297,13 +4469,13 @@ void PlayRequest::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.StopRequest)
 }
 
-::google::protobuf::uint8* PlayRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* StopRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.StopRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -2311,12 +4483,12 @@ void PlayRequest::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.StopRequest)
   return target;
 }
 
-size_t PlayRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayRequest)
+size_t StopRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.StopRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -2331,23 +4503,23 @@ size_t PlayRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void PlayRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayRequest)
+void StopRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.StopRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const PlayRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PlayRequest>(
+  const StopRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const StopRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.StopRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.StopRequest)
     MergeFrom(*source);
   }
 }
 
-void PlayRequest::MergeFrom(const PlayRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayRequest)
+void StopRequest::MergeFrom(const StopRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.StopRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -2355,35 +4527,35 @@ void PlayRequest::MergeFrom(const PlayRequest& from) {
 
 }
 
-void PlayRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayRequest)
+void StopRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.StopRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PlayRequest::CopyFrom(const PlayRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayRequest)
+void StopRequest::CopyFrom(const StopRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.StopRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PlayRequest::IsInitialized() const {
+bool StopRequest::IsInitialized() const {
   return true;
 }
 
-void PlayRequest::Swap(PlayRequest* other) {
+void StopRequest::Swap(StopRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PlayRequest::InternalSwap(PlayRequest* other) {
+void StopRequest::InternalSwap(StopRequest* other) {
   using std::swap;
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PlayRequest::GetMetadata() const {
+::google::protobuf::Metadata StopRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -2391,67 +4563,67 @@ void PlayRequest::InternalSwap(PlayRequest* other) {
 
 // ===================================================================
 
-void PlayResponse::InitAsDefaultInstance() {
+void StopResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int PlayResponse::kStatusFieldNumber;
+const int StopResponse::kStatusFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PlayResponse::PlayResponse()
+StopResponse::StopResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsStopResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.StopResponse)
 }
-PlayResponse::PlayResponse(const PlayResponse& from)
+StopResponse::StopResponse(const StopResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   status_ = from.status_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.StopResponse)
 }
 
-void PlayResponse::SharedCtor() {
+void StopResponse::SharedCtor() {
   status_ = 0;
   _cached_size_ = 0;
 }
 
-PlayResponse::~PlayResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PlayResponse)
+StopResponse::~StopResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.StopResponse)
   SharedDtor();
 }
 
-void PlayResponse::SharedDtor() {
+void StopResponse::SharedDtor() {
 }
 
-void PlayResponse::SetCachedSize(int size) const {
+void StopResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PlayResponse::descriptor() {
+const ::google::protobuf::Descriptor* StopResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PlayResponse& PlayResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayResponse();
+const StopResponse& StopResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsStopResponse();
   return *internal_default_instance();
 }
 
-PlayResponse* PlayResponse::New(::google::protobuf::Arena* arena) const {
-  PlayResponse* n = new PlayResponse;
+StopResponse* StopResponse::New(::google::protobuf::Arena* arena) const {
+  StopResponse* n = new StopResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PlayResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayResponse)
+void StopResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.StopResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -2460,11 +4632,11 @@ void PlayResponse::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool PlayResponse::MergePartialFromCodedStream(
+bool StopResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.StopResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -2497,17 +4669,17 @@ bool PlayResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.StopResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.StopResponse)
   return false;
 #undef DO_
 }
 
-void PlayResponse::SerializeWithCachedSizes(
+void StopResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.StopResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -2521,13 +4693,13 @@ void PlayResponse::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.StopResponse)
 }
 
-::google::protobuf::uint8* PlayResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* StopResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.StopResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -2541,12 +4713,12 @@ void PlayResponse::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.StopResponse)
   return target;
 }
 
-size_t PlayResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayResponse)
+size_t StopResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.StopResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -2567,23 +4739,23 @@ size_t PlayResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void PlayResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayResponse)
+void StopResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.StopResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const PlayResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PlayResponse>(
+  const StopResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const StopResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.StopResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.StopResponse)
     MergeFrom(*source);
   }
 }
-
-void PlayResponse::MergeFrom(const PlayResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayResponse)
+
+void StopResponse::MergeFrom(const StopResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.StopResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -2594,36 +4766,36 @@ void PlayResponse::MergeFrom(const PlayResponse& from) {
   }
 }
 
-void PlayResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayResponse)
+void StopResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.StopResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PlayResponse::CopyFrom(const PlayResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayResponse)
+void StopResponse::CopyFrom(const StopResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.StopResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PlayResponse::IsInitialized() const {
+bool StopResponse::IsInitialized() const {
   return true;
 }
 
-void PlayResponse::Swap(PlayResponse* other) {
+void StopResponse::Swap(StopResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PlayResponse::InternalSwap(PlayResponse* other) {
+void StopResponse::InternalSwap(StopResponse* other) {
   using std::swap;
   swap(status_, other->status_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PlayResponse::GetMetadata() const {
+::google::protobuf::Metadata StopResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -2631,93 +4803,119 @@ void PlayResponse::InternalSwap(PlayResponse* other) {
 
 // ===================================================================
 
-void PlayFastRequest::InitAsDefaultInstance() {
+void AddFmuRequest::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int PlayFastRequest::kTimeFieldNumber;
+const int AddFmuRequest::kInstanceNameFieldNumber;
+const int AddFmuRequest::kDataFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PlayFastRequest::PlayFastRequest()
+AddFmuRequest::AddFmuRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.AddFmuRequest)
 }
-PlayFastRequest::PlayFastRequest(const PlayFastRequest& from)
+AddFmuRequest::AddFmuRequest(const AddFmuRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  time_ = from.time_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayFastRequest)
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.instance_name().size() > 0) {
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.data().size() > 0) {
+    data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.data_);
+  }
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddFmuRequest)
 }
 
-void PlayFastRequest::SharedCtor() {
-  time_ = 0;
+void AddFmuRequest::SharedCtor() {
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   _cached_size_ = 0;
 }
 
-PlayFastRequest::~PlayFastRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PlayFastRequest)
+AddFmuRequest::~AddFmuRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.AddFmuRequest)
   SharedDtor();
 }
 
-void PlayFastRequest::SharedDtor() {
+void AddFmuRequest::SharedDtor() {
+  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 
-void PlayFastRequest::SetCachedSize(int size) const {
+void AddFmuRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PlayFastRequest::descriptor() {
+const ::google::protobuf::Descriptor* AddFmuRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PlayFastRequest& PlayFastRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastRequest();
+const AddFmuRequest& AddFmuRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuRequest();
   return *internal_default_instance();
 }
 
-PlayFastRequest* PlayFastRequest::New(::google::protobuf::Arena* arena) const {
-  PlayFastRequest* n = new PlayFastRequest;
+AddFmuRequest* AddFmuRequest::New(::google::protobuf::Arena* arena) const {
+  AddFmuRequest* n = new AddFmuRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PlayFastRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayFastRequest)
+void AddFmuRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  time_ = 0;
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   _internal_metadata_.Clear();
 }
 
-bool PlayFastRequest::MergePartialFromCodedStream(
+bool AddFmuRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.AddFmuRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // double time = 1;
+      // string instance_name = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(9u /* 9 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.AddFmuRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
 
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 input, &time_)));
+      // bytes data = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_data()));
         } else {
           goto handle_unusual;
         }
@@ -2736,54 +4934,78 @@ bool PlayFastRequest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.AddFmuRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddFmuRequest)
   return false;
 #undef DO_
 }
 
-void PlayFastRequest::SerializeWithCachedSizes(
+void AddFmuRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // double time = 1;
-  if (this->time() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->time(), output);
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.AddFmuRequest.instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->instance_name(), output);
+  }
+
+  // bytes data = 2;
+  if (this->data().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      2, this->data(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddFmuRequest)
 }
 
-::google::protobuf::uint8* PlayFastRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* AddFmuRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // double time = 1;
-  if (this->time() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->time(), target);
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.AddFmuRequest.instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->instance_name(), target);
+  }
+
+  // bytes data = 2;
+  if (this->data().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        2, this->data(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddFmuRequest)
   return target;
 }
 
-size_t PlayFastRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayFastRequest)
+size_t AddFmuRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddFmuRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -2791,9 +5013,18 @@ size_t PlayFastRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // double time = 1;
-  if (this->time() != 0) {
-    total_size += 1 + 8;
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->instance_name());
+  }
+
+  // bytes data = 2;
+  if (this->data().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->data());
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -2803,63 +5034,69 @@ size_t PlayFastRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void PlayFastRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayFastRequest)
+void AddFmuRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddFmuRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const PlayFastRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PlayFastRequest>(
+  const AddFmuRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const AddFmuRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddFmuRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayFastRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddFmuRequest)
     MergeFrom(*source);
   }
 }
 
-void PlayFastRequest::MergeFrom(const PlayFastRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayFastRequest)
+void AddFmuRequest::MergeFrom(const AddFmuRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddFmuRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.time() != 0) {
-    set_time(from.time());
+  if (from.instance_name().size() > 0) {
+
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  if (from.data().size() > 0) {
+
+    data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.data_);
   }
 }
 
-void PlayFastRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayFastRequest)
+void AddFmuRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddFmuRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PlayFastRequest::CopyFrom(const PlayFastRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayFastRequest)
+void AddFmuRequest::CopyFrom(const AddFmuRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddFmuRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PlayFastRequest::IsInitialized() const {
+bool AddFmuRequest::IsInitialized() const {
   return true;
 }
 
-void PlayFastRequest::Swap(PlayFastRequest* other) {
+void AddFmuRequest::Swap(AddFmuRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PlayFastRequest::InternalSwap(PlayFastRequest* other) {
+void AddFmuRequest::InternalSwap(AddFmuRequest* other) {
   using std::swap;
-  swap(time_, other->time_);
+  instance_name_.Swap(&other->instance_name_);
+  data_.Swap(&other->data_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PlayFastRequest::GetMetadata() const {
+::google::protobuf::Metadata AddFmuRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -2867,94 +5104,93 @@ void PlayFastRequest::InternalSwap(PlayFastRequest* other) {
 
 // ===================================================================
 
-void PlayFastResponse::InitAsDefaultInstance() {
+void AddFmuResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int PlayFastResponse::kStatusFieldNumber;
+const int AddFmuResponse::kSuccessFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PlayFastResponse::PlayFastResponse()
+AddFmuResponse::AddFmuResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.AddFmuResponse)
 }
-PlayFastResponse::PlayFastResponse(const PlayFastResponse& from)
+AddFmuResponse::AddFmuResponse(const AddFmuResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  status_ = from.status_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PlayFastResponse)
+  success_ = from.success_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddFmuResponse)
 }
 
-void PlayFastResponse::SharedCtor() {
-  status_ = 0;
+void AddFmuResponse::SharedCtor() {
+  success_ = false;
   _cached_size_ = 0;
 }
 
-PlayFastResponse::~PlayFastResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PlayFastResponse)
+AddFmuResponse::~AddFmuResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.AddFmuResponse)
   SharedDtor();
 }
 
-void PlayFastResponse::SharedDtor() {
+void AddFmuResponse::SharedDtor() {
 }
 
-void PlayFastResponse::SetCachedSize(int size) const {
+void AddFmuResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PlayFastResponse::descriptor() {
+const ::google::protobuf::Descriptor* AddFmuResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PlayFastResponse& PlayFastResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPlayFastResponse();
+const AddFmuResponse& AddFmuResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuResponse();
   return *internal_default_instance();
 }
 
-PlayFastResponse* PlayFastResponse::New(::google::protobuf::Arena* arena) const {
-  PlayFastResponse* n = new PlayFastResponse;
+AddFmuResponse* AddFmuResponse::New(::google::protobuf::Arena* arena) const {
+  AddFmuResponse* n = new AddFmuResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PlayFastResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PlayFastResponse)
+void AddFmuResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  status_ = 0;
+  success_ = false;
   _internal_metadata_.Clear();
 }
 
-bool PlayFastResponse::MergePartialFromCodedStream(
+bool AddFmuResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.AddFmuResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.Fmi2Status status = 1;
+      // bool success = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
-          int value;
+
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &success_)));
         } else {
           goto handle_unusual;
         }
@@ -2973,56 +5209,54 @@ bool PlayFastResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.AddFmuResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddFmuResponse)
   return false;
 #undef DO_
 }
 
-void PlayFastResponse::SerializeWithCachedSizes(
+void AddFmuResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      1, this->status(), output);
+  // bool success = 1;
+  if (this->success() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddFmuResponse)
 }
 
-::google::protobuf::uint8* PlayFastResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* AddFmuResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      1, this->status(), target);
+  // bool success = 1;
+  if (this->success() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddFmuResponse)
   return target;
 }
 
-size_t PlayFastResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PlayFastResponse)
+size_t AddFmuResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddFmuResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -3030,10 +5264,9 @@ size_t PlayFastResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  // bool success = 1;
+  if (this->success() != 0) {
+    total_size += 1 + 1;
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -3043,63 +5276,63 @@ size_t PlayFastResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void PlayFastResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PlayFastResponse)
+void AddFmuResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddFmuResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const PlayFastResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PlayFastResponse>(
+  const AddFmuResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const AddFmuResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddFmuResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PlayFastResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddFmuResponse)
     MergeFrom(*source);
   }
 }
 
-void PlayFastResponse::MergeFrom(const PlayFastResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PlayFastResponse)
+void AddFmuResponse::MergeFrom(const AddFmuResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddFmuResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.status() != 0) {
-    set_status(from.status());
+  if (from.success() != 0) {
+    set_success(from.success());
   }
 }
 
-void PlayFastResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PlayFastResponse)
+void AddFmuResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddFmuResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PlayFastResponse::CopyFrom(const PlayFastResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PlayFastResponse)
+void AddFmuResponse::CopyFrom(const AddFmuResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddFmuResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PlayFastResponse::IsInitialized() const {
+bool AddFmuResponse::IsInitialized() const {
   return true;
 }
 
-void PlayFastResponse::Swap(PlayFastResponse* other) {
+void AddFmuResponse::Swap(AddFmuResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PlayFastResponse::InternalSwap(PlayFastResponse* other) {
+void AddFmuResponse::InternalSwap(AddFmuResponse* other) {
   using std::swap;
-  swap(status_, other->status_);
+  swap(success_, other->success_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PlayFastResponse::GetMetadata() const {
+::google::protobuf::Metadata AddFmuResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -3107,126 +5340,176 @@ void PlayFastResponse::InternalSwap(PlayFastResponse* other) {
 
 // ===================================================================
 
-void PauseRequest::InitAsDefaultInstance() {
+void RemoveFmuRequest::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RemoveFmuRequest::kInstanceNameFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PauseRequest::PauseRequest()
+RemoveFmuRequest::RemoveFmuRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveFmuRequest)
 }
-PauseRequest::PauseRequest(const PauseRequest& from)
+RemoveFmuRequest::RemoveFmuRequest(const RemoveFmuRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PauseRequest)
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.instance_name().size() > 0) {
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveFmuRequest)
 }
 
-void PauseRequest::SharedCtor() {
+void RemoveFmuRequest::SharedCtor() {
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   _cached_size_ = 0;
 }
 
-PauseRequest::~PauseRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PauseRequest)
+RemoveFmuRequest::~RemoveFmuRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveFmuRequest)
   SharedDtor();
 }
 
-void PauseRequest::SharedDtor() {
+void RemoveFmuRequest::SharedDtor() {
+  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
 
-void PauseRequest::SetCachedSize(int size) const {
+void RemoveFmuRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PauseRequest::descriptor() {
+const ::google::protobuf::Descriptor* RemoveFmuRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PauseRequest& PauseRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseRequest();
+const RemoveFmuRequest& RemoveFmuRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuRequest();
   return *internal_default_instance();
 }
 
-PauseRequest* PauseRequest::New(::google::protobuf::Arena* arena) const {
-  PauseRequest* n = new PauseRequest;
+RemoveFmuRequest* RemoveFmuRequest::New(::google::protobuf::Arena* arena) const {
+  RemoveFmuRequest* n = new RemoveFmuRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PauseRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PauseRequest)
+void RemoveFmuRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   _internal_metadata_.Clear();
 }
 
-bool PauseRequest::MergePartialFromCodedStream(
+bool RemoveFmuRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveFmuRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
-  handle_unusual:
-    if (tag == 0) {
-      goto success;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string instance_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.RemoveFmuRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
     }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, _internal_metadata_.mutable_unknown_fields()));
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveFmuRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveFmuRequest)
   return false;
 #undef DO_
 }
 
-void PauseRequest::SerializeWithCachedSizes(
+void RemoveFmuRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.RemoveFmuRequest.instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->instance_name(), output);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveFmuRequest)
 }
 
-::google::protobuf::uint8* PauseRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* RemoveFmuRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveFmuRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.RemoveFmuRequest.instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->instance_name(), target);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveFmuRequest)
   return target;
 }
 
-size_t PauseRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PauseRequest)
+size_t RemoveFmuRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveFmuRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -3234,6 +5517,13 @@ size_t PauseRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->instance_name());
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -3241,59 +5531,64 @@ size_t PauseRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void PauseRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PauseRequest)
+void RemoveFmuRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveFmuRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const PauseRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PauseRequest>(
+  const RemoveFmuRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveFmuRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveFmuRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PauseRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveFmuRequest)
     MergeFrom(*source);
   }
 }
 
-void PauseRequest::MergeFrom(const PauseRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PauseRequest)
+void RemoveFmuRequest::MergeFrom(const RemoveFmuRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveFmuRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  if (from.instance_name().size() > 0) {
+
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
 }
 
-void PauseRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PauseRequest)
+void RemoveFmuRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveFmuRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PauseRequest::CopyFrom(const PauseRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PauseRequest)
+void RemoveFmuRequest::CopyFrom(const RemoveFmuRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveFmuRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PauseRequest::IsInitialized() const {
+bool RemoveFmuRequest::IsInitialized() const {
   return true;
 }
 
-void PauseRequest::Swap(PauseRequest* other) {
+void RemoveFmuRequest::Swap(RemoveFmuRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PauseRequest::InternalSwap(PauseRequest* other) {
+void RemoveFmuRequest::InternalSwap(RemoveFmuRequest* other) {
   using std::swap;
+  instance_name_.Swap(&other->instance_name_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PauseRequest::GetMetadata() const {
+::google::protobuf::Metadata RemoveFmuRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -3301,126 +5596,159 @@ void PauseRequest::InternalSwap(PauseRequest* other) {
 
 // ===================================================================
 
-void PauseResponse::InitAsDefaultInstance() {
+void RemoveFmuResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int RemoveFmuResponse::kSuccessFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-PauseResponse::PauseResponse()
+RemoveFmuResponse::RemoveFmuResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveFmuResponse)
 }
-PauseResponse::PauseResponse(const PauseResponse& from)
+RemoveFmuResponse::RemoveFmuResponse(const RemoveFmuResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.PauseResponse)
+  success_ = from.success_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveFmuResponse)
 }
 
-void PauseResponse::SharedCtor() {
+void RemoveFmuResponse::SharedCtor() {
+  success_ = false;
   _cached_size_ = 0;
 }
 
-PauseResponse::~PauseResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.PauseResponse)
+RemoveFmuResponse::~RemoveFmuResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveFmuResponse)
   SharedDtor();
 }
 
-void PauseResponse::SharedDtor() {
+void RemoveFmuResponse::SharedDtor() {
 }
 
-void PauseResponse::SetCachedSize(int size) const {
+void RemoveFmuResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* PauseResponse::descriptor() {
+const ::google::protobuf::Descriptor* RemoveFmuResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const PauseResponse& PauseResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsPauseResponse();
+const RemoveFmuResponse& RemoveFmuResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuResponse();
   return *internal_default_instance();
 }
 
-PauseResponse* PauseResponse::New(::google::protobuf::Arena* arena) const {
-  PauseResponse* n = new PauseResponse;
+RemoveFmuResponse* RemoveFmuResponse::New(::google::protobuf::Arena* arena) const {
+  RemoveFmuResponse* n = new RemoveFmuResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void PauseResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.PauseResponse)
+void RemoveFmuResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
+  success_ = false;
   _internal_metadata_.Clear();
 }
 
-bool PauseResponse::MergePartialFromCodedStream(
+bool RemoveFmuResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveFmuResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
-  handle_unusual:
-    if (tag == 0) {
-      goto success;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bool success = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &success_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
     }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, _internal_metadata_.mutable_unknown_fields()));
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveFmuResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveFmuResponse)
   return false;
 #undef DO_
 }
 
-void PauseResponse::SerializeWithCachedSizes(
+void RemoveFmuResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // bool success = 1;
+  if (this->success() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveFmuResponse)
 }
 
-::google::protobuf::uint8* PauseResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* RemoveFmuResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveFmuResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // bool success = 1;
+  if (this->success() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveFmuResponse)
   return target;
 }
 
-size_t PauseResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.PauseResponse)
+size_t RemoveFmuResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveFmuResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -3428,6 +5756,11 @@ size_t PauseResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
+  // bool success = 1;
+  if (this->success() != 0) {
+    total_size += 1 + 1;
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -3435,59 +5768,63 @@ size_t PauseResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void PauseResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.PauseResponse)
+void RemoveFmuResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveFmuResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const PauseResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const PauseResponse>(
+  const RemoveFmuResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveFmuResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveFmuResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.PauseResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveFmuResponse)
     MergeFrom(*source);
   }
 }
 
-void PauseResponse::MergeFrom(const PauseResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.PauseResponse)
+void RemoveFmuResponse::MergeFrom(const RemoveFmuResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveFmuResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  if (from.success() != 0) {
+    set_success(from.success());
+  }
 }
 
-void PauseResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.PauseResponse)
+void RemoveFmuResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveFmuResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void PauseResponse::CopyFrom(const PauseResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.PauseResponse)
+void RemoveFmuResponse::CopyFrom(const RemoveFmuResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveFmuResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool PauseResponse::IsInitialized() const {
+bool RemoveFmuResponse::IsInitialized() const {
   return true;
 }
 
-void PauseResponse::Swap(PauseResponse* other) {
+void RemoveFmuResponse::Swap(RemoveFmuResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void PauseResponse::InternalSwap(PauseResponse* other) {
+void RemoveFmuResponse::InternalSwap(RemoveFmuResponse* other) {
   using std::swap;
+  swap(success_, other->success_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata PauseResponse::GetMetadata() const {
+::google::protobuf::Metadata RemoveFmuResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -3495,126 +5832,170 @@ void PauseResponse::InternalSwap(PauseResponse* other) {
 
 // ===================================================================
 
-void StopRequest::InitAsDefaultInstance() {
+void AddChannelLinkRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_AddChannelLinkRequest_default_instance_._instance.get_mutable()->channel_link_ = const_cast< ::ModeliRpc::ChannelLink*>(
+      ::ModeliRpc::ChannelLink::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int AddChannelLinkRequest::kChannelLinkFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-StopRequest::StopRequest()
+AddChannelLinkRequest::AddChannelLinkRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsStopRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.AddChannelLinkRequest)
 }
-StopRequest::StopRequest(const StopRequest& from)
+AddChannelLinkRequest::AddChannelLinkRequest(const AddChannelLinkRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.StopRequest)
+  if (from.has_channel_link()) {
+    channel_link_ = new ::ModeliRpc::ChannelLink(*from.channel_link_);
+  } else {
+    channel_link_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddChannelLinkRequest)
 }
 
-void StopRequest::SharedCtor() {
+void AddChannelLinkRequest::SharedCtor() {
+  channel_link_ = NULL;
   _cached_size_ = 0;
 }
 
-StopRequest::~StopRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.StopRequest)
+AddChannelLinkRequest::~AddChannelLinkRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.AddChannelLinkRequest)
   SharedDtor();
 }
 
-void StopRequest::SharedDtor() {
+void AddChannelLinkRequest::SharedDtor() {
+  if (this != internal_default_instance()) delete channel_link_;
 }
 
-void StopRequest::SetCachedSize(int size) const {
+void AddChannelLinkRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* StopRequest::descriptor() {
+const ::google::protobuf::Descriptor* AddChannelLinkRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const StopRequest& StopRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsStopRequest();
+const AddChannelLinkRequest& AddChannelLinkRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkRequest();
   return *internal_default_instance();
 }
 
-StopRequest* StopRequest::New(::google::protobuf::Arena* arena) const {
-  StopRequest* n = new StopRequest;
+AddChannelLinkRequest* AddChannelLinkRequest::New(::google::protobuf::Arena* arena) const {
+  AddChannelLinkRequest* n = new AddChannelLinkRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void StopRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.StopRequest)
+void AddChannelLinkRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
+  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
+    delete channel_link_;
+  }
+  channel_link_ = NULL;
   _internal_metadata_.Clear();
 }
 
-bool StopRequest::MergePartialFromCodedStream(
+bool AddChannelLinkRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.AddChannelLinkRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
-  handle_unusual:
-    if (tag == 0) {
-      goto success;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .ModeliRpc.ChannelLink channel_link = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_channel_link()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
     }
-    DO_(::google::protobuf::internal::WireFormat::SkipField(
-          input, tag, _internal_metadata_.mutable_unknown_fields()));
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.AddChannelLinkRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddChannelLinkRequest)
   return false;
 #undef DO_
 }
 
-void StopRequest::SerializeWithCachedSizes(
+void AddChannelLinkRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, *this->channel_link_, output);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddChannelLinkRequest)
 }
 
-::google::protobuf::uint8* StopRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* AddChannelLinkRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, *this->channel_link_, deterministic, target);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddChannelLinkRequest)
   return target;
 }
 
-size_t StopRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.StopRequest)
+size_t AddChannelLinkRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddChannelLinkRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -3622,6 +6003,13 @@ size_t StopRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->channel_link_);
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -3629,59 +6017,63 @@ size_t StopRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void StopRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.StopRequest)
+void AddChannelLinkRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddChannelLinkRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const StopRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const StopRequest>(
+  const AddChannelLinkRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const AddChannelLinkRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddChannelLinkRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.StopRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddChannelLinkRequest)
     MergeFrom(*source);
   }
 }
 
-void StopRequest::MergeFrom(const StopRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.StopRequest)
+void AddChannelLinkRequest::MergeFrom(const AddChannelLinkRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddChannelLinkRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  if (from.has_channel_link()) {
+    mutable_channel_link()->::ModeliRpc::ChannelLink::MergeFrom(from.channel_link());
+  }
 }
 
-void StopRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.StopRequest)
+void AddChannelLinkRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddChannelLinkRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void StopRequest::CopyFrom(const StopRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.StopRequest)
+void AddChannelLinkRequest::CopyFrom(const AddChannelLinkRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddChannelLinkRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool StopRequest::IsInitialized() const {
+bool AddChannelLinkRequest::IsInitialized() const {
   return true;
 }
 
-void StopRequest::Swap(StopRequest* other) {
+void AddChannelLinkRequest::Swap(AddChannelLinkRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void StopRequest::InternalSwap(StopRequest* other) {
+void AddChannelLinkRequest::InternalSwap(AddChannelLinkRequest* other) {
   using std::swap;
+  swap(channel_link_, other->channel_link_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata StopRequest::GetMetadata() const {
+::google::protobuf::Metadata AddChannelLinkRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -3689,94 +6081,93 @@ void StopRequest::InternalSwap(StopRequest* other) {
 
 // ===================================================================
 
-void StopResponse::InitAsDefaultInstance() {
+void AddChannelLinkResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int StopResponse::kStatusFieldNumber;
+const int AddChannelLinkResponse::kSuccessFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-StopResponse::StopResponse()
+AddChannelLinkResponse::AddChannelLinkResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsStopResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.AddChannelLinkResponse)
 }
-StopResponse::StopResponse(const StopResponse& from)
+AddChannelLinkResponse::AddChannelLinkResponse(const AddChannelLinkResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  status_ = from.status_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.StopResponse)
+  success_ = from.success_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddChannelLinkResponse)
 }
 
-void StopResponse::SharedCtor() {
-  status_ = 0;
+void AddChannelLinkResponse::SharedCtor() {
+  success_ = false;
   _cached_size_ = 0;
 }
 
-StopResponse::~StopResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.StopResponse)
+AddChannelLinkResponse::~AddChannelLinkResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.AddChannelLinkResponse)
   SharedDtor();
 }
 
-void StopResponse::SharedDtor() {
+void AddChannelLinkResponse::SharedDtor() {
 }
 
-void StopResponse::SetCachedSize(int size) const {
+void AddChannelLinkResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* StopResponse::descriptor() {
+const ::google::protobuf::Descriptor* AddChannelLinkResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const StopResponse& StopResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsStopResponse();
+const AddChannelLinkResponse& AddChannelLinkResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkResponse();
   return *internal_default_instance();
 }
 
-StopResponse* StopResponse::New(::google::protobuf::Arena* arena) const {
-  StopResponse* n = new StopResponse;
+AddChannelLinkResponse* AddChannelLinkResponse::New(::google::protobuf::Arena* arena) const {
+  AddChannelLinkResponse* n = new AddChannelLinkResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void StopResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.StopResponse)
+void AddChannelLinkResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  status_ = 0;
+  success_ = false;
   _internal_metadata_.Clear();
 }
 
-bool StopResponse::MergePartialFromCodedStream(
+bool AddChannelLinkResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.AddChannelLinkResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.Fmi2Status status = 1;
+      // bool success = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
-          int value;
+
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &success_)));
         } else {
           goto handle_unusual;
         }
@@ -3795,56 +6186,54 @@ bool StopResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.AddChannelLinkResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddChannelLinkResponse)
   return false;
 #undef DO_
 }
 
-void StopResponse::SerializeWithCachedSizes(
+void AddChannelLinkResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      1, this->status(), output);
+  // bool success = 1;
+  if (this->success() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddChannelLinkResponse)
 }
 
-::google::protobuf::uint8* StopResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* AddChannelLinkResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      1, this->status(), target);
+  // bool success = 1;
+  if (this->success() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddChannelLinkResponse)
   return target;
 }
 
-size_t StopResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.StopResponse)
+size_t AddChannelLinkResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddChannelLinkResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -3852,10 +6241,9 @@ size_t StopResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.Fmi2Status status = 1;
-  if (this->status() != 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  // bool success = 1;
+  if (this->success() != 0) {
+    total_size += 1 + 1;
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -3865,63 +6253,63 @@ size_t StopResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void StopResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.StopResponse)
+void AddChannelLinkResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddChannelLinkResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const StopResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const StopResponse>(
+  const AddChannelLinkResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const AddChannelLinkResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddChannelLinkResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.StopResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddChannelLinkResponse)
     MergeFrom(*source);
   }
 }
 
-void StopResponse::MergeFrom(const StopResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.StopResponse)
+void AddChannelLinkResponse::MergeFrom(const AddChannelLinkResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddChannelLinkResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.status() != 0) {
-    set_status(from.status());
+  if (from.success() != 0) {
+    set_success(from.success());
   }
 }
 
-void StopResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.StopResponse)
+void AddChannelLinkResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddChannelLinkResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void StopResponse::CopyFrom(const StopResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.StopResponse)
+void AddChannelLinkResponse::CopyFrom(const AddChannelLinkResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddChannelLinkResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool StopResponse::IsInitialized() const {
+bool AddChannelLinkResponse::IsInitialized() const {
   return true;
 }
 
-void StopResponse::Swap(StopResponse* other) {
+void AddChannelLinkResponse::Swap(AddChannelLinkResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void StopResponse::InternalSwap(StopResponse* other) {
+void AddChannelLinkResponse::InternalSwap(AddChannelLinkResponse* other) {
   using std::swap;
-  swap(status_, other->status_);
+  swap(success_, other->success_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata StopResponse::GetMetadata() const {
+::google::protobuf::Metadata AddChannelLinkResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -3929,119 +6317,101 @@ void StopResponse::InternalSwap(StopResponse* other) {
 
 // ===================================================================
 
-void AddFmuRequest::InitAsDefaultInstance() {
+void RemoveChannelLinkRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_RemoveChannelLinkRequest_default_instance_._instance.get_mutable()->channel_link_ = const_cast< ::ModeliRpc::ChannelLink*>(
+      ::ModeliRpc::ChannelLink::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int AddFmuRequest::kInstanceNameFieldNumber;
-const int AddFmuRequest::kDataFieldNumber;
+const int RemoveChannelLinkRequest::kChannelLinkFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-AddFmuRequest::AddFmuRequest()
+RemoveChannelLinkRequest::RemoveChannelLinkRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveChannelLinkRequest)
 }
-AddFmuRequest::AddFmuRequest(const AddFmuRequest& from)
+RemoveChannelLinkRequest::RemoveChannelLinkRequest(const RemoveChannelLinkRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.instance_name().size() > 0) {
-    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
-  }
-  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  if (from.data().size() > 0) {
-    data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.data_);
+  if (from.has_channel_link()) {
+    channel_link_ = new ::ModeliRpc::ChannelLink(*from.channel_link_);
+  } else {
+    channel_link_ = NULL;
   }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveChannelLinkRequest)
 }
 
-void AddFmuRequest::SharedCtor() {
-  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  data_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+void RemoveChannelLinkRequest::SharedCtor() {
+  channel_link_ = NULL;
   _cached_size_ = 0;
 }
 
-AddFmuRequest::~AddFmuRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.AddFmuRequest)
+RemoveChannelLinkRequest::~RemoveChannelLinkRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveChannelLinkRequest)
   SharedDtor();
 }
 
-void AddFmuRequest::SharedDtor() {
-  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+void RemoveChannelLinkRequest::SharedDtor() {
+  if (this != internal_default_instance()) delete channel_link_;
 }
 
-void AddFmuRequest::SetCachedSize(int size) const {
+void RemoveChannelLinkRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* AddFmuRequest::descriptor() {
+const ::google::protobuf::Descriptor* RemoveChannelLinkRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const AddFmuRequest& AddFmuRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuRequest();
+const RemoveChannelLinkRequest& RemoveChannelLinkRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkRequest();
   return *internal_default_instance();
 }
 
-AddFmuRequest* AddFmuRequest::New(::google::protobuf::Arena* arena) const {
-  AddFmuRequest* n = new AddFmuRequest;
+RemoveChannelLinkRequest* RemoveChannelLinkRequest::New(::google::protobuf::Arena* arena) const {
+  RemoveChannelLinkRequest* n = new RemoveChannelLinkRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void AddFmuRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddFmuRequest)
+void RemoveChannelLinkRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
+    delete channel_link_;
+  }
+  channel_link_ = NULL;
   _internal_metadata_.Clear();
 }
 
-bool AddFmuRequest::MergePartialFromCodedStream(
+bool RemoveChannelLinkRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveChannelLinkRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // string instance_name = 1;
+      // .ModeliRpc.ChannelLink channel_link = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
-                input, this->mutable_instance_name()));
-          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-            ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.AddFmuRequest.instance_name"));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // bytes data = 2;
-      case 2: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
-                input, this->mutable_data()));
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_channel_link()));
         } else {
           goto handle_unusual;
         }
@@ -4060,78 +6430,57 @@ bool AddFmuRequest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveChannelLinkRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveChannelLinkRequest)
   return false;
 #undef DO_
 }
 
-void AddFmuRequest::SerializeWithCachedSizes(
+void RemoveChannelLinkRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.AddFmuRequest.instance_name");
-    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
-      1, this->instance_name(), output);
-  }
-
-  // bytes data = 2;
-  if (this->data().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
-      2, this->data(), output);
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, *this->channel_link_, output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveChannelLinkRequest)
 }
 
-::google::protobuf::uint8* AddFmuRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* RemoveChannelLinkRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveChannelLinkRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
-      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.AddFmuRequest.instance_name");
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
-        1, this->instance_name(), target);
-  }
-
-  // bytes data = 2;
-  if (this->data().size() > 0) {
-    target =
-      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-        2, this->data(), target);
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, *this->channel_link_, deterministic, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveChannelLinkRequest)
   return target;
 }
 
-size_t AddFmuRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddFmuRequest)
+size_t RemoveChannelLinkRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveChannelLinkRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -4139,18 +6488,11 @@ size_t AddFmuRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // string instance_name = 1;
-  if (this->instance_name().size() > 0) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::StringSize(
-        this->instance_name());
-  }
-
-  // bytes data = 2;
-  if (this->data().size() > 0) {
+  // .ModeliRpc.ChannelLink channel_link = 1;
+  if (this->has_channel_link()) {
     total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::BytesSize(
-        this->data());
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->channel_link_);
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -4160,69 +6502,63 @@ size_t AddFmuRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void AddFmuRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddFmuRequest)
+void RemoveChannelLinkRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveChannelLinkRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const AddFmuRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const AddFmuRequest>(
+  const RemoveChannelLinkRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveChannelLinkRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveChannelLinkRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddFmuRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveChannelLinkRequest)
     MergeFrom(*source);
   }
 }
 
-void AddFmuRequest::MergeFrom(const AddFmuRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddFmuRequest)
+void RemoveChannelLinkRequest::MergeFrom(const RemoveChannelLinkRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveChannelLinkRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.instance_name().size() > 0) {
-
-    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
-  }
-  if (from.data().size() > 0) {
-
-    data_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.data_);
+  if (from.has_channel_link()) {
+    mutable_channel_link()->::ModeliRpc::ChannelLink::MergeFrom(from.channel_link());
   }
 }
 
-void AddFmuRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddFmuRequest)
+void RemoveChannelLinkRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveChannelLinkRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void AddFmuRequest::CopyFrom(const AddFmuRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddFmuRequest)
+void RemoveChannelLinkRequest::CopyFrom(const RemoveChannelLinkRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveChannelLinkRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool AddFmuRequest::IsInitialized() const {
+bool RemoveChannelLinkRequest::IsInitialized() const {
   return true;
 }
 
-void AddFmuRequest::Swap(AddFmuRequest* other) {
+void RemoveChannelLinkRequest::Swap(RemoveChannelLinkRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void AddFmuRequest::InternalSwap(AddFmuRequest* other) {
+void RemoveChannelLinkRequest::InternalSwap(RemoveChannelLinkRequest* other) {
   using std::swap;
-  instance_name_.Swap(&other->instance_name_);
-  data_.Swap(&other->data_);
+  swap(channel_link_, other->channel_link_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata AddFmuRequest::GetMetadata() const {
+::google::protobuf::Metadata RemoveChannelLinkRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -4230,67 +6566,67 @@ void AddFmuRequest::InternalSwap(AddFmuRequest* other) {
 
 // ===================================================================
 
-void AddFmuResponse::InitAsDefaultInstance() {
+void RemoveChannelLinkResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int AddFmuResponse::kSuccessFieldNumber;
+const int RemoveChannelLinkResponse::kSuccessFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-AddFmuResponse::AddFmuResponse()
+RemoveChannelLinkResponse::RemoveChannelLinkResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveChannelLinkResponse)
 }
-AddFmuResponse::AddFmuResponse(const AddFmuResponse& from)
+RemoveChannelLinkResponse::RemoveChannelLinkResponse(const RemoveChannelLinkResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   success_ = from.success_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveChannelLinkResponse)
 }
 
-void AddFmuResponse::SharedCtor() {
+void RemoveChannelLinkResponse::SharedCtor() {
   success_ = false;
   _cached_size_ = 0;
 }
 
-AddFmuResponse::~AddFmuResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.AddFmuResponse)
+RemoveChannelLinkResponse::~RemoveChannelLinkResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveChannelLinkResponse)
   SharedDtor();
 }
 
-void AddFmuResponse::SharedDtor() {
+void RemoveChannelLinkResponse::SharedDtor() {
 }
 
-void AddFmuResponse::SetCachedSize(int size) const {
+void RemoveChannelLinkResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* AddFmuResponse::descriptor() {
+const ::google::protobuf::Descriptor* RemoveChannelLinkResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const AddFmuResponse& AddFmuResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddFmuResponse();
+const RemoveChannelLinkResponse& RemoveChannelLinkResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkResponse();
   return *internal_default_instance();
 }
 
-AddFmuResponse* AddFmuResponse::New(::google::protobuf::Arena* arena) const {
-  AddFmuResponse* n = new AddFmuResponse;
+RemoveChannelLinkResponse* RemoveChannelLinkResponse::New(::google::protobuf::Arena* arena) const {
+  RemoveChannelLinkResponse* n = new RemoveChannelLinkResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void AddFmuResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddFmuResponse)
+void RemoveChannelLinkResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -4299,11 +6635,11 @@ void AddFmuResponse::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool AddFmuResponse::MergePartialFromCodedStream(
+bool RemoveChannelLinkResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveChannelLinkResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -4335,17 +6671,17 @@ bool AddFmuResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveChannelLinkResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveChannelLinkResponse)
   return false;
 #undef DO_
 }
 
-void AddFmuResponse::SerializeWithCachedSizes(
+void RemoveChannelLinkResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -4358,13 +6694,13 @@ void AddFmuResponse::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveChannelLinkResponse)
 }
 
-::google::protobuf::uint8* AddFmuResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* RemoveChannelLinkResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveChannelLinkResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -4377,12 +6713,12 @@ void AddFmuResponse::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveChannelLinkResponse)
   return target;
 }
 
-size_t AddFmuResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddFmuResponse)
+size_t RemoveChannelLinkResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveChannelLinkResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -4402,23 +6738,23 @@ size_t AddFmuResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void AddFmuResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddFmuResponse)
+void RemoveChannelLinkResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveChannelLinkResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const AddFmuResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const AddFmuResponse>(
+  const RemoveChannelLinkResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveChannelLinkResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveChannelLinkResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddFmuResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveChannelLinkResponse)
     MergeFrom(*source);
   }
 }
 
-void AddFmuResponse::MergeFrom(const AddFmuResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddFmuResponse)
+void RemoveChannelLinkResponse::MergeFrom(const RemoveChannelLinkResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveChannelLinkResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -4429,36 +6765,36 @@ void AddFmuResponse::MergeFrom(const AddFmuResponse& from) {
   }
 }
 
-void AddFmuResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddFmuResponse)
+void RemoveChannelLinkResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveChannelLinkResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void AddFmuResponse::CopyFrom(const AddFmuResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddFmuResponse)
+void RemoveChannelLinkResponse::CopyFrom(const RemoveChannelLinkResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveChannelLinkResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool AddFmuResponse::IsInitialized() const {
+bool RemoveChannelLinkResponse::IsInitialized() const {
   return true;
 }
 
-void AddFmuResponse::Swap(AddFmuResponse* other) {
+void RemoveChannelLinkResponse::Swap(RemoveChannelLinkResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void AddFmuResponse::InternalSwap(AddFmuResponse* other) {
+void RemoveChannelLinkResponse::InternalSwap(RemoveChannelLinkResponse* other) {
   using std::swap;
   swap(success_, other->success_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata AddFmuResponse::GetMetadata() const {
+::google::protobuf::Metadata RemoveChannelLinkResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -4466,21 +6802,24 @@ void AddFmuResponse::InternalSwap(AddFmuResponse* other) {
 
 // ===================================================================
 
-void RemoveFmuRequest::InitAsDefaultInstance() {
+void SetIntRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_SetIntRequest_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::IntValues*>(
+      ::ModeliRpc::IntValues::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int RemoveFmuRequest::kInstanceNameFieldNumber;
+const int SetIntRequest::kInstanceNameFieldNumber;
+const int SetIntRequest::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-RemoveFmuRequest::RemoveFmuRequest()
+SetIntRequest::SetIntRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetIntRequest)
 }
-RemoveFmuRequest::RemoveFmuRequest(const RemoveFmuRequest& from)
+SetIntRequest::SetIntRequest(const SetIntRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
@@ -4489,61 +6828,72 @@ RemoveFmuRequest::RemoveFmuRequest(const RemoveFmuRequest& from)
   if (from.instance_name().size() > 0) {
     instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
   }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveFmuRequest)
+  if (from.has_values()) {
+    values_ = new ::ModeliRpc::IntValues(*from.values_);
+  } else {
+    values_ = NULL;
+  }
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetIntRequest)
 }
 
-void RemoveFmuRequest::SharedCtor() {
+void SetIntRequest::SharedCtor() {
   instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  values_ = NULL;
   _cached_size_ = 0;
 }
 
-RemoveFmuRequest::~RemoveFmuRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveFmuRequest)
+SetIntRequest::~SetIntRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetIntRequest)
   SharedDtor();
 }
 
-void RemoveFmuRequest::SharedDtor() {
+void SetIntRequest::SharedDtor() {
   instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete values_;
 }
 
-void RemoveFmuRequest::SetCachedSize(int size) const {
+void SetIntRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* RemoveFmuRequest::descriptor() {
+const ::google::protobuf::Descriptor* SetIntRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const RemoveFmuRequest& RemoveFmuRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuRequest();
+const SetIntRequest& SetIntRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntRequest();
   return *internal_default_instance();
 }
 
-RemoveFmuRequest* RemoveFmuRequest::New(::google::protobuf::Arena* arena) const {
-  RemoveFmuRequest* n = new RemoveFmuRequest;
+SetIntRequest* SetIntRequest::New(::google::protobuf::Arena* arena) const {
+  SetIntRequest* n = new SetIntRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void RemoveFmuRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveFmuRequest)
+void SetIntRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetIntRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
   instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
+  }
+  values_ = NULL;
   _internal_metadata_.Clear();
 }
 
-bool RemoveFmuRequest::MergePartialFromCodedStream(
+bool SetIntRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetIntRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -4558,7 +6908,19 @@ bool RemoveFmuRequest::MergePartialFromCodedStream(
           DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
             this->instance_name().data(), static_cast<int>(this->instance_name().length()),
             ::google::protobuf::internal::WireFormatLite::PARSE,
-            "ModeliRpc.RemoveFmuRequest.instance_name"));
+            "ModeliRpc.SetIntRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.IntValues values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_values()));
         } else {
           goto handle_unusual;
         }
@@ -4577,17 +6939,17 @@ bool RemoveFmuRequest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetIntRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetIntRequest)
   return false;
 #undef DO_
 }
 
-void RemoveFmuRequest::SerializeWithCachedSizes(
+void SetIntRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetIntRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -4596,22 +6958,28 @@ void RemoveFmuRequest::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->instance_name().data(), static_cast<int>(this->instance_name().length()),
       ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.RemoveFmuRequest.instance_name");
+      "ModeliRpc.SetIntRequest.instance_name");
     ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
       1, this->instance_name(), output);
   }
 
+  // .ModeliRpc.IntValues values = 2;
+  if (this->has_values()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, *this->values_, output);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetIntRequest)
 }
 
-::google::protobuf::uint8* RemoveFmuRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetIntRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetIntRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -4620,22 +6988,29 @@ void RemoveFmuRequest::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
       this->instance_name().data(), static_cast<int>(this->instance_name().length()),
       ::google::protobuf::internal::WireFormatLite::SERIALIZE,
-      "ModeliRpc.RemoveFmuRequest.instance_name");
+      "ModeliRpc.SetIntRequest.instance_name");
     target =
       ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
         1, this->instance_name(), target);
   }
 
+  // .ModeliRpc.IntValues values = 2;
+  if (this->has_values()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, *this->values_, deterministic, target);
+  }
+
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetIntRequest)
   return target;
 }
 
-size_t RemoveFmuRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveFmuRequest)
+size_t SetIntRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetIntRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -4650,6 +7025,13 @@ size_t RemoveFmuRequest::ByteSizeLong() const {
         this->instance_name());
   }
 
+  // .ModeliRpc.IntValues values = 2;
+  if (this->has_values()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->values_);
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -4657,23 +7039,23 @@ size_t RemoveFmuRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void RemoveFmuRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveFmuRequest)
+void SetIntRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetIntRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const RemoveFmuRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveFmuRequest>(
+  const SetIntRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetIntRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetIntRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveFmuRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetIntRequest)
     MergeFrom(*source);
   }
 }
 
-void RemoveFmuRequest::MergeFrom(const RemoveFmuRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveFmuRequest)
+void SetIntRequest::MergeFrom(const SetIntRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetIntRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -4683,38 +7065,42 @@ void RemoveFmuRequest::MergeFrom(const RemoveFmuRequest& from) {
 
     instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
   }
+  if (from.has_values()) {
+    mutable_values()->::ModeliRpc::IntValues::MergeFrom(from.values());
+  }
 }
 
-void RemoveFmuRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveFmuRequest)
+void SetIntRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetIntRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void RemoveFmuRequest::CopyFrom(const RemoveFmuRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveFmuRequest)
+void SetIntRequest::CopyFrom(const SetIntRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetIntRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool RemoveFmuRequest::IsInitialized() const {
+bool SetIntRequest::IsInitialized() const {
   return true;
 }
 
-void RemoveFmuRequest::Swap(RemoveFmuRequest* other) {
+void SetIntRequest::Swap(SetIntRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void RemoveFmuRequest::InternalSwap(RemoveFmuRequest* other) {
+void SetIntRequest::InternalSwap(SetIntRequest* other) {
   using std::swap;
   instance_name_.Swap(&other->instance_name_);
+  swap(values_, other->values_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata RemoveFmuRequest::GetMetadata() const {
+::google::protobuf::Metadata SetIntRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -4722,93 +7108,94 @@ void RemoveFmuRequest::InternalSwap(RemoveFmuRequest* other) {
 
 // ===================================================================
 
-void RemoveFmuResponse::InitAsDefaultInstance() {
+void SetIntResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int RemoveFmuResponse::kSuccessFieldNumber;
+const int SetIntResponse::kStatusFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-RemoveFmuResponse::RemoveFmuResponse()
+SetIntResponse::SetIntResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetIntResponse)
 }
-RemoveFmuResponse::RemoveFmuResponse(const RemoveFmuResponse& from)
+SetIntResponse::SetIntResponse(const SetIntResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  success_ = from.success_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveFmuResponse)
+  status_ = from.status_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetIntResponse)
 }
 
-void RemoveFmuResponse::SharedCtor() {
-  success_ = false;
+void SetIntResponse::SharedCtor() {
+  status_ = 0;
   _cached_size_ = 0;
 }
 
-RemoveFmuResponse::~RemoveFmuResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveFmuResponse)
+SetIntResponse::~SetIntResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetIntResponse)
   SharedDtor();
 }
 
-void RemoveFmuResponse::SharedDtor() {
+void SetIntResponse::SharedDtor() {
 }
 
-void RemoveFmuResponse::SetCachedSize(int size) const {
+void SetIntResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* RemoveFmuResponse::descriptor() {
+const ::google::protobuf::Descriptor* SetIntResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const RemoveFmuResponse& RemoveFmuResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveFmuResponse();
+const SetIntResponse& SetIntResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntResponse();
   return *internal_default_instance();
 }
 
-RemoveFmuResponse* RemoveFmuResponse::New(::google::protobuf::Arena* arena) const {
-  RemoveFmuResponse* n = new RemoveFmuResponse;
+SetIntResponse* SetIntResponse::New(::google::protobuf::Arena* arena) const {
+  SetIntResponse* n = new SetIntResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void RemoveFmuResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveFmuResponse)
+void SetIntResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetIntResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  success_ = false;
+  status_ = 0;
   _internal_metadata_.Clear();
 }
 
-bool RemoveFmuResponse::MergePartialFromCodedStream(
+bool SetIntResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetIntResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bool success = 1;
+      // .ModeliRpc.Fmi2Status status = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
-
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-                 input, &success_)));
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
         } else {
           goto handle_unusual;
         }
@@ -4827,54 +7214,56 @@ bool RemoveFmuResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetIntResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetIntResponse)
   return false;
 #undef DO_
 }
 
-void RemoveFmuResponse::SerializeWithCachedSizes(
+void SetIntResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetIntResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetIntResponse)
 }
 
-::google::protobuf::uint8* RemoveFmuResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetIntResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetIntResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetIntResponse)
   return target;
 }
 
-size_t RemoveFmuResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveFmuResponse)
+size_t SetIntResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetIntResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -4882,9 +7271,10 @@ size_t RemoveFmuResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // bool success = 1;
-  if (this->success() != 0) {
-    total_size += 1 + 1;
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -4894,63 +7284,63 @@ size_t RemoveFmuResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void RemoveFmuResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveFmuResponse)
+void SetIntResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetIntResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const RemoveFmuResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveFmuResponse>(
+  const SetIntResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetIntResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetIntResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveFmuResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetIntResponse)
     MergeFrom(*source);
   }
 }
 
-void RemoveFmuResponse::MergeFrom(const RemoveFmuResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveFmuResponse)
+void SetIntResponse::MergeFrom(const SetIntResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetIntResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.success() != 0) {
-    set_success(from.success());
+  if (from.status() != 0) {
+    set_status(from.status());
   }
 }
 
-void RemoveFmuResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveFmuResponse)
+void SetIntResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetIntResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void RemoveFmuResponse::CopyFrom(const RemoveFmuResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveFmuResponse)
+void SetIntResponse::CopyFrom(const SetIntResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetIntResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool RemoveFmuResponse::IsInitialized() const {
+bool SetIntResponse::IsInitialized() const {
   return true;
 }
 
-void RemoveFmuResponse::Swap(RemoveFmuResponse* other) {
+void SetIntResponse::Swap(SetIntResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void RemoveFmuResponse::InternalSwap(RemoveFmuResponse* other) {
+void SetIntResponse::InternalSwap(SetIntResponse* other) {
   using std::swap;
-  swap(success_, other->success_);
+  swap(status_, other->status_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata RemoveFmuResponse::GetMetadata() const {
+::google::protobuf::Metadata SetIntResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -4958,101 +7348,125 @@ void RemoveFmuResponse::InternalSwap(RemoveFmuResponse* other) {
 
 // ===================================================================
 
-void AddChannelLinkRequest::InitAsDefaultInstance() {
-  ::ModeliRpc::_AddChannelLinkRequest_default_instance_._instance.get_mutable()->channel_link_ = const_cast< ::ModeliRpc::ChannelLink*>(
-      ::ModeliRpc::ChannelLink::internal_default_instance());
+void SetRealRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_SetRealRequest_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::RealValues*>(
+      ::ModeliRpc::RealValues::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int AddChannelLinkRequest::kChannelLinkFieldNumber;
+const int SetRealRequest::kInstanceNameFieldNumber;
+const int SetRealRequest::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-AddChannelLinkRequest::AddChannelLinkRequest()
+SetRealRequest::SetRealRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetRealRequest)
 }
-AddChannelLinkRequest::AddChannelLinkRequest(const AddChannelLinkRequest& from)
+SetRealRequest::SetRealRequest(const SetRealRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_channel_link()) {
-    channel_link_ = new ::ModeliRpc::ChannelLink(*from.channel_link_);
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.instance_name().size() > 0) {
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  if (from.has_values()) {
+    values_ = new ::ModeliRpc::RealValues(*from.values_);
   } else {
-    channel_link_ = NULL;
+    values_ = NULL;
   }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetRealRequest)
 }
 
-void AddChannelLinkRequest::SharedCtor() {
-  channel_link_ = NULL;
+void SetRealRequest::SharedCtor() {
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  values_ = NULL;
   _cached_size_ = 0;
 }
 
-AddChannelLinkRequest::~AddChannelLinkRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.AddChannelLinkRequest)
+SetRealRequest::~SetRealRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetRealRequest)
   SharedDtor();
 }
 
-void AddChannelLinkRequest::SharedDtor() {
-  if (this != internal_default_instance()) delete channel_link_;
+void SetRealRequest::SharedDtor() {
+  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete values_;
 }
 
-void AddChannelLinkRequest::SetCachedSize(int size) const {
+void SetRealRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* AddChannelLinkRequest::descriptor() {
+const ::google::protobuf::Descriptor* SetRealRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const AddChannelLinkRequest& AddChannelLinkRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkRequest();
+const SetRealRequest& SetRealRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealRequest();
   return *internal_default_instance();
 }
 
-AddChannelLinkRequest* AddChannelLinkRequest::New(::google::protobuf::Arena* arena) const {
-  AddChannelLinkRequest* n = new AddChannelLinkRequest;
+SetRealRequest* SetRealRequest::New(::google::protobuf::Arena* arena) const {
+  SetRealRequest* n = new SetRealRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void AddChannelLinkRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddChannelLinkRequest)
+void SetRealRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetRealRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
-    delete channel_link_;
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
   }
-  channel_link_ = NULL;
+  values_ = NULL;
   _internal_metadata_.Clear();
 }
 
-bool AddChannelLinkRequest::MergePartialFromCodedStream(
+bool SetRealRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetRealRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.ChannelLink channel_link = 1;
+      // string instance_name = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.SetRealRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.RealValues values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_channel_link()));
+               input, mutable_values()));
         } else {
           goto handle_unusual;
         }
@@ -5071,57 +7485,78 @@ bool AddChannelLinkRequest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetRealRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetRealRequest)
   return false;
 #undef DO_
 }
 
-void AddChannelLinkRequest::SerializeWithCachedSizes(
+void SetRealRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetRealRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetRealRequest.instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->instance_name(), output);
+  }
+
+  // .ModeliRpc.RealValues values = 2;
+  if (this->has_values()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->channel_link_, output);
+      2, *this->values_, output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetRealRequest)
 }
 
-::google::protobuf::uint8* AddChannelLinkRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetRealRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetRealRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetRealRequest.instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->instance_name(), target);
+  }
+
+  // .ModeliRpc.RealValues values = 2;
+  if (this->has_values()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->channel_link_, deterministic, target);
+        2, *this->values_, deterministic, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetRealRequest)
   return target;
 }
 
-size_t AddChannelLinkRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddChannelLinkRequest)
+size_t SetRealRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetRealRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -5129,11 +7564,18 @@ size_t AddChannelLinkRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->instance_name());
+  }
+
+  // .ModeliRpc.RealValues values = 2;
+  if (this->has_values()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->channel_link_);
+        *this->values_);
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -5143,63 +7585,68 @@ size_t AddChannelLinkRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void AddChannelLinkRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddChannelLinkRequest)
+void SetRealRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetRealRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const AddChannelLinkRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const AddChannelLinkRequest>(
+  const SetRealRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetRealRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetRealRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddChannelLinkRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetRealRequest)
     MergeFrom(*source);
   }
 }
 
-void AddChannelLinkRequest::MergeFrom(const AddChannelLinkRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddChannelLinkRequest)
+void SetRealRequest::MergeFrom(const SetRealRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetRealRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.has_channel_link()) {
-    mutable_channel_link()->::ModeliRpc::ChannelLink::MergeFrom(from.channel_link());
+  if (from.instance_name().size() > 0) {
+
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  if (from.has_values()) {
+    mutable_values()->::ModeliRpc::RealValues::MergeFrom(from.values());
   }
 }
 
-void AddChannelLinkRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddChannelLinkRequest)
+void SetRealRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetRealRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void AddChannelLinkRequest::CopyFrom(const AddChannelLinkRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddChannelLinkRequest)
+void SetRealRequest::CopyFrom(const SetRealRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetRealRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool AddChannelLinkRequest::IsInitialized() const {
+bool SetRealRequest::IsInitialized() const {
   return true;
 }
 
-void AddChannelLinkRequest::Swap(AddChannelLinkRequest* other) {
+void SetRealRequest::Swap(SetRealRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void AddChannelLinkRequest::InternalSwap(AddChannelLinkRequest* other) {
+void SetRealRequest::InternalSwap(SetRealRequest* other) {
   using std::swap;
-  swap(channel_link_, other->channel_link_);
+  instance_name_.Swap(&other->instance_name_);
+  swap(values_, other->values_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata AddChannelLinkRequest::GetMetadata() const {
+::google::protobuf::Metadata SetRealRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -5207,93 +7654,94 @@ void AddChannelLinkRequest::InternalSwap(AddChannelLinkRequest* other) {
 
 // ===================================================================
 
-void AddChannelLinkResponse::InitAsDefaultInstance() {
+void SetRealResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int AddChannelLinkResponse::kSuccessFieldNumber;
+const int SetRealResponse::kStatusFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-AddChannelLinkResponse::AddChannelLinkResponse()
+SetRealResponse::SetRealResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetRealResponse)
 }
-AddChannelLinkResponse::AddChannelLinkResponse(const AddChannelLinkResponse& from)
+SetRealResponse::SetRealResponse(const SetRealResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  success_ = from.success_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.AddChannelLinkResponse)
+  status_ = from.status_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetRealResponse)
 }
 
-void AddChannelLinkResponse::SharedCtor() {
-  success_ = false;
+void SetRealResponse::SharedCtor() {
+  status_ = 0;
   _cached_size_ = 0;
 }
 
-AddChannelLinkResponse::~AddChannelLinkResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.AddChannelLinkResponse)
+SetRealResponse::~SetRealResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetRealResponse)
   SharedDtor();
 }
 
-void AddChannelLinkResponse::SharedDtor() {
+void SetRealResponse::SharedDtor() {
 }
 
-void AddChannelLinkResponse::SetCachedSize(int size) const {
+void SetRealResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* AddChannelLinkResponse::descriptor() {
+const ::google::protobuf::Descriptor* SetRealResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const AddChannelLinkResponse& AddChannelLinkResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsAddChannelLinkResponse();
+const SetRealResponse& SetRealResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealResponse();
   return *internal_default_instance();
 }
 
-AddChannelLinkResponse* AddChannelLinkResponse::New(::google::protobuf::Arena* arena) const {
-  AddChannelLinkResponse* n = new AddChannelLinkResponse;
+SetRealResponse* SetRealResponse::New(::google::protobuf::Arena* arena) const {
+  SetRealResponse* n = new SetRealResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void AddChannelLinkResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.AddChannelLinkResponse)
+void SetRealResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetRealResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  success_ = false;
+  status_ = 0;
   _internal_metadata_.Clear();
 }
 
-bool AddChannelLinkResponse::MergePartialFromCodedStream(
+bool SetRealResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetRealResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bool success = 1;
+      // .ModeliRpc.Fmi2Status status = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
-
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-                 input, &success_)));
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
         } else {
           goto handle_unusual;
         }
@@ -5312,54 +7760,56 @@ bool AddChannelLinkResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetRealResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetRealResponse)
   return false;
 #undef DO_
 }
 
-void AddChannelLinkResponse::SerializeWithCachedSizes(
+void SetRealResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetRealResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetRealResponse)
 }
 
-::google::protobuf::uint8* AddChannelLinkResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetRealResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetRealResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetRealResponse)
   return target;
 }
 
-size_t AddChannelLinkResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.AddChannelLinkResponse)
+size_t SetRealResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetRealResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -5367,9 +7817,10 @@ size_t AddChannelLinkResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // bool success = 1;
-  if (this->success() != 0) {
-    total_size += 1 + 1;
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -5379,63 +7830,63 @@ size_t AddChannelLinkResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void AddChannelLinkResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.AddChannelLinkResponse)
+void SetRealResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetRealResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const AddChannelLinkResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const AddChannelLinkResponse>(
+  const SetRealResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetRealResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetRealResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.AddChannelLinkResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetRealResponse)
     MergeFrom(*source);
   }
 }
 
-void AddChannelLinkResponse::MergeFrom(const AddChannelLinkResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.AddChannelLinkResponse)
+void SetRealResponse::MergeFrom(const SetRealResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetRealResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.success() != 0) {
-    set_success(from.success());
+  if (from.status() != 0) {
+    set_status(from.status());
   }
 }
 
-void AddChannelLinkResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.AddChannelLinkResponse)
+void SetRealResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetRealResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void AddChannelLinkResponse::CopyFrom(const AddChannelLinkResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.AddChannelLinkResponse)
+void SetRealResponse::CopyFrom(const SetRealResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetRealResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool AddChannelLinkResponse::IsInitialized() const {
+bool SetRealResponse::IsInitialized() const {
   return true;
 }
 
-void AddChannelLinkResponse::Swap(AddChannelLinkResponse* other) {
+void SetRealResponse::Swap(SetRealResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void AddChannelLinkResponse::InternalSwap(AddChannelLinkResponse* other) {
+void SetRealResponse::InternalSwap(SetRealResponse* other) {
   using std::swap;
-  swap(success_, other->success_);
+  swap(status_, other->status_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata AddChannelLinkResponse::GetMetadata() const {
+::google::protobuf::Metadata SetRealResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -5443,101 +7894,125 @@ void AddChannelLinkResponse::InternalSwap(AddChannelLinkResponse* other) {
 
 // ===================================================================
 
-void RemoveChannelLinkRequest::InitAsDefaultInstance() {
-  ::ModeliRpc::_RemoveChannelLinkRequest_default_instance_._instance.get_mutable()->channel_link_ = const_cast< ::ModeliRpc::ChannelLink*>(
-      ::ModeliRpc::ChannelLink::internal_default_instance());
+void SetBoolRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_SetBoolRequest_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::BoolValues*>(
+      ::ModeliRpc::BoolValues::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int RemoveChannelLinkRequest::kChannelLinkFieldNumber;
+const int SetBoolRequest::kInstanceNameFieldNumber;
+const int SetBoolRequest::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-RemoveChannelLinkRequest::RemoveChannelLinkRequest()
+SetBoolRequest::SetBoolRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkRequest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetBoolRequest)
 }
-RemoveChannelLinkRequest::RemoveChannelLinkRequest(const RemoveChannelLinkRequest& from)
+SetBoolRequest::SetBoolRequest(const SetBoolRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_channel_link()) {
-    channel_link_ = new ::ModeliRpc::ChannelLink(*from.channel_link_);
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.instance_name().size() > 0) {
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  if (from.has_values()) {
+    values_ = new ::ModeliRpc::BoolValues(*from.values_);
   } else {
-    channel_link_ = NULL;
+    values_ = NULL;
   }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetBoolRequest)
 }
 
-void RemoveChannelLinkRequest::SharedCtor() {
-  channel_link_ = NULL;
+void SetBoolRequest::SharedCtor() {
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  values_ = NULL;
   _cached_size_ = 0;
 }
 
-RemoveChannelLinkRequest::~RemoveChannelLinkRequest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveChannelLinkRequest)
+SetBoolRequest::~SetBoolRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetBoolRequest)
   SharedDtor();
 }
 
-void RemoveChannelLinkRequest::SharedDtor() {
-  if (this != internal_default_instance()) delete channel_link_;
+void SetBoolRequest::SharedDtor() {
+  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete values_;
 }
 
-void RemoveChannelLinkRequest::SetCachedSize(int size) const {
+void SetBoolRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* RemoveChannelLinkRequest::descriptor() {
+const ::google::protobuf::Descriptor* SetBoolRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const RemoveChannelLinkRequest& RemoveChannelLinkRequest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkRequest();
+const SetBoolRequest& SetBoolRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolRequest();
   return *internal_default_instance();
 }
 
-RemoveChannelLinkRequest* RemoveChannelLinkRequest::New(::google::protobuf::Arena* arena) const {
-  RemoveChannelLinkRequest* n = new RemoveChannelLinkRequest;
+SetBoolRequest* SetBoolRequest::New(::google::protobuf::Arena* arena) const {
+  SetBoolRequest* n = new SetBoolRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void RemoveChannelLinkRequest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveChannelLinkRequest)
+void SetBoolRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetBoolRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
-    delete channel_link_;
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
   }
-  channel_link_ = NULL;
+  values_ = NULL;
   _internal_metadata_.Clear();
 }
 
-bool RemoveChannelLinkRequest::MergePartialFromCodedStream(
+bool SetBoolRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetBoolRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.ChannelLink channel_link = 1;
+      // string instance_name = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.SetBoolRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.BoolValues values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_channel_link()));
+               input, mutable_values()));
         } else {
           goto handle_unusual;
         }
@@ -5556,57 +8031,78 @@ bool RemoveChannelLinkRequest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetBoolRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetBoolRequest)
   return false;
 #undef DO_
 }
 
-void RemoveChannelLinkRequest::SerializeWithCachedSizes(
+void SetBoolRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetBoolRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetBoolRequest.instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->instance_name(), output);
+  }
+
+  // .ModeliRpc.BoolValues values = 2;
+  if (this->has_values()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->channel_link_, output);
+      2, *this->values_, output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetBoolRequest)
 }
 
-::google::protobuf::uint8* RemoveChannelLinkRequest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetBoolRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetBoolRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetBoolRequest.instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->instance_name(), target);
+  }
+
+  // .ModeliRpc.BoolValues values = 2;
+  if (this->has_values()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->channel_link_, deterministic, target);
+        2, *this->values_, deterministic, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetBoolRequest)
   return target;
 }
 
-size_t RemoveChannelLinkRequest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveChannelLinkRequest)
+size_t SetBoolRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetBoolRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -5614,11 +8110,18 @@ size_t RemoveChannelLinkRequest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.ChannelLink channel_link = 1;
-  if (this->has_channel_link()) {
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->instance_name());
+  }
+
+  // .ModeliRpc.BoolValues values = 2;
+  if (this->has_values()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->channel_link_);
+        *this->values_);
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -5628,63 +8131,68 @@ size_t RemoveChannelLinkRequest::ByteSizeLong() const {
   return total_size;
 }
 
-void RemoveChannelLinkRequest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveChannelLinkRequest)
+void SetBoolRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetBoolRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const RemoveChannelLinkRequest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveChannelLinkRequest>(
+  const SetBoolRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetBoolRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetBoolRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveChannelLinkRequest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetBoolRequest)
     MergeFrom(*source);
   }
 }
 
-void RemoveChannelLinkRequest::MergeFrom(const RemoveChannelLinkRequest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveChannelLinkRequest)
+void SetBoolRequest::MergeFrom(const SetBoolRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetBoolRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.has_channel_link()) {
-    mutable_channel_link()->::ModeliRpc::ChannelLink::MergeFrom(from.channel_link());
+  if (from.instance_name().size() > 0) {
+
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
+  if (from.has_values()) {
+    mutable_values()->::ModeliRpc::BoolValues::MergeFrom(from.values());
   }
 }
-
-void RemoveChannelLinkRequest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveChannelLinkRequest)
+
+void SetBoolRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetBoolRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void RemoveChannelLinkRequest::CopyFrom(const RemoveChannelLinkRequest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveChannelLinkRequest)
+void SetBoolRequest::CopyFrom(const SetBoolRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetBoolRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool RemoveChannelLinkRequest::IsInitialized() const {
+bool SetBoolRequest::IsInitialized() const {
   return true;
 }
 
-void RemoveChannelLinkRequest::Swap(RemoveChannelLinkRequest* other) {
+void SetBoolRequest::Swap(SetBoolRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void RemoveChannelLinkRequest::InternalSwap(RemoveChannelLinkRequest* other) {
+void SetBoolRequest::InternalSwap(SetBoolRequest* other) {
   using std::swap;
-  swap(channel_link_, other->channel_link_);
+  instance_name_.Swap(&other->instance_name_);
+  swap(values_, other->values_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata RemoveChannelLinkRequest::GetMetadata() const {
+::google::protobuf::Metadata SetBoolRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -5692,93 +8200,94 @@ void RemoveChannelLinkRequest::InternalSwap(RemoveChannelLinkRequest* other) {
 
 // ===================================================================
 
-void RemoveChannelLinkResponse::InitAsDefaultInstance() {
+void SetBoolResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int RemoveChannelLinkResponse::kSuccessFieldNumber;
+const int SetBoolResponse::kStatusFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-RemoveChannelLinkResponse::RemoveChannelLinkResponse()
+SetBoolResponse::SetBoolResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetBoolResponse)
 }
-RemoveChannelLinkResponse::RemoveChannelLinkResponse(const RemoveChannelLinkResponse& from)
+SetBoolResponse::SetBoolResponse(const SetBoolResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  success_ = from.success_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.RemoveChannelLinkResponse)
+  status_ = from.status_;
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetBoolResponse)
 }
 
-void RemoveChannelLinkResponse::SharedCtor() {
-  success_ = false;
+void SetBoolResponse::SharedCtor() {
+  status_ = 0;
   _cached_size_ = 0;
 }
 
-RemoveChannelLinkResponse::~RemoveChannelLinkResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.RemoveChannelLinkResponse)
+SetBoolResponse::~SetBoolResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetBoolResponse)
   SharedDtor();
 }
 
-void RemoveChannelLinkResponse::SharedDtor() {
+void SetBoolResponse::SharedDtor() {
 }
 
-void RemoveChannelLinkResponse::SetCachedSize(int size) const {
+void SetBoolResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* RemoveChannelLinkResponse::descriptor() {
+const ::google::protobuf::Descriptor* SetBoolResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const RemoveChannelLinkResponse& RemoveChannelLinkResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsRemoveChannelLinkResponse();
+const SetBoolResponse& SetBoolResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolResponse();
   return *internal_default_instance();
 }
 
-RemoveChannelLinkResponse* RemoveChannelLinkResponse::New(::google::protobuf::Arena* arena) const {
-  RemoveChannelLinkResponse* n = new RemoveChannelLinkResponse;
+SetBoolResponse* SetBoolResponse::New(::google::protobuf::Arena* arena) const {
+  SetBoolResponse* n = new SetBoolResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void RemoveChannelLinkResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.RemoveChannelLinkResponse)
+void SetBoolResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetBoolResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  success_ = false;
+  status_ = 0;
   _internal_metadata_.Clear();
 }
 
-bool RemoveChannelLinkResponse::MergePartialFromCodedStream(
+bool SetBoolResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetBoolResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // bool success = 1;
+      // .ModeliRpc.Fmi2Status status = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
-
+          int value;
           DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-                 input, &success_)));
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::ModeliRpc::Fmi2Status >(value));
         } else {
           goto handle_unusual;
         }
@@ -5797,54 +8306,56 @@ bool RemoveChannelLinkResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetBoolResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetBoolResponse)
   return false;
 #undef DO_
 }
 
-void RemoveChannelLinkResponse::SerializeWithCachedSizes(
+void SetBoolResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetBoolResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->success(), output);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetBoolResponse)
 }
 
-::google::protobuf::uint8* RemoveChannelLinkResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetBoolResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetBoolResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // bool success = 1;
-  if (this->success() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->success(), target);
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetBoolResponse)
   return target;
 }
 
-size_t RemoveChannelLinkResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.RemoveChannelLinkResponse)
+size_t SetBoolResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetBoolResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -5852,9 +8363,10 @@ size_t RemoveChannelLinkResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // bool success = 1;
-  if (this->success() != 0) {
-    total_size += 1 + 1;
+  // .ModeliRpc.Fmi2Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
@@ -5864,63 +8376,63 @@ size_t RemoveChannelLinkResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void RemoveChannelLinkResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.RemoveChannelLinkResponse)
+void SetBoolResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetBoolResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const RemoveChannelLinkResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const RemoveChannelLinkResponse>(
+  const SetBoolResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetBoolResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetBoolResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.RemoveChannelLinkResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetBoolResponse)
     MergeFrom(*source);
   }
 }
 
-void RemoveChannelLinkResponse::MergeFrom(const RemoveChannelLinkResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.RemoveChannelLinkResponse)
+void SetBoolResponse::MergeFrom(const SetBoolResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetBoolResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.success() != 0) {
-    set_success(from.success());
+  if (from.status() != 0) {
+    set_status(from.status());
   }
 }
 
-void RemoveChannelLinkResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.RemoveChannelLinkResponse)
+void SetBoolResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetBoolResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void RemoveChannelLinkResponse::CopyFrom(const RemoveChannelLinkResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.RemoveChannelLinkResponse)
+void SetBoolResponse::CopyFrom(const SetBoolResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetBoolResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool RemoveChannelLinkResponse::IsInitialized() const {
+bool SetBoolResponse::IsInitialized() const {
   return true;
 }
 
-void RemoveChannelLinkResponse::Swap(RemoveChannelLinkResponse* other) {
+void SetBoolResponse::Swap(SetBoolResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void RemoveChannelLinkResponse::InternalSwap(RemoveChannelLinkResponse* other) {
+void SetBoolResponse::InternalSwap(SetBoolResponse* other) {
   using std::swap;
-  swap(success_, other->success_);
+  swap(status_, other->status_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata RemoveChannelLinkResponse::GetMetadata() const {
+::google::protobuf::Metadata SetBoolResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -5928,78 +8440,86 @@ void RemoveChannelLinkResponse::InternalSwap(RemoveChannelLinkResponse* other) {
 
 // ===================================================================
 
-void SetValuesReqest::InitAsDefaultInstance() {
-  ::ModeliRpc::_SetValuesReqest_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::Values*>(
-      ::ModeliRpc::Values::internal_default_instance());
+void SetStringRequest::InitAsDefaultInstance() {
+  ::ModeliRpc::_SetStringRequest_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::StringValues*>(
+      ::ModeliRpc::StringValues::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int SetValuesReqest::kValuesFieldNumber;
+const int SetStringRequest::kInstanceNameFieldNumber;
+const int SetStringRequest::kValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-SetValuesReqest::SetValuesReqest()
+SetStringRequest::SetStringRequest()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesReqest();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringRequest();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetStringRequest)
 }
-SetValuesReqest::SetValuesReqest(const SetValuesReqest& from)
+SetStringRequest::SetStringRequest(const SetStringRequest& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.instance_name().size() > 0) {
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
   if (from.has_values()) {
-    values_ = new ::ModeliRpc::Values(*from.values_);
+    values_ = new ::ModeliRpc::StringValues(*from.values_);
   } else {
     values_ = NULL;
   }
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetStringRequest)
 }
 
-void SetValuesReqest::SharedCtor() {
+void SetStringRequest::SharedCtor() {
+  instance_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   values_ = NULL;
   _cached_size_ = 0;
 }
 
-SetValuesReqest::~SetValuesReqest() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.SetValuesReqest)
+SetStringRequest::~SetStringRequest() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetStringRequest)
   SharedDtor();
 }
 
-void SetValuesReqest::SharedDtor() {
+void SetStringRequest::SharedDtor() {
+  instance_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete values_;
 }
 
-void SetValuesReqest::SetCachedSize(int size) const {
+void SetStringRequest::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* SetValuesReqest::descriptor() {
+const ::google::protobuf::Descriptor* SetStringRequest::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const SetValuesReqest& SetValuesReqest::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesReqest();
+const SetStringRequest& SetStringRequest::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringRequest();
   return *internal_default_instance();
 }
 
-SetValuesReqest* SetValuesReqest::New(::google::protobuf::Arena* arena) const {
-  SetValuesReqest* n = new SetValuesReqest;
+SetStringRequest* SetStringRequest::New(::google::protobuf::Arena* arena) const {
+  SetStringRequest* n = new SetStringRequest;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void SetValuesReqest::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetValuesReqest)
+void SetStringRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetStringRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (GetArenaNoVirtual() == NULL && values_ != NULL) {
     delete values_;
   }
@@ -6007,20 +8527,36 @@ void SetValuesReqest::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool SetValuesReqest::MergePartialFromCodedStream(
+bool SetStringRequest::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetStringRequest)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.Values values = 1;
+      // string instance_name = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_instance_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "ModeliRpc.SetStringRequest.instance_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.StringValues values = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_values()));
         } else {
@@ -6041,57 +8577,78 @@ bool SetValuesReqest::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetStringRequest)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetStringRequest)
   return false;
 #undef DO_
 }
 
-void SetValuesReqest::SerializeWithCachedSizes(
+void SetStringRequest::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetStringRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Values values = 1;
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetStringRequest.instance_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->instance_name(), output);
+  }
+
+  // .ModeliRpc.StringValues values = 2;
   if (this->has_values()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->values_, output);
+      2, *this->values_, output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetStringRequest)
 }
 
-::google::protobuf::uint8* SetValuesReqest::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetStringRequest::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetStringRequest)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Values values = 1;
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->instance_name().data(), static_cast<int>(this->instance_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "ModeliRpc.SetStringRequest.instance_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->instance_name(), target);
+  }
+
+  // .ModeliRpc.StringValues values = 2;
   if (this->has_values()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->values_, deterministic, target);
+        2, *this->values_, deterministic, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetStringRequest)
   return target;
 }
 
-size_t SetValuesReqest::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetValuesReqest)
+size_t SetStringRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetStringRequest)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -6099,7 +8656,14 @@ size_t SetValuesReqest::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.Values values = 1;
+  // string instance_name = 1;
+  if (this->instance_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->instance_name());
+  }
+
+  // .ModeliRpc.StringValues values = 2;
   if (this->has_values()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
@@ -6113,63 +8677,68 @@ size_t SetValuesReqest::ByteSizeLong() const {
   return total_size;
 }
 
-void SetValuesReqest::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetValuesReqest)
+void SetStringRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetStringRequest)
   GOOGLE_DCHECK_NE(&from, this);
-  const SetValuesReqest* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const SetValuesReqest>(
+  const SetStringRequest* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetStringRequest>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetStringRequest)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetStringRequest)
     MergeFrom(*source);
   }
 }
 
-void SetValuesReqest::MergeFrom(const SetValuesReqest& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetValuesReqest)
+void SetStringRequest::MergeFrom(const SetStringRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetStringRequest)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
+  if (from.instance_name().size() > 0) {
+
+    instance_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.instance_name_);
+  }
   if (from.has_values()) {
-    mutable_values()->::ModeliRpc::Values::MergeFrom(from.values());
+    mutable_values()->::ModeliRpc::StringValues::MergeFrom(from.values());
   }
 }
 
-void SetValuesReqest::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetValuesReqest)
+void SetStringRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetStringRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void SetValuesReqest::CopyFrom(const SetValuesReqest& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetValuesReqest)
+void SetStringRequest::CopyFrom(const SetStringRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetStringRequest)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool SetValuesReqest::IsInitialized() const {
+bool SetStringRequest::IsInitialized() const {
   return true;
 }
 
-void SetValuesReqest::Swap(SetValuesReqest* other) {
+void SetStringRequest::Swap(SetStringRequest* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void SetValuesReqest::InternalSwap(SetValuesReqest* other) {
+void SetStringRequest::InternalSwap(SetStringRequest* other) {
   using std::swap;
+  instance_name_.Swap(&other->instance_name_);
   swap(values_, other->values_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata SetValuesReqest::GetMetadata() const {
+::google::protobuf::Metadata SetStringRequest::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -6177,67 +8746,67 @@ void SetValuesReqest::InternalSwap(SetValuesReqest* other) {
 
 // ===================================================================
 
-void SetValuesResponse::InitAsDefaultInstance() {
+void SetStringResponse::InitAsDefaultInstance() {
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int SetValuesResponse::kStatusFieldNumber;
+const int SetStringResponse::kStatusFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
-SetValuesResponse::SetValuesResponse()
+SetStringResponse::SetStringResponse()
   : ::google::protobuf::Message(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
-    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesResponse();
+    ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringResponse();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(constructor:ModeliRpc.SetStringResponse)
 }
-SetValuesResponse::SetValuesResponse(const SetValuesResponse& from)
+SetStringResponse::SetStringResponse(const SetStringResponse& from)
   : ::google::protobuf::Message(),
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   status_ = from.status_;
-  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(copy_constructor:ModeliRpc.SetStringResponse)
 }
 
-void SetValuesResponse::SharedCtor() {
+void SetStringResponse::SharedCtor() {
   status_ = 0;
   _cached_size_ = 0;
 }
 
-SetValuesResponse::~SetValuesResponse() {
-  // @@protoc_insertion_point(destructor:ModeliRpc.SetValuesResponse)
+SetStringResponse::~SetStringResponse() {
+  // @@protoc_insertion_point(destructor:ModeliRpc.SetStringResponse)
   SharedDtor();
 }
 
-void SetValuesResponse::SharedDtor() {
+void SetStringResponse::SharedDtor() {
 }
 
-void SetValuesResponse::SetCachedSize(int size) const {
+void SetStringResponse::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* SetValuesResponse::descriptor() {
+const ::google::protobuf::Descriptor* SetStringResponse::descriptor() {
   ::protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
 }
 
-const SetValuesResponse& SetValuesResponse::default_instance() {
-  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesResponse();
+const SetStringResponse& SetStringResponse::default_instance() {
+  ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringResponse();
   return *internal_default_instance();
 }
 
-SetValuesResponse* SetValuesResponse::New(::google::protobuf::Arena* arena) const {
-  SetValuesResponse* n = new SetValuesResponse;
+SetStringResponse* SetStringResponse::New(::google::protobuf::Arena* arena) const {
+  SetStringResponse* n = new SetStringResponse;
   if (arena != NULL) {
     arena->Own(n);
   }
   return n;
 }
 
-void SetValuesResponse::Clear() {
-// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetValuesResponse)
+void SetStringResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:ModeliRpc.SetStringResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -6246,11 +8815,11 @@ void SetValuesResponse::Clear() {
   _internal_metadata_.Clear();
 }
 
-bool SetValuesResponse::MergePartialFromCodedStream(
+bool SetStringResponse::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(parse_start:ModeliRpc.SetStringResponse)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -6283,17 +8852,17 @@ bool SetValuesResponse::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(parse_success:ModeliRpc.SetStringResponse)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(parse_failure:ModeliRpc.SetStringResponse)
   return false;
 #undef DO_
 }
 
-void SetValuesResponse::SerializeWithCachedSizes(
+void SetStringResponse::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(serialize_start:ModeliRpc.SetStringResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -6307,13 +8876,13 @@ void SetValuesResponse::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
   }
-  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(serialize_end:ModeliRpc.SetStringResponse)
 }
 
-::google::protobuf::uint8* SetValuesResponse::InternalSerializeWithCachedSizesToArray(
+::google::protobuf::uint8* SetStringResponse::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(serialize_to_array_start:ModeliRpc.SetStringResponse)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -6327,12 +8896,12 @@ void SetValuesResponse::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(serialize_to_array_end:ModeliRpc.SetStringResponse)
   return target;
 }
 
-size_t SetValuesResponse::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetValuesResponse)
+size_t SetStringResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:ModeliRpc.SetStringResponse)
   size_t total_size = 0;
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -6353,23 +8922,23 @@ size_t SetValuesResponse::ByteSizeLong() const {
   return total_size;
 }
 
-void SetValuesResponse::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetValuesResponse)
+void SetStringResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:ModeliRpc.SetStringResponse)
   GOOGLE_DCHECK_NE(&from, this);
-  const SetValuesResponse* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const SetValuesResponse>(
+  const SetStringResponse* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const SetStringResponse>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:ModeliRpc.SetStringResponse)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:ModeliRpc.SetStringResponse)
     MergeFrom(*source);
   }
 }
 
-void SetValuesResponse::MergeFrom(const SetValuesResponse& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetValuesResponse)
+void SetStringResponse::MergeFrom(const SetStringResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:ModeliRpc.SetStringResponse)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -6380,36 +8949,36 @@ void SetValuesResponse::MergeFrom(const SetValuesResponse& from) {
   }
 }
 
-void SetValuesResponse::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetValuesResponse)
+void SetStringResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:ModeliRpc.SetStringResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-void SetValuesResponse::CopyFrom(const SetValuesResponse& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetValuesResponse)
+void SetStringResponse::CopyFrom(const SetStringResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:ModeliRpc.SetStringResponse)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool SetValuesResponse::IsInitialized() const {
+bool SetStringResponse::IsInitialized() const {
   return true;
 }
 
-void SetValuesResponse::Swap(SetValuesResponse* other) {
+void SetStringResponse::Swap(SetStringResponse* other) {
   if (other == this) return;
   InternalSwap(other);
 }
-void SetValuesResponse::InternalSwap(SetValuesResponse* other) {
+void SetStringResponse::InternalSwap(SetStringResponse* other) {
   using std::swap;
   swap(status_, other->status_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata SetValuesResponse::GetMetadata() const {
+::google::protobuf::Metadata SetStringResponse::GetMetadata() const {
   protobuf_ModeliRpc_2eproto::protobuf_AssignDescriptorsOnce();
   return ::protobuf_ModeliRpc_2eproto::file_level_metadata[kIndexInFileMessages];
 }
@@ -6612,12 +9181,21 @@ void NewValuesRequest::InternalSwap(NewValuesRequest* other) {
 // ===================================================================
 
 void NewValuesResponse::InitAsDefaultInstance() {
-  ::ModeliRpc::_NewValuesResponse_default_instance_._instance.get_mutable()->values_ = const_cast< ::ModeliRpc::Values*>(
-      ::ModeliRpc::Values::internal_default_instance());
+  ::ModeliRpc::_NewValuesResponse_default_instance_._instance.get_mutable()->intvalues_ = const_cast< ::ModeliRpc::IntValues*>(
+      ::ModeliRpc::IntValues::internal_default_instance());
+  ::ModeliRpc::_NewValuesResponse_default_instance_._instance.get_mutable()->realvalues_ = const_cast< ::ModeliRpc::RealValues*>(
+      ::ModeliRpc::RealValues::internal_default_instance());
+  ::ModeliRpc::_NewValuesResponse_default_instance_._instance.get_mutable()->boolvalues_ = const_cast< ::ModeliRpc::BoolValues*>(
+      ::ModeliRpc::BoolValues::internal_default_instance());
+  ::ModeliRpc::_NewValuesResponse_default_instance_._instance.get_mutable()->stringvalues_ = const_cast< ::ModeliRpc::StringValues*>(
+      ::ModeliRpc::StringValues::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
-const int NewValuesResponse::kValuesFieldNumber;
 const int NewValuesResponse::kTimestampFieldNumber;
+const int NewValuesResponse::kIntValuesFieldNumber;
+const int NewValuesResponse::kRealValuesFieldNumber;
+const int NewValuesResponse::kBoolValuesFieldNumber;
+const int NewValuesResponse::kStringValuesFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 NewValuesResponse::NewValuesResponse()
@@ -6633,19 +9211,34 @@ NewValuesResponse::NewValuesResponse(const NewValuesResponse& from)
       _internal_metadata_(NULL),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
-  if (from.has_values()) {
-    values_ = new ::ModeliRpc::Values(*from.values_);
+  if (from.has_intvalues()) {
+    intvalues_ = new ::ModeliRpc::IntValues(*from.intvalues_);
   } else {
-    values_ = NULL;
+    intvalues_ = NULL;
+  }
+  if (from.has_realvalues()) {
+    realvalues_ = new ::ModeliRpc::RealValues(*from.realvalues_);
+  } else {
+    realvalues_ = NULL;
+  }
+  if (from.has_boolvalues()) {
+    boolvalues_ = new ::ModeliRpc::BoolValues(*from.boolvalues_);
+  } else {
+    boolvalues_ = NULL;
+  }
+  if (from.has_stringvalues()) {
+    stringvalues_ = new ::ModeliRpc::StringValues(*from.stringvalues_);
+  } else {
+    stringvalues_ = NULL;
   }
   timestamp_ = from.timestamp_;
   // @@protoc_insertion_point(copy_constructor:ModeliRpc.NewValuesResponse)
 }
 
 void NewValuesResponse::SharedCtor() {
-  ::memset(&values_, 0, static_cast<size_t>(
+  ::memset(&intvalues_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&timestamp_) -
-      reinterpret_cast<char*>(&values_)) + sizeof(timestamp_));
+      reinterpret_cast<char*>(&intvalues_)) + sizeof(timestamp_));
   _cached_size_ = 0;
 }
 
@@ -6655,7 +9248,10 @@ NewValuesResponse::~NewValuesResponse() {
 }
 
 void NewValuesResponse::SharedDtor() {
-  if (this != internal_default_instance()) delete values_;
+  if (this != internal_default_instance()) delete intvalues_;
+  if (this != internal_default_instance()) delete realvalues_;
+  if (this != internal_default_instance()) delete boolvalues_;
+  if (this != internal_default_instance()) delete stringvalues_;
 }
 
 void NewValuesResponse::SetCachedSize(int size) const {
@@ -6687,10 +9283,22 @@ void NewValuesResponse::Clear() {
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
-    delete values_;
+  if (GetArenaNoVirtual() == NULL && intvalues_ != NULL) {
+    delete intvalues_;
   }
-  values_ = NULL;
+  intvalues_ = NULL;
+  if (GetArenaNoVirtual() == NULL && realvalues_ != NULL) {
+    delete realvalues_;
+  }
+  realvalues_ = NULL;
+  if (GetArenaNoVirtual() == NULL && boolvalues_ != NULL) {
+    delete boolvalues_;
+  }
+  boolvalues_ = NULL;
+  if (GetArenaNoVirtual() == NULL && stringvalues_ != NULL) {
+    delete stringvalues_;
+  }
+  stringvalues_ = NULL;
   timestamp_ = 0;
   _internal_metadata_.Clear();
 }
@@ -6705,26 +9313,62 @@ bool NewValuesResponse::MergePartialFromCodedStream(
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // .ModeliRpc.Values values = 1;
+      // double timestamp = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_values()));
+            static_cast< ::google::protobuf::uint8>(9u /* 9 & 0xFF */)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &timestamp_)));
         } else {
           goto handle_unusual;
         }
         break;
       }
 
-      // double timestamp = 2;
+      // .ModeliRpc.IntValues intValues = 2;
       case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(17u /* 17 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_intvalues()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
 
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
-                 input, &timestamp_)));
+      // .ModeliRpc.RealValues realValues = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_realvalues()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.BoolValues boolValues = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_boolvalues()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .ModeliRpc.StringValues stringValues = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_stringvalues()));
         } else {
           goto handle_unusual;
         }
@@ -6757,15 +9401,33 @@ void NewValuesResponse::SerializeWithCachedSizes(
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Values values = 1;
-  if (this->has_values()) {
+  // double timestamp = 1;
+  if (this->timestamp() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->timestamp(), output);
+  }
+
+  // .ModeliRpc.IntValues intValues = 2;
+  if (this->has_intvalues()) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      1, *this->values_, output);
+      2, *this->intvalues_, output);
   }
 
-  // double timestamp = 2;
-  if (this->timestamp() != 0) {
-    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->timestamp(), output);
+  // .ModeliRpc.RealValues realValues = 3;
+  if (this->has_realvalues()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, *this->realvalues_, output);
+  }
+
+  // .ModeliRpc.BoolValues boolValues = 4;
+  if (this->has_boolvalues()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, *this->boolvalues_, output);
+  }
+
+  // .ModeliRpc.StringValues stringValues = 5;
+  if (this->has_stringvalues()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, *this->stringvalues_, output);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -6782,16 +9444,37 @@ void NewValuesResponse::SerializeWithCachedSizes(
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // .ModeliRpc.Values values = 1;
-  if (this->has_values()) {
+  // double timestamp = 1;
+  if (this->timestamp() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->timestamp(), target);
+  }
+
+  // .ModeliRpc.IntValues intValues = 2;
+  if (this->has_intvalues()) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        1, *this->values_, deterministic, target);
+        2, *this->intvalues_, deterministic, target);
   }
 
-  // double timestamp = 2;
-  if (this->timestamp() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->timestamp(), target);
+  // .ModeliRpc.RealValues realValues = 3;
+  if (this->has_realvalues()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        3, *this->realvalues_, deterministic, target);
+  }
+
+  // .ModeliRpc.BoolValues boolValues = 4;
+  if (this->has_boolvalues()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, *this->boolvalues_, deterministic, target);
+  }
+
+  // .ModeliRpc.StringValues stringValues = 5;
+  if (this->has_stringvalues()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        5, *this->stringvalues_, deterministic, target);
   }
 
   if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
@@ -6811,14 +9494,35 @@ size_t NewValuesResponse::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
   }
-  // .ModeliRpc.Values values = 1;
-  if (this->has_values()) {
+  // .ModeliRpc.IntValues intValues = 2;
+  if (this->has_intvalues()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->values_);
+        *this->intvalues_);
+  }
+
+  // .ModeliRpc.RealValues realValues = 3;
+  if (this->has_realvalues()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->realvalues_);
+  }
+
+  // .ModeliRpc.BoolValues boolValues = 4;
+  if (this->has_boolvalues()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->boolvalues_);
+  }
+
+  // .ModeliRpc.StringValues stringValues = 5;
+  if (this->has_stringvalues()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->stringvalues_);
   }
 
-  // double timestamp = 2;
+  // double timestamp = 1;
   if (this->timestamp() != 0) {
     total_size += 1 + 8;
   }
@@ -6852,8 +9556,17 @@ void NewValuesResponse::MergeFrom(const NewValuesResponse& from) {
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.has_values()) {
-    mutable_values()->::ModeliRpc::Values::MergeFrom(from.values());
+  if (from.has_intvalues()) {
+    mutable_intvalues()->::ModeliRpc::IntValues::MergeFrom(from.intvalues());
+  }
+  if (from.has_realvalues()) {
+    mutable_realvalues()->::ModeliRpc::RealValues::MergeFrom(from.realvalues());
+  }
+  if (from.has_boolvalues()) {
+    mutable_boolvalues()->::ModeliRpc::BoolValues::MergeFrom(from.boolvalues());
+  }
+  if (from.has_stringvalues()) {
+    mutable_stringvalues()->::ModeliRpc::StringValues::MergeFrom(from.stringvalues());
   }
   if (from.timestamp() != 0) {
     set_timestamp(from.timestamp());
@@ -6884,7 +9597,10 @@ void NewValuesResponse::Swap(NewValuesResponse* other) {
 }
 void NewValuesResponse::InternalSwap(NewValuesResponse* other) {
   using std::swap;
-  swap(values_, other->values_);
+  swap(intvalues_, other->intvalues_);
+  swap(realvalues_, other->realvalues_);
+  swap(boolvalues_, other->boolvalues_);
+  swap(stringvalues_, other->stringvalues_);
   swap(timestamp_, other->timestamp_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
diff --git a/ModeliRpc_Cpp/ModeliRpc.pb.h b/ModeliRpc_Cpp/ModeliRpc.pb.h
index b677837d682c3b42e3c24d5614219ca92424a025..520cae7e3fb1d9817ace20ef5fbc118e05ede860 100644
--- a/ModeliRpc_Cpp/ModeliRpc.pb.h
+++ b/ModeliRpc_Cpp/ModeliRpc.pb.h
@@ -37,14 +37,20 @@ namespace protobuf_ModeliRpc_2eproto {
 struct TableStruct {
   static const ::google::protobuf::internal::ParseTableField entries[];
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
-  static const ::google::protobuf::internal::ParseTable schema[24];
+  static const ::google::protobuf::internal::ParseTable schema[33];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
 };
 void AddDescriptors();
-void InitDefaultsValuesImpl();
-void InitDefaultsValues();
+void InitDefaultsIntValuesImpl();
+void InitDefaultsIntValues();
+void InitDefaultsRealValuesImpl();
+void InitDefaultsRealValues();
+void InitDefaultsBoolValuesImpl();
+void InitDefaultsBoolValues();
+void InitDefaultsStringValuesImpl();
+void InitDefaultsStringValues();
 void InitDefaultsChannelLinkImpl();
 void InitDefaultsChannelLink();
 void InitDefaultsPlayRequestImpl();
@@ -79,10 +85,22 @@ void InitDefaultsRemoveChannelLinkRequestImpl();
 void InitDefaultsRemoveChannelLinkRequest();
 void InitDefaultsRemoveChannelLinkResponseImpl();
 void InitDefaultsRemoveChannelLinkResponse();
-void InitDefaultsSetValuesReqestImpl();
-void InitDefaultsSetValuesReqest();
-void InitDefaultsSetValuesResponseImpl();
-void InitDefaultsSetValuesResponse();
+void InitDefaultsSetIntRequestImpl();
+void InitDefaultsSetIntRequest();
+void InitDefaultsSetIntResponseImpl();
+void InitDefaultsSetIntResponse();
+void InitDefaultsSetRealRequestImpl();
+void InitDefaultsSetRealRequest();
+void InitDefaultsSetRealResponseImpl();
+void InitDefaultsSetRealResponse();
+void InitDefaultsSetBoolRequestImpl();
+void InitDefaultsSetBoolRequest();
+void InitDefaultsSetBoolResponseImpl();
+void InitDefaultsSetBoolResponse();
+void InitDefaultsSetStringRequestImpl();
+void InitDefaultsSetStringRequest();
+void InitDefaultsSetStringResponseImpl();
+void InitDefaultsSetStringResponse();
 void InitDefaultsNewValuesRequestImpl();
 void InitDefaultsNewValuesRequest();
 void InitDefaultsNewValuesResponseImpl();
@@ -92,7 +110,10 @@ void InitDefaultsLogRequest();
 void InitDefaultsLogResponseImpl();
 void InitDefaultsLogResponse();
 inline void InitDefaults() {
-  InitDefaultsValues();
+  InitDefaultsIntValues();
+  InitDefaultsRealValues();
+  InitDefaultsBoolValues();
+  InitDefaultsStringValues();
   InitDefaultsChannelLink();
   InitDefaultsPlayRequest();
   InitDefaultsPlayResponse();
@@ -110,8 +131,14 @@ inline void InitDefaults() {
   InitDefaultsAddChannelLinkResponse();
   InitDefaultsRemoveChannelLinkRequest();
   InitDefaultsRemoveChannelLinkResponse();
-  InitDefaultsSetValuesReqest();
-  InitDefaultsSetValuesResponse();
+  InitDefaultsSetIntRequest();
+  InitDefaultsSetIntResponse();
+  InitDefaultsSetRealRequest();
+  InitDefaultsSetRealResponse();
+  InitDefaultsSetBoolRequest();
+  InitDefaultsSetBoolResponse();
+  InitDefaultsSetStringRequest();
+  InitDefaultsSetStringResponse();
   InitDefaultsNewValuesRequest();
   InitDefaultsNewValuesResponse();
   InitDefaultsLogRequest();
@@ -131,9 +158,15 @@ extern AddFmuRequestDefaultTypeInternal _AddFmuRequest_default_instance_;
 class AddFmuResponse;
 class AddFmuResponseDefaultTypeInternal;
 extern AddFmuResponseDefaultTypeInternal _AddFmuResponse_default_instance_;
+class BoolValues;
+class BoolValuesDefaultTypeInternal;
+extern BoolValuesDefaultTypeInternal _BoolValues_default_instance_;
 class ChannelLink;
 class ChannelLinkDefaultTypeInternal;
 extern ChannelLinkDefaultTypeInternal _ChannelLink_default_instance_;
+class IntValues;
+class IntValuesDefaultTypeInternal;
+extern IntValuesDefaultTypeInternal _IntValues_default_instance_;
 class LogRequest;
 class LogRequestDefaultTypeInternal;
 extern LogRequestDefaultTypeInternal _LogRequest_default_instance_;
@@ -164,6 +197,9 @@ extern PlayRequestDefaultTypeInternal _PlayRequest_default_instance_;
 class PlayResponse;
 class PlayResponseDefaultTypeInternal;
 extern PlayResponseDefaultTypeInternal _PlayResponse_default_instance_;
+class RealValues;
+class RealValuesDefaultTypeInternal;
+extern RealValuesDefaultTypeInternal _RealValues_default_instance_;
 class RemoveChannelLinkRequest;
 class RemoveChannelLinkRequestDefaultTypeInternal;
 extern RemoveChannelLinkRequestDefaultTypeInternal _RemoveChannelLinkRequest_default_instance_;
@@ -176,21 +212,39 @@ extern RemoveFmuRequestDefaultTypeInternal _RemoveFmuRequest_default_instance_;
 class RemoveFmuResponse;
 class RemoveFmuResponseDefaultTypeInternal;
 extern RemoveFmuResponseDefaultTypeInternal _RemoveFmuResponse_default_instance_;
-class SetValuesReqest;
-class SetValuesReqestDefaultTypeInternal;
-extern SetValuesReqestDefaultTypeInternal _SetValuesReqest_default_instance_;
-class SetValuesResponse;
-class SetValuesResponseDefaultTypeInternal;
-extern SetValuesResponseDefaultTypeInternal _SetValuesResponse_default_instance_;
+class SetBoolRequest;
+class SetBoolRequestDefaultTypeInternal;
+extern SetBoolRequestDefaultTypeInternal _SetBoolRequest_default_instance_;
+class SetBoolResponse;
+class SetBoolResponseDefaultTypeInternal;
+extern SetBoolResponseDefaultTypeInternal _SetBoolResponse_default_instance_;
+class SetIntRequest;
+class SetIntRequestDefaultTypeInternal;
+extern SetIntRequestDefaultTypeInternal _SetIntRequest_default_instance_;
+class SetIntResponse;
+class SetIntResponseDefaultTypeInternal;
+extern SetIntResponseDefaultTypeInternal _SetIntResponse_default_instance_;
+class SetRealRequest;
+class SetRealRequestDefaultTypeInternal;
+extern SetRealRequestDefaultTypeInternal _SetRealRequest_default_instance_;
+class SetRealResponse;
+class SetRealResponseDefaultTypeInternal;
+extern SetRealResponseDefaultTypeInternal _SetRealResponse_default_instance_;
+class SetStringRequest;
+class SetStringRequestDefaultTypeInternal;
+extern SetStringRequestDefaultTypeInternal _SetStringRequest_default_instance_;
+class SetStringResponse;
+class SetStringResponseDefaultTypeInternal;
+extern SetStringResponseDefaultTypeInternal _SetStringResponse_default_instance_;
 class StopRequest;
 class StopRequestDefaultTypeInternal;
 extern StopRequestDefaultTypeInternal _StopRequest_default_instance_;
 class StopResponse;
 class StopResponseDefaultTypeInternal;
 extern StopResponseDefaultTypeInternal _StopResponse_default_instance_;
-class Values;
-class ValuesDefaultTypeInternal;
-extern ValuesDefaultTypeInternal _Values_default_instance_;
+class StringValues;
+class StringValuesDefaultTypeInternal;
+extern StringValuesDefaultTypeInternal _StringValues_default_instance_;
 }  // namespace ModeliRpc
 namespace ModeliRpc {
 
@@ -221,24 +275,24 @@ inline bool Fmi2Status_Parse(
 }
 // ===================================================================
 
-class Values : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.Values) */ {
+class IntValues : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.IntValues) */ {
  public:
-  Values();
-  virtual ~Values();
+  IntValues();
+  virtual ~IntValues();
 
-  Values(const Values& from);
+  IntValues(const IntValues& from);
 
-  inline Values& operator=(const Values& from) {
+  inline IntValues& operator=(const IntValues& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  Values(Values&& from) noexcept
-    : Values() {
+  IntValues(IntValues&& from) noexcept
+    : IntValues() {
     *this = ::std::move(from);
   }
 
-  inline Values& operator=(Values&& from) noexcept {
+  inline IntValues& operator=(IntValues&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -248,30 +302,30 @@ class Values : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const Values& default_instance();
+  static const IntValues& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const Values* internal_default_instance() {
-    return reinterpret_cast<const Values*>(
-               &_Values_default_instance_);
+  static inline const IntValues* internal_default_instance() {
+    return reinterpret_cast<const IntValues*>(
+               &_IntValues_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
 
-  void Swap(Values* other);
-  friend void swap(Values& a, Values& b) {
+  void Swap(IntValues* other);
+  friend void swap(IntValues& a, IntValues& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline Values* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline IntValues* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  Values* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  IntValues* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const Values& from);
-  void MergeFrom(const Values& from);
+  void CopyFrom(const IntValues& from);
+  void MergeFrom(const IntValues& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -287,7 +341,7 @@ class Values : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(Values* other);
+  void InternalSwap(IntValues* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -303,149 +357,410 @@ class Values : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 
   // accessors -------------------------------------------------------
 
-  // repeated uint32 int_vrs = 2;
-  int int_vrs_size() const;
-  void clear_int_vrs();
-  static const int kIntVrsFieldNumber = 2;
-  ::google::protobuf::uint32 int_vrs(int index) const;
-  void set_int_vrs(int index, ::google::protobuf::uint32 value);
-  void add_int_vrs(::google::protobuf::uint32 value);
+  // repeated uint32 valueRefs = 1;
+  int valuerefs_size() const;
+  void clear_valuerefs();
+  static const int kValueRefsFieldNumber = 1;
+  ::google::protobuf::uint32 valuerefs(int index) const;
+  void set_valuerefs(int index, ::google::protobuf::uint32 value);
+  void add_valuerefs(::google::protobuf::uint32 value);
   const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      int_vrs() const;
+      valuerefs() const;
   ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_int_vrs();
-
-  // repeated int32 int_values = 3;
-  int int_values_size() const;
-  void clear_int_values();
-  static const int kIntValuesFieldNumber = 3;
-  ::google::protobuf::int32 int_values(int index) const;
-  void set_int_values(int index, ::google::protobuf::int32 value);
-  void add_int_values(::google::protobuf::int32 value);
+      mutable_valuerefs();
+
+  // repeated int32 values = 2;
+  int values_size() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  ::google::protobuf::int32 values(int index) const;
+  void set_values(int index, ::google::protobuf::int32 value);
+  void add_values(::google::protobuf::int32 value);
   const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
-      int_values() const;
+      values() const;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
-      mutable_int_values();
-
-  // repeated uint32 real_vrs = 4;
-  int real_vrs_size() const;
-  void clear_real_vrs();
-  static const int kRealVrsFieldNumber = 4;
-  ::google::protobuf::uint32 real_vrs(int index) const;
-  void set_real_vrs(int index, ::google::protobuf::uint32 value);
-  void add_real_vrs(::google::protobuf::uint32 value);
+      mutable_values();
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.IntValues)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > valuerefs_;
+  mutable int _valuerefs_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > values_;
+  mutable int _values_cached_byte_size_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsIntValuesImpl();
+};
+// -------------------------------------------------------------------
+
+class RealValues : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.RealValues) */ {
+ public:
+  RealValues();
+  virtual ~RealValues();
+
+  RealValues(const RealValues& from);
+
+  inline RealValues& operator=(const RealValues& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  RealValues(RealValues&& from) noexcept
+    : RealValues() {
+    *this = ::std::move(from);
+  }
+
+  inline RealValues& operator=(RealValues&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const RealValues& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const RealValues* internal_default_instance() {
+    return reinterpret_cast<const RealValues*>(
+               &_RealValues_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    1;
+
+  void Swap(RealValues* other);
+  friend void swap(RealValues& a, RealValues& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline RealValues* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  RealValues* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const RealValues& from);
+  void MergeFrom(const RealValues& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(RealValues* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated uint32 valueRefs = 1;
+  int valuerefs_size() const;
+  void clear_valuerefs();
+  static const int kValueRefsFieldNumber = 1;
+  ::google::protobuf::uint32 valuerefs(int index) const;
+  void set_valuerefs(int index, ::google::protobuf::uint32 value);
+  void add_valuerefs(::google::protobuf::uint32 value);
   const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      real_vrs() const;
+      valuerefs() const;
   ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_real_vrs();
-
-  // repeated double real_values = 5;
-  int real_values_size() const;
-  void clear_real_values();
-  static const int kRealValuesFieldNumber = 5;
-  double real_values(int index) const;
-  void set_real_values(int index, double value);
-  void add_real_values(double value);
+      mutable_valuerefs();
+
+  // repeated double values = 2;
+  int values_size() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  double values(int index) const;
+  void set_values(int index, double value);
+  void add_values(double value);
   const ::google::protobuf::RepeatedField< double >&
-      real_values() const;
+      values() const;
   ::google::protobuf::RepeatedField< double >*
-      mutable_real_values();
-
-  // repeated uint32 bool_vrs = 6;
-  int bool_vrs_size() const;
-  void clear_bool_vrs();
-  static const int kBoolVrsFieldNumber = 6;
-  ::google::protobuf::uint32 bool_vrs(int index) const;
-  void set_bool_vrs(int index, ::google::protobuf::uint32 value);
-  void add_bool_vrs(::google::protobuf::uint32 value);
+      mutable_values();
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.RealValues)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > valuerefs_;
+  mutable int _valuerefs_cached_byte_size_;
+  ::google::protobuf::RepeatedField< double > values_;
+  mutable int _values_cached_byte_size_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsRealValuesImpl();
+};
+// -------------------------------------------------------------------
+
+class BoolValues : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.BoolValues) */ {
+ public:
+  BoolValues();
+  virtual ~BoolValues();
+
+  BoolValues(const BoolValues& from);
+
+  inline BoolValues& operator=(const BoolValues& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  BoolValues(BoolValues&& from) noexcept
+    : BoolValues() {
+    *this = ::std::move(from);
+  }
+
+  inline BoolValues& operator=(BoolValues&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const BoolValues& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const BoolValues* internal_default_instance() {
+    return reinterpret_cast<const BoolValues*>(
+               &_BoolValues_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    2;
+
+  void Swap(BoolValues* other);
+  friend void swap(BoolValues& a, BoolValues& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline BoolValues* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  BoolValues* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const BoolValues& from);
+  void MergeFrom(const BoolValues& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(BoolValues* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated uint32 valueRefs = 1;
+  int valuerefs_size() const;
+  void clear_valuerefs();
+  static const int kValueRefsFieldNumber = 1;
+  ::google::protobuf::uint32 valuerefs(int index) const;
+  void set_valuerefs(int index, ::google::protobuf::uint32 value);
+  void add_valuerefs(::google::protobuf::uint32 value);
   const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      bool_vrs() const;
+      valuerefs() const;
   ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_bool_vrs();
-
-  // repeated int32 bool_values = 7;
-  int bool_values_size() const;
-  void clear_bool_values();
-  static const int kBoolValuesFieldNumber = 7;
-  ::google::protobuf::int32 bool_values(int index) const;
-  void set_bool_values(int index, ::google::protobuf::int32 value);
-  void add_bool_values(::google::protobuf::int32 value);
+      mutable_valuerefs();
+
+  // repeated int32 values = 2;
+  int values_size() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  ::google::protobuf::int32 values(int index) const;
+  void set_values(int index, ::google::protobuf::int32 value);
+  void add_values(::google::protobuf::int32 value);
   const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
-      bool_values() const;
+      values() const;
   ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
-      mutable_bool_values();
-
-  // repeated uint32 string_vrs = 8;
-  int string_vrs_size() const;
-  void clear_string_vrs();
-  static const int kStringVrsFieldNumber = 8;
-  ::google::protobuf::uint32 string_vrs(int index) const;
-  void set_string_vrs(int index, ::google::protobuf::uint32 value);
-  void add_string_vrs(::google::protobuf::uint32 value);
-  const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-      string_vrs() const;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-      mutable_string_vrs();
-
-  // repeated string string_values = 9;
-  int string_values_size() const;
-  void clear_string_values();
-  static const int kStringValuesFieldNumber = 9;
-  const ::std::string& string_values(int index) const;
-  ::std::string* mutable_string_values(int index);
-  void set_string_values(int index, const ::std::string& value);
+      mutable_values();
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.BoolValues)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > valuerefs_;
+  mutable int _valuerefs_cached_byte_size_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > values_;
+  mutable int _values_cached_byte_size_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsBoolValuesImpl();
+};
+// -------------------------------------------------------------------
+
+class StringValues : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.StringValues) */ {
+ public:
+  StringValues();
+  virtual ~StringValues();
+
+  StringValues(const StringValues& from);
+
+  inline StringValues& operator=(const StringValues& from) {
+    CopyFrom(from);
+    return *this;
+  }
   #if LANG_CXX11
-  void set_string_values(int index, ::std::string&& value);
+  StringValues(StringValues&& from) noexcept
+    : StringValues() {
+    *this = ::std::move(from);
+  }
+
+  inline StringValues& operator=(StringValues&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
   #endif
-  void set_string_values(int index, const char* value);
-  void set_string_values(int index, const char* value, size_t size);
-  ::std::string* add_string_values();
-  void add_string_values(const ::std::string& value);
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const StringValues& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const StringValues* internal_default_instance() {
+    return reinterpret_cast<const StringValues*>(
+               &_StringValues_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    3;
+
+  void Swap(StringValues* other);
+  friend void swap(StringValues& a, StringValues& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline StringValues* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  StringValues* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const StringValues& from);
+  void MergeFrom(const StringValues& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(StringValues* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated uint32 valueRefs = 1;
+  int valuerefs_size() const;
+  void clear_valuerefs();
+  static const int kValueRefsFieldNumber = 1;
+  ::google::protobuf::uint32 valuerefs(int index) const;
+  void set_valuerefs(int index, ::google::protobuf::uint32 value);
+  void add_valuerefs(::google::protobuf::uint32 value);
+  const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+      valuerefs() const;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+      mutable_valuerefs();
+
+  // repeated string values = 2;
+  int values_size() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  const ::std::string& values(int index) const;
+  ::std::string* mutable_values(int index);
+  void set_values(int index, const ::std::string& value);
   #if LANG_CXX11
-  void add_string_values(::std::string&& value);
+  void set_values(int index, ::std::string&& value);
   #endif
-  void add_string_values(const char* value);
-  void add_string_values(const char* value, size_t size);
-  const ::google::protobuf::RepeatedPtrField< ::std::string>& string_values() const;
-  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_string_values();
-
-  // string instance_name = 1;
-  void clear_instance_name();
-  static const int kInstanceNameFieldNumber = 1;
-  const ::std::string& instance_name() const;
-  void set_instance_name(const ::std::string& value);
+  void set_values(int index, const char* value);
+  void set_values(int index, const char* value, size_t size);
+  ::std::string* add_values();
+  void add_values(const ::std::string& value);
   #if LANG_CXX11
-  void set_instance_name(::std::string&& value);
+  void add_values(::std::string&& value);
   #endif
-  void set_instance_name(const char* value);
-  void set_instance_name(const char* value, size_t size);
-  ::std::string* mutable_instance_name();
-  ::std::string* release_instance_name();
-  void set_allocated_instance_name(::std::string* instance_name);
+  void add_values(const char* value);
+  void add_values(const char* value, size_t size);
+  const ::google::protobuf::RepeatedPtrField< ::std::string>& values() const;
+  ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_values();
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.Values)
+  // @@protoc_insertion_point(class_scope:ModeliRpc.StringValues)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > int_vrs_;
-  mutable int _int_vrs_cached_byte_size_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > int_values_;
-  mutable int _int_values_cached_byte_size_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > real_vrs_;
-  mutable int _real_vrs_cached_byte_size_;
-  ::google::protobuf::RepeatedField< double > real_values_;
-  mutable int _real_values_cached_byte_size_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > bool_vrs_;
-  mutable int _bool_vrs_cached_byte_size_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > bool_values_;
-  mutable int _bool_values_cached_byte_size_;
-  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > string_vrs_;
-  mutable int _string_vrs_cached_byte_size_;
-  ::google::protobuf::RepeatedPtrField< ::std::string> string_values_;
-  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > valuerefs_;
+  mutable int _valuerefs_cached_byte_size_;
+  ::google::protobuf::RepeatedPtrField< ::std::string> values_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsValuesImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsStringValuesImpl();
 };
 // -------------------------------------------------------------------
 
@@ -484,7 +799,7 @@ class ChannelLink : public ::google::protobuf::Message /* @@protoc_insertion_poi
                &_ChannelLink_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    1;
+    4;
 
   void Swap(ChannelLink* other);
   friend void swap(ChannelLink& a, ChannelLink& b) {
@@ -634,7 +949,7 @@ class PlayRequest : public ::google::protobuf::Message /* @@protoc_insertion_poi
                &_PlayRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    2;
+    5;
 
   void Swap(PlayRequest* other);
   friend void swap(PlayRequest& a, PlayRequest& b) {
@@ -726,7 +1041,7 @@ class PlayResponse : public ::google::protobuf::Message /* @@protoc_insertion_po
                &_PlayResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    3;
+    6;
 
   void Swap(PlayResponse* other);
   friend void swap(PlayResponse& a, PlayResponse& b) {
@@ -825,7 +1140,7 @@ class PlayFastRequest : public ::google::protobuf::Message /* @@protoc_insertion
                &_PlayFastRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    4;
+    7;
 
   void Swap(PlayFastRequest* other);
   friend void swap(PlayFastRequest& a, PlayFastRequest& b) {
@@ -924,7 +1239,7 @@ class PlayFastResponse : public ::google::protobuf::Message /* @@protoc_insertio
                &_PlayFastResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    5;
+    8;
 
   void Swap(PlayFastResponse* other);
   friend void swap(PlayFastResponse& a, PlayFastResponse& b) {
@@ -1023,7 +1338,7 @@ class PauseRequest : public ::google::protobuf::Message /* @@protoc_insertion_po
                &_PauseRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    6;
+    9;
 
   void Swap(PauseRequest* other);
   friend void swap(PauseRequest& a, PauseRequest& b) {
@@ -1115,7 +1430,7 @@ class PauseResponse : public ::google::protobuf::Message /* @@protoc_insertion_p
                &_PauseResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    7;
+    10;
 
   void Swap(PauseResponse* other);
   friend void swap(PauseResponse& a, PauseResponse& b) {
@@ -1207,7 +1522,7 @@ class StopRequest : public ::google::protobuf::Message /* @@protoc_insertion_poi
                &_StopRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    8;
+    11;
 
   void Swap(StopRequest* other);
   friend void swap(StopRequest& a, StopRequest& b) {
@@ -1299,7 +1614,7 @@ class StopResponse : public ::google::protobuf::Message /* @@protoc_insertion_po
                &_StopResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    9;
+    12;
 
   void Swap(StopResponse* other);
   friend void swap(StopResponse& a, StopResponse& b) {
@@ -1398,7 +1713,7 @@ class AddFmuRequest : public ::google::protobuf::Message /* @@protoc_insertion_p
                &_AddFmuRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    10;
+    13;
 
   void Swap(AddFmuRequest* other);
   friend void swap(AddFmuRequest& a, AddFmuRequest& b) {
@@ -1520,7 +1835,7 @@ class AddFmuResponse : public ::google::protobuf::Message /* @@protoc_insertion_
                &_AddFmuResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    11;
+    14;
 
   void Swap(AddFmuResponse* other);
   friend void swap(AddFmuResponse& a, AddFmuResponse& b) {
@@ -1619,7 +1934,7 @@ class RemoveFmuRequest : public ::google::protobuf::Message /* @@protoc_insertio
                &_RemoveFmuRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    12;
+    15;
 
   void Swap(RemoveFmuRequest* other);
   friend void swap(RemoveFmuRequest& a, RemoveFmuRequest& b) {
@@ -1726,7 +2041,7 @@ class RemoveFmuResponse : public ::google::protobuf::Message /* @@protoc_inserti
                &_RemoveFmuResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    13;
+    16;
 
   void Swap(RemoveFmuResponse* other);
   friend void swap(RemoveFmuResponse& a, RemoveFmuResponse& b) {
@@ -1825,7 +2140,7 @@ class AddChannelLinkRequest : public ::google::protobuf::Message /* @@protoc_ins
                &_AddChannelLinkRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    14;
+    17;
 
   void Swap(AddChannelLinkRequest* other);
   friend void swap(AddChannelLinkRequest& a, AddChannelLinkRequest& b) {
@@ -1927,7 +2242,7 @@ class AddChannelLinkResponse : public ::google::protobuf::Message /* @@protoc_in
                &_AddChannelLinkResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    15;
+    18;
 
   void Swap(AddChannelLinkResponse* other);
   friend void swap(AddChannelLinkResponse& a, AddChannelLinkResponse& b) {
@@ -2026,7 +2341,7 @@ class RemoveChannelLinkRequest : public ::google::protobuf::Message /* @@protoc_
                &_RemoveChannelLinkRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    16;
+    19;
 
   void Swap(RemoveChannelLinkRequest* other);
   friend void swap(RemoveChannelLinkRequest& a, RemoveChannelLinkRequest& b) {
@@ -2128,7 +2443,7 @@ class RemoveChannelLinkResponse : public ::google::protobuf::Message /* @@protoc
                &_RemoveChannelLinkResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    17;
+    20;
 
   void Swap(RemoveChannelLinkResponse* other);
   friend void swap(RemoveChannelLinkResponse& a, RemoveChannelLinkResponse& b) {
@@ -2192,24 +2507,24 @@ class RemoveChannelLinkResponse : public ::google::protobuf::Message /* @@protoc
 };
 // -------------------------------------------------------------------
 
-class SetValuesReqest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetValuesReqest) */ {
+class SetIntRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetIntRequest) */ {
  public:
-  SetValuesReqest();
-  virtual ~SetValuesReqest();
+  SetIntRequest();
+  virtual ~SetIntRequest();
 
-  SetValuesReqest(const SetValuesReqest& from);
+  SetIntRequest(const SetIntRequest& from);
 
-  inline SetValuesReqest& operator=(const SetValuesReqest& from) {
+  inline SetIntRequest& operator=(const SetIntRequest& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  SetValuesReqest(SetValuesReqest&& from) noexcept
-    : SetValuesReqest() {
+  SetIntRequest(SetIntRequest&& from) noexcept
+    : SetIntRequest() {
     *this = ::std::move(from);
   }
 
-  inline SetValuesReqest& operator=(SetValuesReqest&& from) noexcept {
+  inline SetIntRequest& operator=(SetIntRequest&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2219,30 +2534,30 @@ class SetValuesReqest : public ::google::protobuf::Message /* @@protoc_insertion
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const SetValuesReqest& default_instance();
+  static const SetIntRequest& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const SetValuesReqest* internal_default_instance() {
-    return reinterpret_cast<const SetValuesReqest*>(
-               &_SetValuesReqest_default_instance_);
+  static inline const SetIntRequest* internal_default_instance() {
+    return reinterpret_cast<const SetIntRequest*>(
+               &_SetIntRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    18;
+    21;
 
-  void Swap(SetValuesReqest* other);
-  friend void swap(SetValuesReqest& a, SetValuesReqest& b) {
+  void Swap(SetIntRequest* other);
+  friend void swap(SetIntRequest& a, SetIntRequest& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline SetValuesReqest* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetIntRequest* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  SetValuesReqest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetIntRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const SetValuesReqest& from);
-  void MergeFrom(const SetValuesReqest& from);
+  void CopyFrom(const SetIntRequest& from);
+  void MergeFrom(const SetIntRequest& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2258,7 +2573,7 @@ class SetValuesReqest : public ::google::protobuf::Message /* @@protoc_insertion
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(SetValuesReqest* other);
+  void InternalSwap(SetIntRequest* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2274,44 +2589,59 @@ class SetValuesReqest : public ::google::protobuf::Message /* @@protoc_insertion
 
   // accessors -------------------------------------------------------
 
-  // .ModeliRpc.Values values = 1;
+  // string instance_name = 1;
+  void clear_instance_name();
+  static const int kInstanceNameFieldNumber = 1;
+  const ::std::string& instance_name() const;
+  void set_instance_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_instance_name(::std::string&& value);
+  #endif
+  void set_instance_name(const char* value);
+  void set_instance_name(const char* value, size_t size);
+  ::std::string* mutable_instance_name();
+  ::std::string* release_instance_name();
+  void set_allocated_instance_name(::std::string* instance_name);
+
+  // .ModeliRpc.IntValues values = 2;
   bool has_values() const;
   void clear_values();
-  static const int kValuesFieldNumber = 1;
-  const ::ModeliRpc::Values& values() const;
-  ::ModeliRpc::Values* release_values();
-  ::ModeliRpc::Values* mutable_values();
-  void set_allocated_values(::ModeliRpc::Values* values);
+  static const int kValuesFieldNumber = 2;
+  const ::ModeliRpc::IntValues& values() const;
+  ::ModeliRpc::IntValues* release_values();
+  ::ModeliRpc::IntValues* mutable_values();
+  void set_allocated_values(::ModeliRpc::IntValues* values);
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.SetValuesReqest)
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetIntRequest)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::ModeliRpc::Values* values_;
+  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::ModeliRpc::IntValues* values_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesReqestImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntRequestImpl();
 };
 // -------------------------------------------------------------------
 
-class SetValuesResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetValuesResponse) */ {
+class SetIntResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetIntResponse) */ {
  public:
-  SetValuesResponse();
-  virtual ~SetValuesResponse();
+  SetIntResponse();
+  virtual ~SetIntResponse();
 
-  SetValuesResponse(const SetValuesResponse& from);
+  SetIntResponse(const SetIntResponse& from);
 
-  inline SetValuesResponse& operator=(const SetValuesResponse& from) {
+  inline SetIntResponse& operator=(const SetIntResponse& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  SetValuesResponse(SetValuesResponse&& from) noexcept
-    : SetValuesResponse() {
+  SetIntResponse(SetIntResponse&& from) noexcept
+    : SetIntResponse() {
     *this = ::std::move(from);
   }
 
-  inline SetValuesResponse& operator=(SetValuesResponse&& from) noexcept {
+  inline SetIntResponse& operator=(SetIntResponse&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2321,30 +2651,30 @@ class SetValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const SetValuesResponse& default_instance();
+  static const SetIntResponse& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const SetValuesResponse* internal_default_instance() {
-    return reinterpret_cast<const SetValuesResponse*>(
-               &_SetValuesResponse_default_instance_);
+  static inline const SetIntResponse* internal_default_instance() {
+    return reinterpret_cast<const SetIntResponse*>(
+               &_SetIntResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    19;
+    22;
 
-  void Swap(SetValuesResponse* other);
-  friend void swap(SetValuesResponse& a, SetValuesResponse& b) {
+  void Swap(SetIntResponse* other);
+  friend void swap(SetIntResponse& a, SetIntResponse& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline SetValuesResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetIntResponse* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  SetValuesResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetIntResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const SetValuesResponse& from);
-  void MergeFrom(const SetValuesResponse& from);
+  void CopyFrom(const SetIntResponse& from);
+  void MergeFrom(const SetIntResponse& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2360,7 +2690,7 @@ class SetValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(SetValuesResponse* other);
+  void InternalSwap(SetIntResponse* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2382,35 +2712,35 @@ class SetValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   ::ModeliRpc::Fmi2Status status() const;
   void set_status(::ModeliRpc::Fmi2Status value);
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.SetValuesResponse)
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetIntResponse)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   int status_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetValuesResponseImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetIntResponseImpl();
 };
 // -------------------------------------------------------------------
 
-class NewValuesRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.NewValuesRequest) */ {
+class SetRealRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetRealRequest) */ {
  public:
-  NewValuesRequest();
-  virtual ~NewValuesRequest();
+  SetRealRequest();
+  virtual ~SetRealRequest();
 
-  NewValuesRequest(const NewValuesRequest& from);
+  SetRealRequest(const SetRealRequest& from);
 
-  inline NewValuesRequest& operator=(const NewValuesRequest& from) {
+  inline SetRealRequest& operator=(const SetRealRequest& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  NewValuesRequest(NewValuesRequest&& from) noexcept
-    : NewValuesRequest() {
+  SetRealRequest(SetRealRequest&& from) noexcept
+    : SetRealRequest() {
     *this = ::std::move(from);
   }
 
-  inline NewValuesRequest& operator=(NewValuesRequest&& from) noexcept {
+  inline SetRealRequest& operator=(SetRealRequest&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2420,30 +2750,30 @@ class NewValuesRequest : public ::google::protobuf::Message /* @@protoc_insertio
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const NewValuesRequest& default_instance();
+  static const SetRealRequest& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const NewValuesRequest* internal_default_instance() {
-    return reinterpret_cast<const NewValuesRequest*>(
-               &_NewValuesRequest_default_instance_);
+  static inline const SetRealRequest* internal_default_instance() {
+    return reinterpret_cast<const SetRealRequest*>(
+               &_SetRealRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    20;
+    23;
 
-  void Swap(NewValuesRequest* other);
-  friend void swap(NewValuesRequest& a, NewValuesRequest& b) {
+  void Swap(SetRealRequest* other);
+  friend void swap(SetRealRequest& a, SetRealRequest& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline NewValuesRequest* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetRealRequest* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  NewValuesRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetRealRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const NewValuesRequest& from);
-  void MergeFrom(const NewValuesRequest& from);
+  void CopyFrom(const SetRealRequest& from);
+  void MergeFrom(const SetRealRequest& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2459,7 +2789,7 @@ class NewValuesRequest : public ::google::protobuf::Message /* @@protoc_insertio
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(NewValuesRequest* other);
+  void InternalSwap(SetRealRequest* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2475,34 +2805,59 @@ class NewValuesRequest : public ::google::protobuf::Message /* @@protoc_insertio
 
   // accessors -------------------------------------------------------
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.NewValuesRequest)
+  // string instance_name = 1;
+  void clear_instance_name();
+  static const int kInstanceNameFieldNumber = 1;
+  const ::std::string& instance_name() const;
+  void set_instance_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_instance_name(::std::string&& value);
+  #endif
+  void set_instance_name(const char* value);
+  void set_instance_name(const char* value, size_t size);
+  ::std::string* mutable_instance_name();
+  ::std::string* release_instance_name();
+  void set_allocated_instance_name(::std::string* instance_name);
+
+  // .ModeliRpc.RealValues values = 2;
+  bool has_values() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  const ::ModeliRpc::RealValues& values() const;
+  ::ModeliRpc::RealValues* release_values();
+  ::ModeliRpc::RealValues* mutable_values();
+  void set_allocated_values(::ModeliRpc::RealValues* values);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetRealRequest)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::ModeliRpc::RealValues* values_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsNewValuesRequestImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealRequestImpl();
 };
 // -------------------------------------------------------------------
 
-class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.NewValuesResponse) */ {
+class SetRealResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetRealResponse) */ {
  public:
-  NewValuesResponse();
-  virtual ~NewValuesResponse();
+  SetRealResponse();
+  virtual ~SetRealResponse();
 
-  NewValuesResponse(const NewValuesResponse& from);
+  SetRealResponse(const SetRealResponse& from);
 
-  inline NewValuesResponse& operator=(const NewValuesResponse& from) {
+  inline SetRealResponse& operator=(const SetRealResponse& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  NewValuesResponse(NewValuesResponse&& from) noexcept
-    : NewValuesResponse() {
+  SetRealResponse(SetRealResponse&& from) noexcept
+    : SetRealResponse() {
     *this = ::std::move(from);
   }
 
-  inline NewValuesResponse& operator=(NewValuesResponse&& from) noexcept {
+  inline SetRealResponse& operator=(SetRealResponse&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2512,30 +2867,30 @@ class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const NewValuesResponse& default_instance();
+  static const SetRealResponse& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const NewValuesResponse* internal_default_instance() {
-    return reinterpret_cast<const NewValuesResponse*>(
-               &_NewValuesResponse_default_instance_);
+  static inline const SetRealResponse* internal_default_instance() {
+    return reinterpret_cast<const SetRealResponse*>(
+               &_SetRealResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    21;
+    24;
 
-  void Swap(NewValuesResponse* other);
-  friend void swap(NewValuesResponse& a, NewValuesResponse& b) {
+  void Swap(SetRealResponse* other);
+  friend void swap(SetRealResponse& a, SetRealResponse& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline NewValuesResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetRealResponse* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  NewValuesResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetRealResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const NewValuesResponse& from);
-  void MergeFrom(const NewValuesResponse& from);
+  void CopyFrom(const SetRealResponse& from);
+  void MergeFrom(const SetRealResponse& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2551,7 +2906,7 @@ class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(NewValuesResponse* other);
+  void InternalSwap(SetRealResponse* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2567,51 +2922,41 @@ class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_inserti
 
   // accessors -------------------------------------------------------
 
-  // .ModeliRpc.Values values = 1;
-  bool has_values() const;
-  void clear_values();
-  static const int kValuesFieldNumber = 1;
-  const ::ModeliRpc::Values& values() const;
-  ::ModeliRpc::Values* release_values();
-  ::ModeliRpc::Values* mutable_values();
-  void set_allocated_values(::ModeliRpc::Values* values);
-
-  // double timestamp = 2;
-  void clear_timestamp();
-  static const int kTimestampFieldNumber = 2;
-  double timestamp() const;
-  void set_timestamp(double value);
+  // .ModeliRpc.Fmi2Status status = 1;
+  void clear_status();
+  static const int kStatusFieldNumber = 1;
+  ::ModeliRpc::Fmi2Status status() const;
+  void set_status(::ModeliRpc::Fmi2Status value);
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.NewValuesResponse)
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetRealResponse)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::ModeliRpc::Values* values_;
-  double timestamp_;
+  int status_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsNewValuesResponseImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetRealResponseImpl();
 };
 // -------------------------------------------------------------------
 
-class LogRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.LogRequest) */ {
+class SetBoolRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetBoolRequest) */ {
  public:
-  LogRequest();
-  virtual ~LogRequest();
+  SetBoolRequest();
+  virtual ~SetBoolRequest();
 
-  LogRequest(const LogRequest& from);
+  SetBoolRequest(const SetBoolRequest& from);
 
-  inline LogRequest& operator=(const LogRequest& from) {
+  inline SetBoolRequest& operator=(const SetBoolRequest& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  LogRequest(LogRequest&& from) noexcept
-    : LogRequest() {
+  SetBoolRequest(SetBoolRequest&& from) noexcept
+    : SetBoolRequest() {
     *this = ::std::move(from);
   }
 
-  inline LogRequest& operator=(LogRequest&& from) noexcept {
+  inline SetBoolRequest& operator=(SetBoolRequest&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2621,30 +2966,30 @@ class LogRequest : public ::google::protobuf::Message /* @@protoc_insertion_poin
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const LogRequest& default_instance();
+  static const SetBoolRequest& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const LogRequest* internal_default_instance() {
-    return reinterpret_cast<const LogRequest*>(
-               &_LogRequest_default_instance_);
+  static inline const SetBoolRequest* internal_default_instance() {
+    return reinterpret_cast<const SetBoolRequest*>(
+               &_SetBoolRequest_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    22;
+    25;
 
-  void Swap(LogRequest* other);
-  friend void swap(LogRequest& a, LogRequest& b) {
+  void Swap(SetBoolRequest* other);
+  friend void swap(SetBoolRequest& a, SetBoolRequest& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline LogRequest* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetBoolRequest* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  LogRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetBoolRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const LogRequest& from);
-  void MergeFrom(const LogRequest& from);
+  void CopyFrom(const SetBoolRequest& from);
+  void MergeFrom(const SetBoolRequest& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2660,7 +3005,7 @@ class LogRequest : public ::google::protobuf::Message /* @@protoc_insertion_poin
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(LogRequest* other);
+  void InternalSwap(SetBoolRequest* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2676,34 +3021,59 @@ class LogRequest : public ::google::protobuf::Message /* @@protoc_insertion_poin
 
   // accessors -------------------------------------------------------
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.LogRequest)
+  // string instance_name = 1;
+  void clear_instance_name();
+  static const int kInstanceNameFieldNumber = 1;
+  const ::std::string& instance_name() const;
+  void set_instance_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_instance_name(::std::string&& value);
+  #endif
+  void set_instance_name(const char* value);
+  void set_instance_name(const char* value, size_t size);
+  ::std::string* mutable_instance_name();
+  ::std::string* release_instance_name();
+  void set_allocated_instance_name(::std::string* instance_name);
+
+  // .ModeliRpc.BoolValues values = 2;
+  bool has_values() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  const ::ModeliRpc::BoolValues& values() const;
+  ::ModeliRpc::BoolValues* release_values();
+  ::ModeliRpc::BoolValues* mutable_values();
+  void set_allocated_values(::ModeliRpc::BoolValues* values);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetBoolRequest)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::ModeliRpc::BoolValues* values_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsLogRequestImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolRequestImpl();
 };
 // -------------------------------------------------------------------
 
-class LogResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.LogResponse) */ {
+class SetBoolResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetBoolResponse) */ {
  public:
-  LogResponse();
-  virtual ~LogResponse();
+  SetBoolResponse();
+  virtual ~SetBoolResponse();
 
-  LogResponse(const LogResponse& from);
+  SetBoolResponse(const SetBoolResponse& from);
 
-  inline LogResponse& operator=(const LogResponse& from) {
+  inline SetBoolResponse& operator=(const SetBoolResponse& from) {
     CopyFrom(from);
     return *this;
   }
   #if LANG_CXX11
-  LogResponse(LogResponse&& from) noexcept
-    : LogResponse() {
+  SetBoolResponse(SetBoolResponse&& from) noexcept
+    : SetBoolResponse() {
     *this = ::std::move(from);
   }
 
-  inline LogResponse& operator=(LogResponse&& from) noexcept {
+  inline SetBoolResponse& operator=(SetBoolResponse&& from) noexcept {
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
@@ -2713,30 +3083,30 @@ class LogResponse : public ::google::protobuf::Message /* @@protoc_insertion_poi
   }
   #endif
   static const ::google::protobuf::Descriptor* descriptor();
-  static const LogResponse& default_instance();
+  static const SetBoolResponse& default_instance();
 
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
-  static inline const LogResponse* internal_default_instance() {
-    return reinterpret_cast<const LogResponse*>(
-               &_LogResponse_default_instance_);
+  static inline const SetBoolResponse* internal_default_instance() {
+    return reinterpret_cast<const SetBoolResponse*>(
+               &_SetBoolResponse_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
-    23;
+    26;
 
-  void Swap(LogResponse* other);
-  friend void swap(LogResponse& a, LogResponse& b) {
+  void Swap(SetBoolResponse* other);
+  friend void swap(SetBoolResponse& a, SetBoolResponse& b) {
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
-  inline LogResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+  inline SetBoolResponse* New() const PROTOBUF_FINAL { return New(NULL); }
 
-  LogResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  SetBoolResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
   void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
   void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void CopyFrom(const LogResponse& from);
-  void MergeFrom(const LogResponse& from);
+  void CopyFrom(const SetBoolResponse& from);
+  void MergeFrom(const SetBoolResponse& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
@@ -2752,7 +3122,7 @@ class LogResponse : public ::google::protobuf::Message /* @@protoc_insertion_poi
   void SharedCtor();
   void SharedDtor();
   void SetCachedSize(int size) const PROTOBUF_FINAL;
-  void InternalSwap(LogResponse* other);
+  void InternalSwap(SetBoolResponse* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
@@ -2768,1137 +3138,2312 @@ class LogResponse : public ::google::protobuf::Message /* @@protoc_insertion_poi
 
   // accessors -------------------------------------------------------
 
-  // string instance_name = 1;
-  void clear_instance_name();
-  static const int kInstanceNameFieldNumber = 1;
-  const ::std::string& instance_name() const;
-  void set_instance_name(const ::std::string& value);
-  #if LANG_CXX11
-  void set_instance_name(::std::string&& value);
-  #endif
-  void set_instance_name(const char* value);
-  void set_instance_name(const char* value, size_t size);
-  ::std::string* mutable_instance_name();
-  ::std::string* release_instance_name();
-  void set_allocated_instance_name(::std::string* instance_name);
-
-  // string message = 3;
-  void clear_message();
-  static const int kMessageFieldNumber = 3;
-  const ::std::string& message() const;
-  void set_message(const ::std::string& value);
-  #if LANG_CXX11
-  void set_message(::std::string&& value);
-  #endif
-  void set_message(const char* value);
-  void set_message(const char* value, size_t size);
-  ::std::string* mutable_message();
-  ::std::string* release_message();
-  void set_allocated_message(::std::string* message);
-
-  // .ModeliRpc.Fmi2Status status = 2;
+  // .ModeliRpc.Fmi2Status status = 1;
   void clear_status();
-  static const int kStatusFieldNumber = 2;
+  static const int kStatusFieldNumber = 1;
   ::ModeliRpc::Fmi2Status status() const;
   void set_status(::ModeliRpc::Fmi2Status value);
 
-  // @@protoc_insertion_point(class_scope:ModeliRpc.LogResponse)
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetBoolResponse)
  private:
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
-  ::google::protobuf::internal::ArenaStringPtr instance_name_;
-  ::google::protobuf::internal::ArenaStringPtr message_;
   int status_;
   mutable int _cached_size_;
   friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
-  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsLogResponseImpl();
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetBoolResponseImpl();
 };
-// ===================================================================
-
+// -------------------------------------------------------------------
 
-// ===================================================================
+class SetStringRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetStringRequest) */ {
+ public:
+  SetStringRequest();
+  virtual ~SetStringRequest();
 
-#ifdef __GNUC__
-  #pragma GCC diagnostic push
-  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif  // __GNUC__
-// Values
+  SetStringRequest(const SetStringRequest& from);
 
-// string instance_name = 1;
-inline void Values::clear_instance_name() {
-  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& Values::instance_name() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.instance_name)
-  return instance_name_.GetNoArena();
-}
-inline void Values::set_instance_name(const ::std::string& value) {
-  
-  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.instance_name)
-}
-#if LANG_CXX11
-inline void Values::set_instance_name(::std::string&& value) {
-  
-  instance_name_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.Values.instance_name)
-}
-#endif
-inline void Values::set_instance_name(const char* value) {
-  GOOGLE_DCHECK(value != NULL);
-  
-  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.Values.instance_name)
-}
-inline void Values::set_instance_name(const char* value, size_t size) {
-  
-  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.Values.instance_name)
-}
-inline ::std::string* Values::mutable_instance_name() {
-  
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.Values.instance_name)
-  return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline ::std::string* Values::release_instance_name() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.Values.instance_name)
-  
-  return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline void Values::set_allocated_instance_name(::std::string* instance_name) {
-  if (instance_name != NULL) {
-    
-  } else {
-    
+  inline SetStringRequest& operator=(const SetStringRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SetStringRequest(SetStringRequest&& from) noexcept
+    : SetStringRequest() {
+    *this = ::std::move(from);
   }
-  instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.Values.instance_name)
-}
 
-// repeated uint32 int_vrs = 2;
-inline int Values::int_vrs_size() const {
-  return int_vrs_.size();
+  inline SetStringRequest& operator=(SetStringRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const SetStringRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SetStringRequest* internal_default_instance() {
+    return reinterpret_cast<const SetStringRequest*>(
+               &_SetStringRequest_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    27;
+
+  void Swap(SetStringRequest* other);
+  friend void swap(SetStringRequest& a, SetStringRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SetStringRequest* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  SetStringRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const SetStringRequest& from);
+  void MergeFrom(const SetStringRequest& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(SetStringRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string instance_name = 1;
+  void clear_instance_name();
+  static const int kInstanceNameFieldNumber = 1;
+  const ::std::string& instance_name() const;
+  void set_instance_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_instance_name(::std::string&& value);
+  #endif
+  void set_instance_name(const char* value);
+  void set_instance_name(const char* value, size_t size);
+  ::std::string* mutable_instance_name();
+  ::std::string* release_instance_name();
+  void set_allocated_instance_name(::std::string* instance_name);
+
+  // .ModeliRpc.StringValues values = 2;
+  bool has_values() const;
+  void clear_values();
+  static const int kValuesFieldNumber = 2;
+  const ::ModeliRpc::StringValues& values() const;
+  ::ModeliRpc::StringValues* release_values();
+  ::ModeliRpc::StringValues* mutable_values();
+  void set_allocated_values(::ModeliRpc::StringValues* values);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetStringRequest)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::ModeliRpc::StringValues* values_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringRequestImpl();
+};
+// -------------------------------------------------------------------
+
+class SetStringResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.SetStringResponse) */ {
+ public:
+  SetStringResponse();
+  virtual ~SetStringResponse();
+
+  SetStringResponse(const SetStringResponse& from);
+
+  inline SetStringResponse& operator=(const SetStringResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SetStringResponse(SetStringResponse&& from) noexcept
+    : SetStringResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline SetStringResponse& operator=(SetStringResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const SetStringResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SetStringResponse* internal_default_instance() {
+    return reinterpret_cast<const SetStringResponse*>(
+               &_SetStringResponse_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    28;
+
+  void Swap(SetStringResponse* other);
+  friend void swap(SetStringResponse& a, SetStringResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SetStringResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  SetStringResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const SetStringResponse& from);
+  void MergeFrom(const SetStringResponse& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(SetStringResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .ModeliRpc.Fmi2Status status = 1;
+  void clear_status();
+  static const int kStatusFieldNumber = 1;
+  ::ModeliRpc::Fmi2Status status() const;
+  void set_status(::ModeliRpc::Fmi2Status value);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.SetStringResponse)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  int status_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsSetStringResponseImpl();
+};
+// -------------------------------------------------------------------
+
+class NewValuesRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.NewValuesRequest) */ {
+ public:
+  NewValuesRequest();
+  virtual ~NewValuesRequest();
+
+  NewValuesRequest(const NewValuesRequest& from);
+
+  inline NewValuesRequest& operator=(const NewValuesRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NewValuesRequest(NewValuesRequest&& from) noexcept
+    : NewValuesRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline NewValuesRequest& operator=(NewValuesRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const NewValuesRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NewValuesRequest* internal_default_instance() {
+    return reinterpret_cast<const NewValuesRequest*>(
+               &_NewValuesRequest_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    29;
+
+  void Swap(NewValuesRequest* other);
+  friend void swap(NewValuesRequest& a, NewValuesRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NewValuesRequest* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  NewValuesRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const NewValuesRequest& from);
+  void MergeFrom(const NewValuesRequest& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(NewValuesRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.NewValuesRequest)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsNewValuesRequestImpl();
+};
+// -------------------------------------------------------------------
+
+class NewValuesResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.NewValuesResponse) */ {
+ public:
+  NewValuesResponse();
+  virtual ~NewValuesResponse();
+
+  NewValuesResponse(const NewValuesResponse& from);
+
+  inline NewValuesResponse& operator=(const NewValuesResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  NewValuesResponse(NewValuesResponse&& from) noexcept
+    : NewValuesResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline NewValuesResponse& operator=(NewValuesResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const NewValuesResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const NewValuesResponse* internal_default_instance() {
+    return reinterpret_cast<const NewValuesResponse*>(
+               &_NewValuesResponse_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    30;
+
+  void Swap(NewValuesResponse* other);
+  friend void swap(NewValuesResponse& a, NewValuesResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline NewValuesResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  NewValuesResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const NewValuesResponse& from);
+  void MergeFrom(const NewValuesResponse& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(NewValuesResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .ModeliRpc.IntValues intValues = 2;
+  bool has_intvalues() const;
+  void clear_intvalues();
+  static const int kIntValuesFieldNumber = 2;
+  const ::ModeliRpc::IntValues& intvalues() const;
+  ::ModeliRpc::IntValues* release_intvalues();
+  ::ModeliRpc::IntValues* mutable_intvalues();
+  void set_allocated_intvalues(::ModeliRpc::IntValues* intvalues);
+
+  // .ModeliRpc.RealValues realValues = 3;
+  bool has_realvalues() const;
+  void clear_realvalues();
+  static const int kRealValuesFieldNumber = 3;
+  const ::ModeliRpc::RealValues& realvalues() const;
+  ::ModeliRpc::RealValues* release_realvalues();
+  ::ModeliRpc::RealValues* mutable_realvalues();
+  void set_allocated_realvalues(::ModeliRpc::RealValues* realvalues);
+
+  // .ModeliRpc.BoolValues boolValues = 4;
+  bool has_boolvalues() const;
+  void clear_boolvalues();
+  static const int kBoolValuesFieldNumber = 4;
+  const ::ModeliRpc::BoolValues& boolvalues() const;
+  ::ModeliRpc::BoolValues* release_boolvalues();
+  ::ModeliRpc::BoolValues* mutable_boolvalues();
+  void set_allocated_boolvalues(::ModeliRpc::BoolValues* boolvalues);
+
+  // .ModeliRpc.StringValues stringValues = 5;
+  bool has_stringvalues() const;
+  void clear_stringvalues();
+  static const int kStringValuesFieldNumber = 5;
+  const ::ModeliRpc::StringValues& stringvalues() const;
+  ::ModeliRpc::StringValues* release_stringvalues();
+  ::ModeliRpc::StringValues* mutable_stringvalues();
+  void set_allocated_stringvalues(::ModeliRpc::StringValues* stringvalues);
+
+  // double timestamp = 1;
+  void clear_timestamp();
+  static const int kTimestampFieldNumber = 1;
+  double timestamp() const;
+  void set_timestamp(double value);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.NewValuesResponse)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::ModeliRpc::IntValues* intvalues_;
+  ::ModeliRpc::RealValues* realvalues_;
+  ::ModeliRpc::BoolValues* boolvalues_;
+  ::ModeliRpc::StringValues* stringvalues_;
+  double timestamp_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsNewValuesResponseImpl();
+};
+// -------------------------------------------------------------------
+
+class LogRequest : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.LogRequest) */ {
+ public:
+  LogRequest();
+  virtual ~LogRequest();
+
+  LogRequest(const LogRequest& from);
+
+  inline LogRequest& operator=(const LogRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LogRequest(LogRequest&& from) noexcept
+    : LogRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline LogRequest& operator=(LogRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const LogRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LogRequest* internal_default_instance() {
+    return reinterpret_cast<const LogRequest*>(
+               &_LogRequest_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    31;
+
+  void Swap(LogRequest* other);
+  friend void swap(LogRequest& a, LogRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LogRequest* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  LogRequest* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const LogRequest& from);
+  void MergeFrom(const LogRequest& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(LogRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.LogRequest)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsLogRequestImpl();
+};
+// -------------------------------------------------------------------
+
+class LogResponse : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:ModeliRpc.LogResponse) */ {
+ public:
+  LogResponse();
+  virtual ~LogResponse();
+
+  LogResponse(const LogResponse& from);
+
+  inline LogResponse& operator=(const LogResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  LogResponse(LogResponse&& from) noexcept
+    : LogResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline LogResponse& operator=(LogResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const LogResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const LogResponse* internal_default_instance() {
+    return reinterpret_cast<const LogResponse*>(
+               &_LogResponse_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    32;
+
+  void Swap(LogResponse* other);
+  friend void swap(LogResponse& a, LogResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline LogResponse* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  LogResponse* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const LogResponse& from);
+  void MergeFrom(const LogResponse& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(LogResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // string instance_name = 1;
+  void clear_instance_name();
+  static const int kInstanceNameFieldNumber = 1;
+  const ::std::string& instance_name() const;
+  void set_instance_name(const ::std::string& value);
+  #if LANG_CXX11
+  void set_instance_name(::std::string&& value);
+  #endif
+  void set_instance_name(const char* value);
+  void set_instance_name(const char* value, size_t size);
+  ::std::string* mutable_instance_name();
+  ::std::string* release_instance_name();
+  void set_allocated_instance_name(::std::string* instance_name);
+
+  // string message = 3;
+  void clear_message();
+  static const int kMessageFieldNumber = 3;
+  const ::std::string& message() const;
+  void set_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_message(::std::string&& value);
+  #endif
+  void set_message(const char* value);
+  void set_message(const char* value, size_t size);
+  ::std::string* mutable_message();
+  ::std::string* release_message();
+  void set_allocated_message(::std::string* message);
+
+  // .ModeliRpc.Fmi2Status status = 2;
+  void clear_status();
+  static const int kStatusFieldNumber = 2;
+  ::ModeliRpc::Fmi2Status status() const;
+  void set_status(::ModeliRpc::Fmi2Status value);
+
+  // @@protoc_insertion_point(class_scope:ModeliRpc.LogResponse)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr instance_name_;
+  ::google::protobuf::internal::ArenaStringPtr message_;
+  int status_;
+  mutable int _cached_size_;
+  friend struct ::protobuf_ModeliRpc_2eproto::TableStruct;
+  friend void ::protobuf_ModeliRpc_2eproto::InitDefaultsLogResponseImpl();
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+  #pragma GCC diagnostic push
+  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif  // __GNUC__
+// IntValues
+
+// repeated uint32 valueRefs = 1;
+inline int IntValues::valuerefs_size() const {
+  return valuerefs_.size();
+}
+inline void IntValues::clear_valuerefs() {
+  valuerefs_.Clear();
+}
+inline ::google::protobuf::uint32 IntValues::valuerefs(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.IntValues.valueRefs)
+  return valuerefs_.Get(index);
 }
-inline void Values::clear_int_vrs() {
-  int_vrs_.Clear();
+inline void IntValues::set_valuerefs(int index, ::google::protobuf::uint32 value) {
+  valuerefs_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.IntValues.valueRefs)
 }
-inline ::google::protobuf::uint32 Values::int_vrs(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.int_vrs)
-  return int_vrs_.Get(index);
+inline void IntValues::add_valuerefs(::google::protobuf::uint32 value) {
+  valuerefs_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.IntValues.valueRefs)
 }
-inline void Values::set_int_vrs(int index, ::google::protobuf::uint32 value) {
-  int_vrs_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.int_vrs)
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+IntValues::valuerefs() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.IntValues.valueRefs)
+  return valuerefs_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+IntValues::mutable_valuerefs() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.IntValues.valueRefs)
+  return &valuerefs_;
+}
+
+// repeated int32 values = 2;
+inline int IntValues::values_size() const {
+  return values_.size();
+}
+inline void IntValues::clear_values() {
+  values_.Clear();
+}
+inline ::google::protobuf::int32 IntValues::values(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.IntValues.values)
+  return values_.Get(index);
+}
+inline void IntValues::set_values(int index, ::google::protobuf::int32 value) {
+  values_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.IntValues.values)
+}
+inline void IntValues::add_values(::google::protobuf::int32 value) {
+  values_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.IntValues.values)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
+IntValues::values() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.IntValues.values)
+  return values_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
+IntValues::mutable_values() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.IntValues.values)
+  return &values_;
+}
+
+// -------------------------------------------------------------------
+
+// RealValues
+
+// repeated uint32 valueRefs = 1;
+inline int RealValues::valuerefs_size() const {
+  return valuerefs_.size();
+}
+inline void RealValues::clear_valuerefs() {
+  valuerefs_.Clear();
+}
+inline ::google::protobuf::uint32 RealValues::valuerefs(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.RealValues.valueRefs)
+  return valuerefs_.Get(index);
+}
+inline void RealValues::set_valuerefs(int index, ::google::protobuf::uint32 value) {
+  valuerefs_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.RealValues.valueRefs)
+}
+inline void RealValues::add_valuerefs(::google::protobuf::uint32 value) {
+  valuerefs_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.RealValues.valueRefs)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+RealValues::valuerefs() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.RealValues.valueRefs)
+  return valuerefs_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+RealValues::mutable_valuerefs() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.RealValues.valueRefs)
+  return &valuerefs_;
+}
+
+// repeated double values = 2;
+inline int RealValues::values_size() const {
+  return values_.size();
+}
+inline void RealValues::clear_values() {
+  values_.Clear();
+}
+inline double RealValues::values(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.RealValues.values)
+  return values_.Get(index);
+}
+inline void RealValues::set_values(int index, double value) {
+  values_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.RealValues.values)
 }
-inline void Values::add_int_vrs(::google::protobuf::uint32 value) {
-  int_vrs_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.int_vrs)
+inline void RealValues::add_values(double value) {
+  values_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.RealValues.values)
+}
+inline const ::google::protobuf::RepeatedField< double >&
+RealValues::values() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.RealValues.values)
+  return values_;
+}
+inline ::google::protobuf::RepeatedField< double >*
+RealValues::mutable_values() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.RealValues.values)
+  return &values_;
+}
+
+// -------------------------------------------------------------------
+
+// BoolValues
+
+// repeated uint32 valueRefs = 1;
+inline int BoolValues::valuerefs_size() const {
+  return valuerefs_.size();
+}
+inline void BoolValues::clear_valuerefs() {
+  valuerefs_.Clear();
+}
+inline ::google::protobuf::uint32 BoolValues::valuerefs(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.BoolValues.valueRefs)
+  return valuerefs_.Get(index);
+}
+inline void BoolValues::set_valuerefs(int index, ::google::protobuf::uint32 value) {
+  valuerefs_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.BoolValues.valueRefs)
+}
+inline void BoolValues::add_valuerefs(::google::protobuf::uint32 value) {
+  valuerefs_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.BoolValues.valueRefs)
 }
 inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-Values::int_vrs() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.int_vrs)
-  return int_vrs_;
+BoolValues::valuerefs() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.BoolValues.valueRefs)
+  return valuerefs_;
 }
 inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-Values::mutable_int_vrs() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.int_vrs)
-  return &int_vrs_;
+BoolValues::mutable_valuerefs() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.BoolValues.valueRefs)
+  return &valuerefs_;
 }
 
-// repeated int32 int_values = 3;
-inline int Values::int_values_size() const {
-  return int_values_.size();
+// repeated int32 values = 2;
+inline int BoolValues::values_size() const {
+  return values_.size();
 }
-inline void Values::clear_int_values() {
-  int_values_.Clear();
+inline void BoolValues::clear_values() {
+  values_.Clear();
 }
-inline ::google::protobuf::int32 Values::int_values(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.int_values)
-  return int_values_.Get(index);
+inline ::google::protobuf::int32 BoolValues::values(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.BoolValues.values)
+  return values_.Get(index);
 }
-inline void Values::set_int_values(int index, ::google::protobuf::int32 value) {
-  int_values_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.int_values)
+inline void BoolValues::set_values(int index, ::google::protobuf::int32 value) {
+  values_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.BoolValues.values)
 }
-inline void Values::add_int_values(::google::protobuf::int32 value) {
-  int_values_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.int_values)
+inline void BoolValues::add_values(::google::protobuf::int32 value) {
+  values_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.BoolValues.values)
 }
 inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
-Values::int_values() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.int_values)
-  return int_values_;
+BoolValues::values() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.BoolValues.values)
+  return values_;
 }
 inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
-Values::mutable_int_values() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.int_values)
-  return &int_values_;
+BoolValues::mutable_values() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.BoolValues.values)
+  return &values_;
+}
+
+// -------------------------------------------------------------------
+
+// StringValues
+
+// repeated uint32 valueRefs = 1;
+inline int StringValues::valuerefs_size() const {
+  return valuerefs_.size();
+}
+inline void StringValues::clear_valuerefs() {
+  valuerefs_.Clear();
+}
+inline ::google::protobuf::uint32 StringValues::valuerefs(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.StringValues.valueRefs)
+  return valuerefs_.Get(index);
+}
+inline void StringValues::set_valuerefs(int index, ::google::protobuf::uint32 value) {
+  valuerefs_.Set(index, value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.StringValues.valueRefs)
+}
+inline void StringValues::add_valuerefs(::google::protobuf::uint32 value) {
+  valuerefs_.Add(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.StringValues.valueRefs)
+}
+inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
+StringValues::valuerefs() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.StringValues.valueRefs)
+  return valuerefs_;
+}
+inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
+StringValues::mutable_valuerefs() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.StringValues.valueRefs)
+  return &valuerefs_;
+}
+
+// repeated string values = 2;
+inline int StringValues::values_size() const {
+  return values_.size();
+}
+inline void StringValues::clear_values() {
+  values_.Clear();
+}
+inline const ::std::string& StringValues::values(int index) const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.StringValues.values)
+  return values_.Get(index);
+}
+inline ::std::string* StringValues::mutable_values(int index) {
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.StringValues.values)
+  return values_.Mutable(index);
+}
+inline void StringValues::set_values(int index, const ::std::string& value) {
+  // @@protoc_insertion_point(field_set:ModeliRpc.StringValues.values)
+  values_.Mutable(index)->assign(value);
+}
+#if LANG_CXX11
+inline void StringValues::set_values(int index, ::std::string&& value) {
+  // @@protoc_insertion_point(field_set:ModeliRpc.StringValues.values)
+  values_.Mutable(index)->assign(std::move(value));
+}
+#endif
+inline void StringValues::set_values(int index, const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  values_.Mutable(index)->assign(value);
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.StringValues.values)
+}
+inline void StringValues::set_values(int index, const char* value, size_t size) {
+  values_.Mutable(index)->assign(
+    reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.StringValues.values)
+}
+inline ::std::string* StringValues::add_values() {
+  // @@protoc_insertion_point(field_add_mutable:ModeliRpc.StringValues.values)
+  return values_.Add();
+}
+inline void StringValues::add_values(const ::std::string& value) {
+  values_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add:ModeliRpc.StringValues.values)
+}
+#if LANG_CXX11
+inline void StringValues::add_values(::std::string&& value) {
+  values_.Add(std::move(value));
+  // @@protoc_insertion_point(field_add:ModeliRpc.StringValues.values)
+}
+#endif
+inline void StringValues::add_values(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  values_.Add()->assign(value);
+  // @@protoc_insertion_point(field_add_char:ModeliRpc.StringValues.values)
+}
+inline void StringValues::add_values(const char* value, size_t size) {
+  values_.Add()->assign(reinterpret_cast<const char*>(value), size);
+  // @@protoc_insertion_point(field_add_pointer:ModeliRpc.StringValues.values)
+}
+inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
+StringValues::values() const {
+  // @@protoc_insertion_point(field_list:ModeliRpc.StringValues.values)
+  return values_;
+}
+inline ::google::protobuf::RepeatedPtrField< ::std::string>*
+StringValues::mutable_values() {
+  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.StringValues.values)
+  return &values_;
+}
+
+// -------------------------------------------------------------------
+
+// ChannelLink
+
+// string master_instance_name = 1;
+inline void ChannelLink::clear_master_instance_name() {
+  master_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& ChannelLink::master_instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.master_instance_name)
+  return master_instance_name_.GetNoArena();
+}
+inline void ChannelLink::set_master_instance_name(const ::std::string& value) {
+  
+  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.master_instance_name)
+}
+#if LANG_CXX11
+inline void ChannelLink::set_master_instance_name(::std::string&& value) {
+  
+  master_instance_name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.ChannelLink.master_instance_name)
+}
+#endif
+inline void ChannelLink::set_master_instance_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.ChannelLink.master_instance_name)
+}
+inline void ChannelLink::set_master_instance_name(const char* value, size_t size) {
+  
+  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.ChannelLink.master_instance_name)
+}
+inline ::std::string* ChannelLink::mutable_master_instance_name() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.ChannelLink.master_instance_name)
+  return master_instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* ChannelLink::release_master_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.ChannelLink.master_instance_name)
+  
+  return master_instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void ChannelLink::set_allocated_master_instance_name(::std::string* master_instance_name) {
+  if (master_instance_name != NULL) {
+    
+  } else {
+    
+  }
+  master_instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), master_instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.ChannelLink.master_instance_name)
+}
+
+// string slave_instance_name = 2;
+inline void ChannelLink::clear_slave_instance_name() {
+  slave_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& ChannelLink::slave_instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.slave_instance_name)
+  return slave_instance_name_.GetNoArena();
+}
+inline void ChannelLink::set_slave_instance_name(const ::std::string& value) {
+  
+  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.slave_instance_name)
+}
+#if LANG_CXX11
+inline void ChannelLink::set_slave_instance_name(::std::string&& value) {
+  
+  slave_instance_name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.ChannelLink.slave_instance_name)
+}
+#endif
+inline void ChannelLink::set_slave_instance_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.ChannelLink.slave_instance_name)
+}
+inline void ChannelLink::set_slave_instance_name(const char* value, size_t size) {
+  
+  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.ChannelLink.slave_instance_name)
+}
+inline ::std::string* ChannelLink::mutable_slave_instance_name() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.ChannelLink.slave_instance_name)
+  return slave_instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* ChannelLink::release_slave_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.ChannelLink.slave_instance_name)
+  
+  return slave_instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void ChannelLink::set_allocated_slave_instance_name(::std::string* slave_instance_name) {
+  if (slave_instance_name != NULL) {
+    
+  } else {
+    
+  }
+  slave_instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), slave_instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.ChannelLink.slave_instance_name)
 }
 
-// repeated uint32 real_vrs = 4;
-inline int Values::real_vrs_size() const {
-  return real_vrs_.size();
-}
-inline void Values::clear_real_vrs() {
-  real_vrs_.Clear();
+// uint32 master_vr = 3;
+inline void ChannelLink::clear_master_vr() {
+  master_vr_ = 0u;
 }
-inline ::google::protobuf::uint32 Values::real_vrs(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.real_vrs)
-  return real_vrs_.Get(index);
+inline ::google::protobuf::uint32 ChannelLink::master_vr() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.master_vr)
+  return master_vr_;
 }
-inline void Values::set_real_vrs(int index, ::google::protobuf::uint32 value) {
-  real_vrs_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.real_vrs)
+inline void ChannelLink::set_master_vr(::google::protobuf::uint32 value) {
+  
+  master_vr_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.master_vr)
 }
-inline void Values::add_real_vrs(::google::protobuf::uint32 value) {
-  real_vrs_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.real_vrs)
+
+// uint32 slave_vr = 4;
+inline void ChannelLink::clear_slave_vr() {
+  slave_vr_ = 0u;
 }
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-Values::real_vrs() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.real_vrs)
-  return real_vrs_;
+inline ::google::protobuf::uint32 ChannelLink::slave_vr() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.slave_vr)
+  return slave_vr_;
 }
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-Values::mutable_real_vrs() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.real_vrs)
-  return &real_vrs_;
+inline void ChannelLink::set_slave_vr(::google::protobuf::uint32 value) {
+  
+  slave_vr_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.slave_vr)
 }
 
-// repeated double real_values = 5;
-inline int Values::real_values_size() const {
-  return real_values_.size();
-}
-inline void Values::clear_real_values() {
-  real_values_.Clear();
+// double factor = 5;
+inline void ChannelLink::clear_factor() {
+  factor_ = 0;
 }
-inline double Values::real_values(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.real_values)
-  return real_values_.Get(index);
+inline double ChannelLink::factor() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.factor)
+  return factor_;
 }
-inline void Values::set_real_values(int index, double value) {
-  real_values_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.real_values)
+inline void ChannelLink::set_factor(double value) {
+  
+  factor_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.factor)
 }
-inline void Values::add_real_values(double value) {
-  real_values_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.real_values)
+
+// double offset = 6;
+inline void ChannelLink::clear_offset() {
+  offset_ = 0;
 }
-inline const ::google::protobuf::RepeatedField< double >&
-Values::real_values() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.real_values)
-  return real_values_;
+inline double ChannelLink::offset() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.offset)
+  return offset_;
 }
-inline ::google::protobuf::RepeatedField< double >*
-Values::mutable_real_values() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.real_values)
-  return &real_values_;
+inline void ChannelLink::set_offset(double value) {
+  
+  offset_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.offset)
 }
 
-// repeated uint32 bool_vrs = 6;
-inline int Values::bool_vrs_size() const {
-  return bool_vrs_.size();
-}
-inline void Values::clear_bool_vrs() {
-  bool_vrs_.Clear();
+// -------------------------------------------------------------------
+
+// PlayRequest
+
+// -------------------------------------------------------------------
+
+// PlayResponse
+
+// .ModeliRpc.Fmi2Status status = 1;
+inline void PlayResponse::clear_status() {
+  status_ = 0;
 }
-inline ::google::protobuf::uint32 Values::bool_vrs(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.bool_vrs)
-  return bool_vrs_.Get(index);
+inline ::ModeliRpc::Fmi2Status PlayResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.PlayResponse.status)
+  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline void Values::set_bool_vrs(int index, ::google::protobuf::uint32 value) {
-  bool_vrs_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.bool_vrs)
+inline void PlayResponse::set_status(::ModeliRpc::Fmi2Status value) {
+  
+  status_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.PlayResponse.status)
 }
-inline void Values::add_bool_vrs(::google::protobuf::uint32 value) {
-  bool_vrs_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.bool_vrs)
+
+// -------------------------------------------------------------------
+
+// PlayFastRequest
+
+// double time = 1;
+inline void PlayFastRequest::clear_time() {
+  time_ = 0;
 }
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-Values::bool_vrs() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.bool_vrs)
-  return bool_vrs_;
+inline double PlayFastRequest::time() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.PlayFastRequest.time)
+  return time_;
 }
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-Values::mutable_bool_vrs() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.bool_vrs)
-  return &bool_vrs_;
+inline void PlayFastRequest::set_time(double value) {
+  
+  time_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.PlayFastRequest.time)
 }
 
-// repeated int32 bool_values = 7;
-inline int Values::bool_values_size() const {
-  return bool_values_.size();
-}
-inline void Values::clear_bool_values() {
-  bool_values_.Clear();
+// -------------------------------------------------------------------
+
+// PlayFastResponse
+
+// .ModeliRpc.Fmi2Status status = 1;
+inline void PlayFastResponse::clear_status() {
+  status_ = 0;
 }
-inline ::google::protobuf::int32 Values::bool_values(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.bool_values)
-  return bool_values_.Get(index);
+inline ::ModeliRpc::Fmi2Status PlayFastResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.PlayFastResponse.status)
+  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline void Values::set_bool_values(int index, ::google::protobuf::int32 value) {
-  bool_values_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.bool_values)
+inline void PlayFastResponse::set_status(::ModeliRpc::Fmi2Status value) {
+  
+  status_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.PlayFastResponse.status)
 }
-inline void Values::add_bool_values(::google::protobuf::int32 value) {
-  bool_values_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.bool_values)
+
+// -------------------------------------------------------------------
+
+// PauseRequest
+
+// -------------------------------------------------------------------
+
+// PauseResponse
+
+// -------------------------------------------------------------------
+
+// StopRequest
+
+// -------------------------------------------------------------------
+
+// StopResponse
+
+// .ModeliRpc.Fmi2Status status = 1;
+inline void StopResponse::clear_status() {
+  status_ = 0;
 }
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
-Values::bool_values() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.bool_values)
-  return bool_values_;
+inline ::ModeliRpc::Fmi2Status StopResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.StopResponse.status)
+  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
-Values::mutable_bool_values() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.bool_values)
-  return &bool_values_;
+inline void StopResponse::set_status(::ModeliRpc::Fmi2Status value) {
+  
+  status_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.StopResponse.status)
 }
 
-// repeated uint32 string_vrs = 8;
-inline int Values::string_vrs_size() const {
-  return string_vrs_.size();
+// -------------------------------------------------------------------
+
+// AddFmuRequest
+
+// string instance_name = 1;
+inline void AddFmuRequest::clear_instance_name() {
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Values::clear_string_vrs() {
-  string_vrs_.Clear();
+inline const ::std::string& AddFmuRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuRequest.instance_name)
+  return instance_name_.GetNoArena();
 }
-inline ::google::protobuf::uint32 Values::string_vrs(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.string_vrs)
-  return string_vrs_.Get(index);
+inline void AddFmuRequest::set_instance_name(const ::std::string& value) {
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuRequest.instance_name)
 }
-inline void Values::set_string_vrs(int index, ::google::protobuf::uint32 value) {
-  string_vrs_.Set(index, value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.string_vrs)
+#if LANG_CXX11
+inline void AddFmuRequest::set_instance_name(::std::string&& value) {
+  
+  instance_name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.AddFmuRequest.instance_name)
 }
-inline void Values::add_string_vrs(::google::protobuf::uint32 value) {
-  string_vrs_.Add(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.string_vrs)
+#endif
+inline void AddFmuRequest::set_instance_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.AddFmuRequest.instance_name)
 }
-inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
-Values::string_vrs() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.string_vrs)
-  return string_vrs_;
+inline void AddFmuRequest::set_instance_name(const char* value, size_t size) {
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.AddFmuRequest.instance_name)
 }
-inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
-Values::mutable_string_vrs() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.string_vrs)
-  return &string_vrs_;
+inline ::std::string* AddFmuRequest::mutable_instance_name() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddFmuRequest.instance_name)
+  return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-
-// repeated string string_values = 9;
-inline int Values::string_values_size() const {
-  return string_values_.size();
+inline ::std::string* AddFmuRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.AddFmuRequest.instance_name)
+  
+  return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void Values::clear_string_values() {
-  string_values_.Clear();
+inline void AddFmuRequest::set_allocated_instance_name(::std::string* instance_name) {
+  if (instance_name != NULL) {
+    
+  } else {
+    
+  }
+  instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddFmuRequest.instance_name)
 }
-inline const ::std::string& Values::string_values(int index) const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.Values.string_values)
-  return string_values_.Get(index);
+
+// bytes data = 2;
+inline void AddFmuRequest::clear_data() {
+  data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* Values::mutable_string_values(int index) {
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.Values.string_values)
-  return string_values_.Mutable(index);
+inline const ::std::string& AddFmuRequest::data() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuRequest.data)
+  return data_.GetNoArena();
 }
-inline void Values::set_string_values(int index, const ::std::string& value) {
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.string_values)
-  string_values_.Mutable(index)->assign(value);
+inline void AddFmuRequest::set_data(const ::std::string& value) {
+  
+  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuRequest.data)
 }
 #if LANG_CXX11
-inline void Values::set_string_values(int index, ::std::string&& value) {
-  // @@protoc_insertion_point(field_set:ModeliRpc.Values.string_values)
-  string_values_.Mutable(index)->assign(std::move(value));
+inline void AddFmuRequest::set_data(::std::string&& value) {
+  
+  data_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.AddFmuRequest.data)
 }
 #endif
-inline void Values::set_string_values(int index, const char* value) {
+inline void AddFmuRequest::set_data(const char* value) {
   GOOGLE_DCHECK(value != NULL);
-  string_values_.Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.Values.string_values)
-}
-inline void Values::set_string_values(int index, const char* value, size_t size) {
-  string_values_.Mutable(index)->assign(
-    reinterpret_cast<const char*>(value), size);
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.Values.string_values)
+  
+  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.AddFmuRequest.data)
 }
-inline ::std::string* Values::add_string_values() {
-  // @@protoc_insertion_point(field_add_mutable:ModeliRpc.Values.string_values)
-  return string_values_.Add();
+inline void AddFmuRequest::set_data(const void* value, size_t size) {
+  
+  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.AddFmuRequest.data)
 }
-inline void Values::add_string_values(const ::std::string& value) {
-  string_values_.Add()->assign(value);
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.string_values)
+inline ::std::string* AddFmuRequest::mutable_data() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddFmuRequest.data)
+  return data_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-#if LANG_CXX11
-inline void Values::add_string_values(::std::string&& value) {
-  string_values_.Add(std::move(value));
-  // @@protoc_insertion_point(field_add:ModeliRpc.Values.string_values)
+inline ::std::string* AddFmuRequest::release_data() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.AddFmuRequest.data)
+  
+  return data_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-#endif
-inline void Values::add_string_values(const char* value) {
-  GOOGLE_DCHECK(value != NULL);
-  string_values_.Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:ModeliRpc.Values.string_values)
+inline void AddFmuRequest::set_allocated_data(::std::string* data) {
+  if (data != NULL) {
+    
+  } else {
+    
+  }
+  data_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), data);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddFmuRequest.data)
 }
-inline void Values::add_string_values(const char* value, size_t size) {
-  string_values_.Add()->assign(reinterpret_cast<const char*>(value), size);
-  // @@protoc_insertion_point(field_add_pointer:ModeliRpc.Values.string_values)
+
+// -------------------------------------------------------------------
+
+// AddFmuResponse
+
+// bool success = 1;
+inline void AddFmuResponse::clear_success() {
+  success_ = false;
 }
-inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
-Values::string_values() const {
-  // @@protoc_insertion_point(field_list:ModeliRpc.Values.string_values)
-  return string_values_;
+inline bool AddFmuResponse::success() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuResponse.success)
+  return success_;
 }
-inline ::google::protobuf::RepeatedPtrField< ::std::string>*
-Values::mutable_string_values() {
-  // @@protoc_insertion_point(field_mutable_list:ModeliRpc.Values.string_values)
-  return &string_values_;
+inline void AddFmuResponse::set_success(bool value) {
+  
+  success_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuResponse.success)
 }
 
 // -------------------------------------------------------------------
 
-// ChannelLink
+// RemoveFmuRequest
 
-// string master_instance_name = 1;
-inline void ChannelLink::clear_master_instance_name() {
-  master_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+// string instance_name = 1;
+inline void RemoveFmuRequest::clear_instance_name() {
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& ChannelLink::master_instance_name() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.master_instance_name)
-  return master_instance_name_.GetNoArena();
+inline const ::std::string& RemoveFmuRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveFmuRequest.instance_name)
+  return instance_name_.GetNoArena();
 }
-inline void ChannelLink::set_master_instance_name(const ::std::string& value) {
+inline void RemoveFmuRequest::set_instance_name(const ::std::string& value) {
   
-  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.master_instance_name)
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveFmuRequest.instance_name)
 }
 #if LANG_CXX11
-inline void ChannelLink::set_master_instance_name(::std::string&& value) {
+inline void RemoveFmuRequest::set_instance_name(::std::string&& value) {
   
-  master_instance_name_.SetNoArena(
+  instance_name_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.ChannelLink.master_instance_name)
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.RemoveFmuRequest.instance_name)
 }
 #endif
-inline void ChannelLink::set_master_instance_name(const char* value) {
+inline void RemoveFmuRequest::set_instance_name(const char* value) {
   GOOGLE_DCHECK(value != NULL);
   
-  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.ChannelLink.master_instance_name)
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.RemoveFmuRequest.instance_name)
 }
-inline void ChannelLink::set_master_instance_name(const char* value, size_t size) {
+inline void RemoveFmuRequest::set_instance_name(const char* value, size_t size) {
   
-  master_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.ChannelLink.master_instance_name)
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.RemoveFmuRequest.instance_name)
 }
-inline ::std::string* ChannelLink::mutable_master_instance_name() {
+inline ::std::string* RemoveFmuRequest::mutable_instance_name() {
   
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.ChannelLink.master_instance_name)
-  return master_instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.RemoveFmuRequest.instance_name)
+  return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* ChannelLink::release_master_instance_name() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.ChannelLink.master_instance_name)
+inline ::std::string* RemoveFmuRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.RemoveFmuRequest.instance_name)
   
-  return master_instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void ChannelLink::set_allocated_master_instance_name(::std::string* master_instance_name) {
-  if (master_instance_name != NULL) {
+inline void RemoveFmuRequest::set_allocated_instance_name(::std::string* instance_name) {
+  if (instance_name != NULL) {
     
   } else {
     
   }
-  master_instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), master_instance_name);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.ChannelLink.master_instance_name)
+  instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.RemoveFmuRequest.instance_name)
 }
 
-// string slave_instance_name = 2;
-inline void ChannelLink::clear_slave_instance_name() {
-  slave_instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+// -------------------------------------------------------------------
+
+// RemoveFmuResponse
+
+// bool success = 1;
+inline void RemoveFmuResponse::clear_success() {
+  success_ = false;
 }
-inline const ::std::string& ChannelLink::slave_instance_name() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.slave_instance_name)
-  return slave_instance_name_.GetNoArena();
+inline bool RemoveFmuResponse::success() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveFmuResponse.success)
+  return success_;
 }
-inline void ChannelLink::set_slave_instance_name(const ::std::string& value) {
+inline void RemoveFmuResponse::set_success(bool value) {
   
-  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.slave_instance_name)
+  success_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveFmuResponse.success)
 }
-#if LANG_CXX11
-inline void ChannelLink::set_slave_instance_name(::std::string&& value) {
+
+// -------------------------------------------------------------------
+
+// AddChannelLinkRequest
+
+// .ModeliRpc.ChannelLink channel_link = 1;
+inline bool AddChannelLinkRequest::has_channel_link() const {
+  return this != internal_default_instance() && channel_link_ != NULL;
+}
+inline void AddChannelLinkRequest::clear_channel_link() {
+  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
+    delete channel_link_;
+  }
+  channel_link_ = NULL;
+}
+inline const ::ModeliRpc::ChannelLink& AddChannelLinkRequest::channel_link() const {
+  const ::ModeliRpc::ChannelLink* p = channel_link_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.AddChannelLinkRequest.channel_link)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::ChannelLink*>(
+      &::ModeliRpc::_ChannelLink_default_instance_);
+}
+inline ::ModeliRpc::ChannelLink* AddChannelLinkRequest::release_channel_link() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.AddChannelLinkRequest.channel_link)
   
-  slave_instance_name_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.ChannelLink.slave_instance_name)
+  ::ModeliRpc::ChannelLink* temp = channel_link_;
+  channel_link_ = NULL;
+  return temp;
 }
-#endif
-inline void ChannelLink::set_slave_instance_name(const char* value) {
-  GOOGLE_DCHECK(value != NULL);
+inline ::ModeliRpc::ChannelLink* AddChannelLinkRequest::mutable_channel_link() {
   
-  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.ChannelLink.slave_instance_name)
+  if (channel_link_ == NULL) {
+    channel_link_ = new ::ModeliRpc::ChannelLink;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddChannelLinkRequest.channel_link)
+  return channel_link_;
 }
-inline void ChannelLink::set_slave_instance_name(const char* value, size_t size) {
+inline void AddChannelLinkRequest::set_allocated_channel_link(::ModeliRpc::ChannelLink* channel_link) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete channel_link_;
+  }
+  if (channel_link) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      channel_link = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, channel_link, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  channel_link_ = channel_link;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddChannelLinkRequest.channel_link)
+}
+
+// -------------------------------------------------------------------
+
+// AddChannelLinkResponse
+
+// bool success = 1;
+inline void AddChannelLinkResponse::clear_success() {
+  success_ = false;
+}
+inline bool AddChannelLinkResponse::success() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.AddChannelLinkResponse.success)
+  return success_;
+}
+inline void AddChannelLinkResponse::set_success(bool value) {
   
-  slave_instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.ChannelLink.slave_instance_name)
+  success_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.AddChannelLinkResponse.success)
 }
-inline ::std::string* ChannelLink::mutable_slave_instance_name() {
+
+// -------------------------------------------------------------------
+
+// RemoveChannelLinkRequest
+
+// .ModeliRpc.ChannelLink channel_link = 1;
+inline bool RemoveChannelLinkRequest::has_channel_link() const {
+  return this != internal_default_instance() && channel_link_ != NULL;
+}
+inline void RemoveChannelLinkRequest::clear_channel_link() {
+  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
+    delete channel_link_;
+  }
+  channel_link_ = NULL;
+}
+inline const ::ModeliRpc::ChannelLink& RemoveChannelLinkRequest::channel_link() const {
+  const ::ModeliRpc::ChannelLink* p = channel_link_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveChannelLinkRequest.channel_link)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::ChannelLink*>(
+      &::ModeliRpc::_ChannelLink_default_instance_);
+}
+inline ::ModeliRpc::ChannelLink* RemoveChannelLinkRequest::release_channel_link() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.RemoveChannelLinkRequest.channel_link)
   
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.ChannelLink.slave_instance_name)
-  return slave_instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::ModeliRpc::ChannelLink* temp = channel_link_;
+  channel_link_ = NULL;
+  return temp;
 }
-inline ::std::string* ChannelLink::release_slave_instance_name() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.ChannelLink.slave_instance_name)
+inline ::ModeliRpc::ChannelLink* RemoveChannelLinkRequest::mutable_channel_link() {
   
-  return slave_instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (channel_link_ == NULL) {
+    channel_link_ = new ::ModeliRpc::ChannelLink;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.RemoveChannelLinkRequest.channel_link)
+  return channel_link_;
 }
-inline void ChannelLink::set_allocated_slave_instance_name(::std::string* slave_instance_name) {
-  if (slave_instance_name != NULL) {
+inline void RemoveChannelLinkRequest::set_allocated_channel_link(::ModeliRpc::ChannelLink* channel_link) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete channel_link_;
+  }
+  if (channel_link) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      channel_link = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, channel_link, submessage_arena);
+    }
     
   } else {
     
   }
-  slave_instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), slave_instance_name);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.ChannelLink.slave_instance_name)
+  channel_link_ = channel_link;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.RemoveChannelLinkRequest.channel_link)
 }
 
-// uint32 master_vr = 3;
-inline void ChannelLink::clear_master_vr() {
-  master_vr_ = 0u;
+// -------------------------------------------------------------------
+
+// RemoveChannelLinkResponse
+
+// bool success = 1;
+inline void RemoveChannelLinkResponse::clear_success() {
+  success_ = false;
 }
-inline ::google::protobuf::uint32 ChannelLink::master_vr() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.master_vr)
-  return master_vr_;
+inline bool RemoveChannelLinkResponse::success() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveChannelLinkResponse.success)
+  return success_;
 }
-inline void ChannelLink::set_master_vr(::google::protobuf::uint32 value) {
+inline void RemoveChannelLinkResponse::set_success(bool value) {
   
-  master_vr_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.master_vr)
+  success_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveChannelLinkResponse.success)
 }
 
-// uint32 slave_vr = 4;
-inline void ChannelLink::clear_slave_vr() {
-  slave_vr_ = 0u;
+// -------------------------------------------------------------------
+
+// SetIntRequest
+
+// string instance_name = 1;
+inline void SetIntRequest::clear_instance_name() {
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::google::protobuf::uint32 ChannelLink::slave_vr() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.slave_vr)
-  return slave_vr_;
+inline const ::std::string& SetIntRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetIntRequest.instance_name)
+  return instance_name_.GetNoArena();
 }
-inline void ChannelLink::set_slave_vr(::google::protobuf::uint32 value) {
+inline void SetIntRequest::set_instance_name(const ::std::string& value) {
   
-  slave_vr_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.slave_vr)
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetIntRequest.instance_name)
 }
-
-// double factor = 5;
-inline void ChannelLink::clear_factor() {
-  factor_ = 0;
+#if LANG_CXX11
+inline void SetIntRequest::set_instance_name(::std::string&& value) {
+  
+  instance_name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.SetIntRequest.instance_name)
+}
+#endif
+inline void SetIntRequest::set_instance_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.SetIntRequest.instance_name)
+}
+inline void SetIntRequest::set_instance_name(const char* value, size_t size) {
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.SetIntRequest.instance_name)
 }
-inline double ChannelLink::factor() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.factor)
-  return factor_;
+inline ::std::string* SetIntRequest::mutable_instance_name() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetIntRequest.instance_name)
+  return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void ChannelLink::set_factor(double value) {
+inline ::std::string* SetIntRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetIntRequest.instance_name)
   
-  factor_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.factor)
+  return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void SetIntRequest::set_allocated_instance_name(::std::string* instance_name) {
+  if (instance_name != NULL) {
+    
+  } else {
+    
+  }
+  instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetIntRequest.instance_name)
 }
 
-// double offset = 6;
-inline void ChannelLink::clear_offset() {
-  offset_ = 0;
+// .ModeliRpc.IntValues values = 2;
+inline bool SetIntRequest::has_values() const {
+  return this != internal_default_instance() && values_ != NULL;
 }
-inline double ChannelLink::offset() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.ChannelLink.offset)
-  return offset_;
+inline void SetIntRequest::clear_values() {
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
+  }
+  values_ = NULL;
 }
-inline void ChannelLink::set_offset(double value) {
+inline const ::ModeliRpc::IntValues& SetIntRequest::values() const {
+  const ::ModeliRpc::IntValues* p = values_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetIntRequest.values)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::IntValues*>(
+      &::ModeliRpc::_IntValues_default_instance_);
+}
+inline ::ModeliRpc::IntValues* SetIntRequest::release_values() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetIntRequest.values)
   
-  offset_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.ChannelLink.offset)
+  ::ModeliRpc::IntValues* temp = values_;
+  values_ = NULL;
+  return temp;
+}
+inline ::ModeliRpc::IntValues* SetIntRequest::mutable_values() {
+  
+  if (values_ == NULL) {
+    values_ = new ::ModeliRpc::IntValues;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetIntRequest.values)
+  return values_;
+}
+inline void SetIntRequest::set_allocated_values(::ModeliRpc::IntValues* values) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete values_;
+  }
+  if (values) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  values_ = values;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetIntRequest.values)
 }
 
 // -------------------------------------------------------------------
 
-// PlayRequest
-
-// -------------------------------------------------------------------
-
-// PlayResponse
+// SetIntResponse
 
 // .ModeliRpc.Fmi2Status status = 1;
-inline void PlayResponse::clear_status() {
+inline void SetIntResponse::clear_status() {
   status_ = 0;
 }
-inline ::ModeliRpc::Fmi2Status PlayResponse::status() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.PlayResponse.status)
+inline ::ModeliRpc::Fmi2Status SetIntResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetIntResponse.status)
   return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline void PlayResponse::set_status(::ModeliRpc::Fmi2Status value) {
+inline void SetIntResponse::set_status(::ModeliRpc::Fmi2Status value) {
   
   status_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.PlayResponse.status)
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetIntResponse.status)
 }
 
 // -------------------------------------------------------------------
 
-// PlayFastRequest
+// SetRealRequest
 
-// double time = 1;
-inline void PlayFastRequest::clear_time() {
-  time_ = 0;
+// string instance_name = 1;
+inline void SetRealRequest::clear_instance_name() {
+  instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline double PlayFastRequest::time() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.PlayFastRequest.time)
-  return time_;
+inline const ::std::string& SetRealRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetRealRequest.instance_name)
+  return instance_name_.GetNoArena();
 }
-inline void PlayFastRequest::set_time(double value) {
+inline void SetRealRequest::set_instance_name(const ::std::string& value) {
   
-  time_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.PlayFastRequest.time)
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetRealRequest.instance_name)
 }
-
-// -------------------------------------------------------------------
-
-// PlayFastResponse
-
-// .ModeliRpc.Fmi2Status status = 1;
-inline void PlayFastResponse::clear_status() {
-  status_ = 0;
+#if LANG_CXX11
+inline void SetRealRequest::set_instance_name(::std::string&& value) {
+  
+  instance_name_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.SetRealRequest.instance_name)
 }
-inline ::ModeliRpc::Fmi2Status PlayFastResponse::status() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.PlayFastResponse.status)
-  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
+#endif
+inline void SetRealRequest::set_instance_name(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.SetRealRequest.instance_name)
 }
-inline void PlayFastResponse::set_status(::ModeliRpc::Fmi2Status value) {
+inline void SetRealRequest::set_instance_name(const char* value, size_t size) {
   
-  status_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.PlayFastResponse.status)
+  instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.SetRealRequest.instance_name)
+}
+inline ::std::string* SetRealRequest::mutable_instance_name() {
+  
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetRealRequest.instance_name)
+  return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* SetRealRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetRealRequest.instance_name)
+  
+  return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void SetRealRequest::set_allocated_instance_name(::std::string* instance_name) {
+  if (instance_name != NULL) {
+    
+  } else {
+    
+  }
+  instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetRealRequest.instance_name)
 }
 
-// -------------------------------------------------------------------
-
-// PauseRequest
-
-// -------------------------------------------------------------------
-
-// PauseResponse
-
-// -------------------------------------------------------------------
-
-// StopRequest
+// .ModeliRpc.RealValues values = 2;
+inline bool SetRealRequest::has_values() const {
+  return this != internal_default_instance() && values_ != NULL;
+}
+inline void SetRealRequest::clear_values() {
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
+  }
+  values_ = NULL;
+}
+inline const ::ModeliRpc::RealValues& SetRealRequest::values() const {
+  const ::ModeliRpc::RealValues* p = values_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetRealRequest.values)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::RealValues*>(
+      &::ModeliRpc::_RealValues_default_instance_);
+}
+inline ::ModeliRpc::RealValues* SetRealRequest::release_values() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetRealRequest.values)
+  
+  ::ModeliRpc::RealValues* temp = values_;
+  values_ = NULL;
+  return temp;
+}
+inline ::ModeliRpc::RealValues* SetRealRequest::mutable_values() {
+  
+  if (values_ == NULL) {
+    values_ = new ::ModeliRpc::RealValues;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetRealRequest.values)
+  return values_;
+}
+inline void SetRealRequest::set_allocated_values(::ModeliRpc::RealValues* values) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete values_;
+  }
+  if (values) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  values_ = values;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetRealRequest.values)
+}
 
 // -------------------------------------------------------------------
 
-// StopResponse
+// SetRealResponse
 
 // .ModeliRpc.Fmi2Status status = 1;
-inline void StopResponse::clear_status() {
+inline void SetRealResponse::clear_status() {
   status_ = 0;
 }
-inline ::ModeliRpc::Fmi2Status StopResponse::status() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.StopResponse.status)
+inline ::ModeliRpc::Fmi2Status SetRealResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetRealResponse.status)
   return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline void StopResponse::set_status(::ModeliRpc::Fmi2Status value) {
+inline void SetRealResponse::set_status(::ModeliRpc::Fmi2Status value) {
   
   status_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.StopResponse.status)
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetRealResponse.status)
 }
 
 // -------------------------------------------------------------------
 
-// AddFmuRequest
+// SetBoolRequest
 
 // string instance_name = 1;
-inline void AddFmuRequest::clear_instance_name() {
+inline void SetBoolRequest::clear_instance_name() {
   instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& AddFmuRequest::instance_name() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuRequest.instance_name)
+inline const ::std::string& SetBoolRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetBoolRequest.instance_name)
   return instance_name_.GetNoArena();
 }
-inline void AddFmuRequest::set_instance_name(const ::std::string& value) {
+inline void SetBoolRequest::set_instance_name(const ::std::string& value) {
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetBoolRequest.instance_name)
 }
 #if LANG_CXX11
-inline void AddFmuRequest::set_instance_name(::std::string&& value) {
+inline void SetBoolRequest::set_instance_name(::std::string&& value) {
   
   instance_name_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.SetBoolRequest.instance_name)
 }
 #endif
-inline void AddFmuRequest::set_instance_name(const char* value) {
+inline void SetBoolRequest::set_instance_name(const char* value) {
   GOOGLE_DCHECK(value != NULL);
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.SetBoolRequest.instance_name)
 }
-inline void AddFmuRequest::set_instance_name(const char* value, size_t size) {
+inline void SetBoolRequest::set_instance_name(const char* value, size_t size) {
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.SetBoolRequest.instance_name)
 }
-inline ::std::string* AddFmuRequest::mutable_instance_name() {
+inline ::std::string* SetBoolRequest::mutable_instance_name() {
   
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetBoolRequest.instance_name)
   return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* AddFmuRequest::release_instance_name() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.AddFmuRequest.instance_name)
+inline ::std::string* SetBoolRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetBoolRequest.instance_name)
   
   return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void AddFmuRequest::set_allocated_instance_name(::std::string* instance_name) {
+inline void SetBoolRequest::set_allocated_instance_name(::std::string* instance_name) {
   if (instance_name != NULL) {
     
   } else {
     
   }
   instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetBoolRequest.instance_name)
 }
 
-// bytes data = 2;
-inline void AddFmuRequest::clear_data() {
-  data_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-}
-inline const ::std::string& AddFmuRequest::data() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuRequest.data)
-  return data_.GetNoArena();
-}
-inline void AddFmuRequest::set_data(const ::std::string& value) {
-  
-  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuRequest.data)
-}
-#if LANG_CXX11
-inline void AddFmuRequest::set_data(::std::string&& value) {
-  
-  data_.SetNoArena(
-    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.AddFmuRequest.data)
+// .ModeliRpc.BoolValues values = 2;
+inline bool SetBoolRequest::has_values() const {
+  return this != internal_default_instance() && values_ != NULL;
 }
-#endif
-inline void AddFmuRequest::set_data(const char* value) {
-  GOOGLE_DCHECK(value != NULL);
-  
-  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.AddFmuRequest.data)
+inline void SetBoolRequest::clear_values() {
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
+  }
+  values_ = NULL;
 }
-inline void AddFmuRequest::set_data(const void* value, size_t size) {
-  
-  data_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
-      ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.AddFmuRequest.data)
+inline const ::ModeliRpc::BoolValues& SetBoolRequest::values() const {
+  const ::ModeliRpc::BoolValues* p = values_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetBoolRequest.values)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::BoolValues*>(
+      &::ModeliRpc::_BoolValues_default_instance_);
 }
-inline ::std::string* AddFmuRequest::mutable_data() {
+inline ::ModeliRpc::BoolValues* SetBoolRequest::release_values() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetBoolRequest.values)
   
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddFmuRequest.data)
-  return data_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::ModeliRpc::BoolValues* temp = values_;
+  values_ = NULL;
+  return temp;
 }
-inline ::std::string* AddFmuRequest::release_data() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.AddFmuRequest.data)
+inline ::ModeliRpc::BoolValues* SetBoolRequest::mutable_values() {
   
-  return data_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (values_ == NULL) {
+    values_ = new ::ModeliRpc::BoolValues;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetBoolRequest.values)
+  return values_;
 }
-inline void AddFmuRequest::set_allocated_data(::std::string* data) {
-  if (data != NULL) {
+inline void SetBoolRequest::set_allocated_values(::ModeliRpc::BoolValues* values) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete values_;
+  }
+  if (values) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values, submessage_arena);
+    }
     
   } else {
     
   }
-  data_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), data);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddFmuRequest.data)
+  values_ = values;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetBoolRequest.values)
 }
 
 // -------------------------------------------------------------------
 
-// AddFmuResponse
+// SetBoolResponse
 
-// bool success = 1;
-inline void AddFmuResponse::clear_success() {
-  success_ = false;
-}
-inline bool AddFmuResponse::success() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.AddFmuResponse.success)
-  return success_;
+// .ModeliRpc.Fmi2Status status = 1;
+inline void SetBoolResponse::clear_status() {
+  status_ = 0;
 }
-inline void AddFmuResponse::set_success(bool value) {
+inline ::ModeliRpc::Fmi2Status SetBoolResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetBoolResponse.status)
+  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
+}
+inline void SetBoolResponse::set_status(::ModeliRpc::Fmi2Status value) {
   
-  success_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.AddFmuResponse.success)
+  status_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetBoolResponse.status)
 }
 
 // -------------------------------------------------------------------
 
-// RemoveFmuRequest
+// SetStringRequest
 
 // string instance_name = 1;
-inline void RemoveFmuRequest::clear_instance_name() {
+inline void SetStringRequest::clear_instance_name() {
   instance_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline const ::std::string& RemoveFmuRequest::instance_name() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveFmuRequest.instance_name)
+inline const ::std::string& SetStringRequest::instance_name() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetStringRequest.instance_name)
   return instance_name_.GetNoArena();
 }
-inline void RemoveFmuRequest::set_instance_name(const ::std::string& value) {
+inline void SetStringRequest::set_instance_name(const ::std::string& value) {
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
-  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetStringRequest.instance_name)
 }
 #if LANG_CXX11
-inline void RemoveFmuRequest::set_instance_name(::std::string&& value) {
+inline void SetStringRequest::set_instance_name(::std::string&& value) {
   
   instance_name_.SetNoArena(
     &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
-  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.RemoveFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_rvalue:ModeliRpc.SetStringRequest.instance_name)
 }
 #endif
-inline void RemoveFmuRequest::set_instance_name(const char* value) {
+inline void SetStringRequest::set_instance_name(const char* value) {
   GOOGLE_DCHECK(value != NULL);
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
-  // @@protoc_insertion_point(field_set_char:ModeliRpc.RemoveFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_char:ModeliRpc.SetStringRequest.instance_name)
 }
-inline void RemoveFmuRequest::set_instance_name(const char* value, size_t size) {
+inline void SetStringRequest::set_instance_name(const char* value, size_t size) {
   
   instance_name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
       ::std::string(reinterpret_cast<const char*>(value), size));
-  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.RemoveFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_set_pointer:ModeliRpc.SetStringRequest.instance_name)
 }
-inline ::std::string* RemoveFmuRequest::mutable_instance_name() {
+inline ::std::string* SetStringRequest::mutable_instance_name() {
   
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.RemoveFmuRequest.instance_name)
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetStringRequest.instance_name)
   return instance_name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline ::std::string* RemoveFmuRequest::release_instance_name() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.RemoveFmuRequest.instance_name)
+inline ::std::string* SetStringRequest::release_instance_name() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetStringRequest.instance_name)
   
   return instance_name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
 }
-inline void RemoveFmuRequest::set_allocated_instance_name(::std::string* instance_name) {
+inline void SetStringRequest::set_allocated_instance_name(::std::string* instance_name) {
   if (instance_name != NULL) {
     
   } else {
     
   }
   instance_name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), instance_name);
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.RemoveFmuRequest.instance_name)
-}
-
-// -------------------------------------------------------------------
-
-// RemoveFmuResponse
-
-// bool success = 1;
-inline void RemoveFmuResponse::clear_success() {
-  success_ = false;
-}
-inline bool RemoveFmuResponse::success() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveFmuResponse.success)
-  return success_;
-}
-inline void RemoveFmuResponse::set_success(bool value) {
-  
-  success_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveFmuResponse.success)
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetStringRequest.instance_name)
 }
 
-// -------------------------------------------------------------------
-
-// AddChannelLinkRequest
-
-// .ModeliRpc.ChannelLink channel_link = 1;
-inline bool AddChannelLinkRequest::has_channel_link() const {
-  return this != internal_default_instance() && channel_link_ != NULL;
+// .ModeliRpc.StringValues values = 2;
+inline bool SetStringRequest::has_values() const {
+  return this != internal_default_instance() && values_ != NULL;
 }
-inline void AddChannelLinkRequest::clear_channel_link() {
-  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
-    delete channel_link_;
+inline void SetStringRequest::clear_values() {
+  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
+    delete values_;
   }
-  channel_link_ = NULL;
+  values_ = NULL;
 }
-inline const ::ModeliRpc::ChannelLink& AddChannelLinkRequest::channel_link() const {
-  const ::ModeliRpc::ChannelLink* p = channel_link_;
-  // @@protoc_insertion_point(field_get:ModeliRpc.AddChannelLinkRequest.channel_link)
-  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::ChannelLink*>(
-      &::ModeliRpc::_ChannelLink_default_instance_);
+inline const ::ModeliRpc::StringValues& SetStringRequest::values() const {
+  const ::ModeliRpc::StringValues* p = values_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetStringRequest.values)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::StringValues*>(
+      &::ModeliRpc::_StringValues_default_instance_);
 }
-inline ::ModeliRpc::ChannelLink* AddChannelLinkRequest::release_channel_link() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.AddChannelLinkRequest.channel_link)
+inline ::ModeliRpc::StringValues* SetStringRequest::release_values() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.SetStringRequest.values)
   
-  ::ModeliRpc::ChannelLink* temp = channel_link_;
-  channel_link_ = NULL;
+  ::ModeliRpc::StringValues* temp = values_;
+  values_ = NULL;
   return temp;
 }
-inline ::ModeliRpc::ChannelLink* AddChannelLinkRequest::mutable_channel_link() {
+inline ::ModeliRpc::StringValues* SetStringRequest::mutable_values() {
   
-  if (channel_link_ == NULL) {
-    channel_link_ = new ::ModeliRpc::ChannelLink;
+  if (values_ == NULL) {
+    values_ = new ::ModeliRpc::StringValues;
   }
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.AddChannelLinkRequest.channel_link)
-  return channel_link_;
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetStringRequest.values)
+  return values_;
 }
-inline void AddChannelLinkRequest::set_allocated_channel_link(::ModeliRpc::ChannelLink* channel_link) {
+inline void SetStringRequest::set_allocated_values(::ModeliRpc::StringValues* values) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete channel_link_;
+    delete values_;
   }
-  if (channel_link) {
+  if (values) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      channel_link = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, channel_link, submessage_arena);
+      values = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, values, submessage_arena);
     }
     
   } else {
     
   }
-  channel_link_ = channel_link;
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.AddChannelLinkRequest.channel_link)
+  values_ = values;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetStringRequest.values)
 }
 
 // -------------------------------------------------------------------
 
-// AddChannelLinkResponse
+// SetStringResponse
 
-// bool success = 1;
-inline void AddChannelLinkResponse::clear_success() {
-  success_ = false;
+// .ModeliRpc.Fmi2Status status = 1;
+inline void SetStringResponse::clear_status() {
+  status_ = 0;
 }
-inline bool AddChannelLinkResponse::success() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.AddChannelLinkResponse.success)
-  return success_;
+inline ::ModeliRpc::Fmi2Status SetStringResponse::status() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.SetStringResponse.status)
+  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
 }
-inline void AddChannelLinkResponse::set_success(bool value) {
+inline void SetStringResponse::set_status(::ModeliRpc::Fmi2Status value) {
   
-  success_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.AddChannelLinkResponse.success)
+  status_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.SetStringResponse.status)
 }
 
 // -------------------------------------------------------------------
 
-// RemoveChannelLinkRequest
+// NewValuesRequest
 
-// .ModeliRpc.ChannelLink channel_link = 1;
-inline bool RemoveChannelLinkRequest::has_channel_link() const {
-  return this != internal_default_instance() && channel_link_ != NULL;
+// -------------------------------------------------------------------
+
+// NewValuesResponse
+
+// double timestamp = 1;
+inline void NewValuesResponse::clear_timestamp() {
+  timestamp_ = 0;
 }
-inline void RemoveChannelLinkRequest::clear_channel_link() {
-  if (GetArenaNoVirtual() == NULL && channel_link_ != NULL) {
-    delete channel_link_;
+inline double NewValuesResponse::timestamp() const {
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.timestamp)
+  return timestamp_;
+}
+inline void NewValuesResponse::set_timestamp(double value) {
+  
+  timestamp_ = value;
+  // @@protoc_insertion_point(field_set:ModeliRpc.NewValuesResponse.timestamp)
+}
+
+// .ModeliRpc.IntValues intValues = 2;
+inline bool NewValuesResponse::has_intvalues() const {
+  return this != internal_default_instance() && intvalues_ != NULL;
+}
+inline void NewValuesResponse::clear_intvalues() {
+  if (GetArenaNoVirtual() == NULL && intvalues_ != NULL) {
+    delete intvalues_;
   }
-  channel_link_ = NULL;
+  intvalues_ = NULL;
 }
-inline const ::ModeliRpc::ChannelLink& RemoveChannelLinkRequest::channel_link() const {
-  const ::ModeliRpc::ChannelLink* p = channel_link_;
-  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveChannelLinkRequest.channel_link)
-  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::ChannelLink*>(
-      &::ModeliRpc::_ChannelLink_default_instance_);
+inline const ::ModeliRpc::IntValues& NewValuesResponse::intvalues() const {
+  const ::ModeliRpc::IntValues* p = intvalues_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.intValues)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::IntValues*>(
+      &::ModeliRpc::_IntValues_default_instance_);
 }
-inline ::ModeliRpc::ChannelLink* RemoveChannelLinkRequest::release_channel_link() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.RemoveChannelLinkRequest.channel_link)
+inline ::ModeliRpc::IntValues* NewValuesResponse::release_intvalues() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.NewValuesResponse.intValues)
   
-  ::ModeliRpc::ChannelLink* temp = channel_link_;
-  channel_link_ = NULL;
+  ::ModeliRpc::IntValues* temp = intvalues_;
+  intvalues_ = NULL;
   return temp;
 }
-inline ::ModeliRpc::ChannelLink* RemoveChannelLinkRequest::mutable_channel_link() {
+inline ::ModeliRpc::IntValues* NewValuesResponse::mutable_intvalues() {
   
-  if (channel_link_ == NULL) {
-    channel_link_ = new ::ModeliRpc::ChannelLink;
+  if (intvalues_ == NULL) {
+    intvalues_ = new ::ModeliRpc::IntValues;
   }
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.RemoveChannelLinkRequest.channel_link)
-  return channel_link_;
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.NewValuesResponse.intValues)
+  return intvalues_;
 }
-inline void RemoveChannelLinkRequest::set_allocated_channel_link(::ModeliRpc::ChannelLink* channel_link) {
+inline void NewValuesResponse::set_allocated_intvalues(::ModeliRpc::IntValues* intvalues) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete channel_link_;
+    delete intvalues_;
   }
-  if (channel_link) {
+  if (intvalues) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      channel_link = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, channel_link, submessage_arena);
+      intvalues = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, intvalues, submessage_arena);
     }
     
   } else {
     
   }
-  channel_link_ = channel_link;
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.RemoveChannelLinkRequest.channel_link)
-}
-
-// -------------------------------------------------------------------
-
-// RemoveChannelLinkResponse
-
-// bool success = 1;
-inline void RemoveChannelLinkResponse::clear_success() {
-  success_ = false;
-}
-inline bool RemoveChannelLinkResponse::success() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.RemoveChannelLinkResponse.success)
-  return success_;
-}
-inline void RemoveChannelLinkResponse::set_success(bool value) {
-  
-  success_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.RemoveChannelLinkResponse.success)
+  intvalues_ = intvalues;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.intValues)
 }
 
-// -------------------------------------------------------------------
-
-// SetValuesReqest
-
-// .ModeliRpc.Values values = 1;
-inline bool SetValuesReqest::has_values() const {
-  return this != internal_default_instance() && values_ != NULL;
+// .ModeliRpc.RealValues realValues = 3;
+inline bool NewValuesResponse::has_realvalues() const {
+  return this != internal_default_instance() && realvalues_ != NULL;
 }
-inline void SetValuesReqest::clear_values() {
-  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
-    delete values_;
+inline void NewValuesResponse::clear_realvalues() {
+  if (GetArenaNoVirtual() == NULL && realvalues_ != NULL) {
+    delete realvalues_;
   }
-  values_ = NULL;
+  realvalues_ = NULL;
 }
-inline const ::ModeliRpc::Values& SetValuesReqest::values() const {
-  const ::ModeliRpc::Values* p = values_;
-  // @@protoc_insertion_point(field_get:ModeliRpc.SetValuesReqest.values)
-  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::Values*>(
-      &::ModeliRpc::_Values_default_instance_);
+inline const ::ModeliRpc::RealValues& NewValuesResponse::realvalues() const {
+  const ::ModeliRpc::RealValues* p = realvalues_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.realValues)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::RealValues*>(
+      &::ModeliRpc::_RealValues_default_instance_);
 }
-inline ::ModeliRpc::Values* SetValuesReqest::release_values() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.SetValuesReqest.values)
+inline ::ModeliRpc::RealValues* NewValuesResponse::release_realvalues() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.NewValuesResponse.realValues)
   
-  ::ModeliRpc::Values* temp = values_;
-  values_ = NULL;
+  ::ModeliRpc::RealValues* temp = realvalues_;
+  realvalues_ = NULL;
   return temp;
 }
-inline ::ModeliRpc::Values* SetValuesReqest::mutable_values() {
+inline ::ModeliRpc::RealValues* NewValuesResponse::mutable_realvalues() {
   
-  if (values_ == NULL) {
-    values_ = new ::ModeliRpc::Values;
+  if (realvalues_ == NULL) {
+    realvalues_ = new ::ModeliRpc::RealValues;
   }
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.SetValuesReqest.values)
-  return values_;
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.NewValuesResponse.realValues)
+  return realvalues_;
 }
-inline void SetValuesReqest::set_allocated_values(::ModeliRpc::Values* values) {
+inline void NewValuesResponse::set_allocated_realvalues(::ModeliRpc::RealValues* realvalues) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete values_;
+    delete realvalues_;
   }
-  if (values) {
+  if (realvalues) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      values = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, values, submessage_arena);
+      realvalues = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, realvalues, submessage_arena);
     }
     
   } else {
     
   }
-  values_ = values;
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.SetValuesReqest.values)
-}
-
-// -------------------------------------------------------------------
-
-// SetValuesResponse
-
-// .ModeliRpc.Fmi2Status status = 1;
-inline void SetValuesResponse::clear_status() {
-  status_ = 0;
-}
-inline ::ModeliRpc::Fmi2Status SetValuesResponse::status() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.SetValuesResponse.status)
-  return static_cast< ::ModeliRpc::Fmi2Status >(status_);
-}
-inline void SetValuesResponse::set_status(::ModeliRpc::Fmi2Status value) {
-  
-  status_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.SetValuesResponse.status)
+  realvalues_ = realvalues;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.realValues)
 }
 
-// -------------------------------------------------------------------
-
-// NewValuesRequest
-
-// -------------------------------------------------------------------
-
-// NewValuesResponse
-
-// .ModeliRpc.Values values = 1;
-inline bool NewValuesResponse::has_values() const {
-  return this != internal_default_instance() && values_ != NULL;
+// .ModeliRpc.BoolValues boolValues = 4;
+inline bool NewValuesResponse::has_boolvalues() const {
+  return this != internal_default_instance() && boolvalues_ != NULL;
 }
-inline void NewValuesResponse::clear_values() {
-  if (GetArenaNoVirtual() == NULL && values_ != NULL) {
-    delete values_;
+inline void NewValuesResponse::clear_boolvalues() {
+  if (GetArenaNoVirtual() == NULL && boolvalues_ != NULL) {
+    delete boolvalues_;
   }
-  values_ = NULL;
+  boolvalues_ = NULL;
 }
-inline const ::ModeliRpc::Values& NewValuesResponse::values() const {
-  const ::ModeliRpc::Values* p = values_;
-  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.values)
-  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::Values*>(
-      &::ModeliRpc::_Values_default_instance_);
+inline const ::ModeliRpc::BoolValues& NewValuesResponse::boolvalues() const {
+  const ::ModeliRpc::BoolValues* p = boolvalues_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.boolValues)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::BoolValues*>(
+      &::ModeliRpc::_BoolValues_default_instance_);
 }
-inline ::ModeliRpc::Values* NewValuesResponse::release_values() {
-  // @@protoc_insertion_point(field_release:ModeliRpc.NewValuesResponse.values)
+inline ::ModeliRpc::BoolValues* NewValuesResponse::release_boolvalues() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.NewValuesResponse.boolValues)
   
-  ::ModeliRpc::Values* temp = values_;
-  values_ = NULL;
+  ::ModeliRpc::BoolValues* temp = boolvalues_;
+  boolvalues_ = NULL;
   return temp;
 }
-inline ::ModeliRpc::Values* NewValuesResponse::mutable_values() {
+inline ::ModeliRpc::BoolValues* NewValuesResponse::mutable_boolvalues() {
   
-  if (values_ == NULL) {
-    values_ = new ::ModeliRpc::Values;
+  if (boolvalues_ == NULL) {
+    boolvalues_ = new ::ModeliRpc::BoolValues;
   }
-  // @@protoc_insertion_point(field_mutable:ModeliRpc.NewValuesResponse.values)
-  return values_;
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.NewValuesResponse.boolValues)
+  return boolvalues_;
 }
-inline void NewValuesResponse::set_allocated_values(::ModeliRpc::Values* values) {
+inline void NewValuesResponse::set_allocated_boolvalues(::ModeliRpc::BoolValues* boolvalues) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
-    delete values_;
+    delete boolvalues_;
   }
-  if (values) {
+  if (boolvalues) {
     ::google::protobuf::Arena* submessage_arena = NULL;
     if (message_arena != submessage_arena) {
-      values = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, values, submessage_arena);
+      boolvalues = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, boolvalues, submessage_arena);
     }
     
   } else {
     
   }
-  values_ = values;
-  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.values)
+  boolvalues_ = boolvalues;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.boolValues)
 }
 
-// double timestamp = 2;
-inline void NewValuesResponse::clear_timestamp() {
-  timestamp_ = 0;
+// .ModeliRpc.StringValues stringValues = 5;
+inline bool NewValuesResponse::has_stringvalues() const {
+  return this != internal_default_instance() && stringvalues_ != NULL;
 }
-inline double NewValuesResponse::timestamp() const {
-  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.timestamp)
-  return timestamp_;
+inline void NewValuesResponse::clear_stringvalues() {
+  if (GetArenaNoVirtual() == NULL && stringvalues_ != NULL) {
+    delete stringvalues_;
+  }
+  stringvalues_ = NULL;
 }
-inline void NewValuesResponse::set_timestamp(double value) {
+inline const ::ModeliRpc::StringValues& NewValuesResponse::stringvalues() const {
+  const ::ModeliRpc::StringValues* p = stringvalues_;
+  // @@protoc_insertion_point(field_get:ModeliRpc.NewValuesResponse.stringValues)
+  return p != NULL ? *p : *reinterpret_cast<const ::ModeliRpc::StringValues*>(
+      &::ModeliRpc::_StringValues_default_instance_);
+}
+inline ::ModeliRpc::StringValues* NewValuesResponse::release_stringvalues() {
+  // @@protoc_insertion_point(field_release:ModeliRpc.NewValuesResponse.stringValues)
   
-  timestamp_ = value;
-  // @@protoc_insertion_point(field_set:ModeliRpc.NewValuesResponse.timestamp)
+  ::ModeliRpc::StringValues* temp = stringvalues_;
+  stringvalues_ = NULL;
+  return temp;
+}
+inline ::ModeliRpc::StringValues* NewValuesResponse::mutable_stringvalues() {
+  
+  if (stringvalues_ == NULL) {
+    stringvalues_ = new ::ModeliRpc::StringValues;
+  }
+  // @@protoc_insertion_point(field_mutable:ModeliRpc.NewValuesResponse.stringValues)
+  return stringvalues_;
+}
+inline void NewValuesResponse::set_allocated_stringvalues(::ModeliRpc::StringValues* stringvalues) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete stringvalues_;
+  }
+  if (stringvalues) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      stringvalues = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, stringvalues, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  stringvalues_ = stringvalues;
+  // @@protoc_insertion_point(field_set_allocated:ModeliRpc.NewValuesResponse.stringValues)
 }
 
 // -------------------------------------------------------------------
@@ -4078,6 +5623,24 @@ inline void LogResponse::set_allocated_message(::std::string* message) {
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
diff --git a/ModeliRpc_Cs/ModeliRpc.cs b/ModeliRpc_Cs/ModeliRpc.cs
index 4b8c9ea29555abecf2d597fde829b365e23a7723..2c87dff104a853beb6eb421a4d39ed893dae33d6 100644
--- a/ModeliRpc_Cs/ModeliRpc.cs
+++ b/ModeliRpc_Cs/ModeliRpc.cs
@@ -22,61 +22,81 @@ namespace ModeliRpc {
     static ModeliRpcReflection() {
       byte[] descriptorData = global::System.Convert.FromBase64String(
           string.Concat(
-            "Cg9Nb2RlbGlScGMucHJvdG8SCU1vZGVsaVJwYyK9AQoGVmFsdWVzEhUKDWlu",
-            "c3RhbmNlX25hbWUYASABKAkSDwoHaW50X3ZycxgCIAMoDRISCgppbnRfdmFs",
-            "dWVzGAMgAygFEhAKCHJlYWxfdnJzGAQgAygNEhMKC3JlYWxfdmFsdWVzGAUg",
-            "AygBEhAKCGJvb2xfdnJzGAYgAygNEhMKC2Jvb2xfdmFsdWVzGAcgAygFEhIK",
-            "CnN0cmluZ192cnMYCCADKA0SFQoNc3RyaW5nX3ZhbHVlcxgJIAMoCSKNAQoL",
-            "Q2hhbm5lbExpbmsSHAoUbWFzdGVyX2luc3RhbmNlX25hbWUYASABKAkSGwoT",
-            "c2xhdmVfaW5zdGFuY2VfbmFtZRgCIAEoCRIRCgltYXN0ZXJfdnIYAyABKA0S",
-            "EAoIc2xhdmVfdnIYBCABKA0SDgoGZmFjdG9yGAUgASgBEg4KBm9mZnNldBgG",
-            "IAEoASINCgtQbGF5UmVxdWVzdCI1CgxQbGF5UmVzcG9uc2USJQoGc3RhdHVz",
-            "GAEgASgOMhUuTW9kZWxpUnBjLkZtaTJTdGF0dXMiHwoPUGxheUZhc3RSZXF1",
-            "ZXN0EgwKBHRpbWUYASABKAEiOQoQUGxheUZhc3RSZXNwb25zZRIlCgZzdGF0",
-            "dXMYASABKA4yFS5Nb2RlbGlScGMuRm1pMlN0YXR1cyIOCgxQYXVzZVJlcXVl",
-            "c3QiDwoNUGF1c2VSZXNwb25zZSINCgtTdG9wUmVxdWVzdCI1CgxTdG9wUmVz",
-            "cG9uc2USJQoGc3RhdHVzGAEgASgOMhUuTW9kZWxpUnBjLkZtaTJTdGF0dXMi",
-            "NAoNQWRkRm11UmVxdWVzdBIVCg1pbnN0YW5jZV9uYW1lGAEgASgJEgwKBGRh",
-            "dGEYAiABKAwiIQoOQWRkRm11UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIp",
-            "ChBSZW1vdmVGbXVSZXF1ZXN0EhUKDWluc3RhbmNlX25hbWUYASABKAkiJAoR",
-            "UmVtb3ZlRm11UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJFChVBZGRDaGFu",
-            "bmVsTGlua1JlcXVlc3QSLAoMY2hhbm5lbF9saW5rGAEgASgLMhYuTW9kZWxp",
-            "UnBjLkNoYW5uZWxMaW5rIikKFkFkZENoYW5uZWxMaW5rUmVzcG9uc2USDwoH",
-            "c3VjY2VzcxgBIAEoCCJIChhSZW1vdmVDaGFubmVsTGlua1JlcXVlc3QSLAoM",
-            "Y2hhbm5lbF9saW5rGAEgASgLMhYuTW9kZWxpUnBjLkNoYW5uZWxMaW5rIiwK",
-            "GVJlbW92ZUNoYW5uZWxMaW5rUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI0",
-            "Cg9TZXRWYWx1ZXNSZXFlc3QSIQoGdmFsdWVzGAEgASgLMhEuTW9kZWxpUnBj",
-            "LlZhbHVlcyI6ChFTZXRWYWx1ZXNSZXNwb25zZRIlCgZzdGF0dXMYASABKA4y",
-            "FS5Nb2RlbGlScGMuRm1pMlN0YXR1cyISChBOZXdWYWx1ZXNSZXF1ZXN0IkkK",
-            "EU5ld1ZhbHVlc1Jlc3BvbnNlEiEKBnZhbHVlcxgBIAEoCzIRLk1vZGVsaVJw",
-            "Yy5WYWx1ZXMSEQoJdGltZXN0YW1wGAIgASgBIgwKCkxvZ1JlcXVlc3QiXAoL",
-            "TG9nUmVzcG9uc2USFQoNaW5zdGFuY2VfbmFtZRgBIAEoCRIlCgZzdGF0dXMY",
-            "AiABKA4yFS5Nb2RlbGlScGMuRm1pMlN0YXR1cxIPCgdtZXNzYWdlGAMgASgJ",
-            "Km8KCkZtaTJTdGF0dXMSCwoHRk1JMl9PSxAAEhAKDEZNSTJfV0FSTklORxAB",
-            "EhAKDEZNSTJfRElTQ0FSRBACEg4KCkZNSTJfRVJST1IQAxIOCgpGTUkyX0ZB",
-            "VEFMEAQSEAoMRk1JMl9QRU5ESU5HEAUyiwYKDU1vZGVsaUJhY2tlbmQSNwoE",
-            "UGxheRIWLk1vZGVsaVJwYy5QbGF5UmVxdWVzdBoXLk1vZGVsaVJwYy5QbGF5",
-            "UmVzcG9uc2USQwoIUGxheUZhc3QSGi5Nb2RlbGlScGMuUGxheUZhc3RSZXF1",
-            "ZXN0GhsuTW9kZWxpUnBjLlBsYXlGYXN0UmVzcG9uc2USOgoFUGF1c2USFy5N",
-            "b2RlbGlScGMuUGF1c2VSZXF1ZXN0GhguTW9kZWxpUnBjLlBhdXNlUmVzcG9u",
-            "c2USNwoEU3RvcBIWLk1vZGVsaVJwYy5TdG9wUmVxdWVzdBoXLk1vZGVsaVJw",
-            "Yy5TdG9wUmVzcG9uc2USPwoGQWRkRm11EhguTW9kZWxpUnBjLkFkZEZtdVJl",
-            "cXVlc3QaGS5Nb2RlbGlScGMuQWRkRm11UmVzcG9uc2UoARJGCglSZW1vdmVG",
-            "bXUSGy5Nb2RlbGlScGMuUmVtb3ZlRm11UmVxdWVzdBocLk1vZGVsaVJwYy5S",
-            "ZW1vdmVGbXVSZXNwb25zZRJVCg5BZGRDaGFubmVsTGluaxIgLk1vZGVsaVJw",
-            "Yy5BZGRDaGFubmVsTGlua1JlcXVlc3QaIS5Nb2RlbGlScGMuQWRkQ2hhbm5l",
-            "bExpbmtSZXNwb25zZRJeChFSZW1vdmVDaGFubmVsTGluaxIjLk1vZGVsaVJw",
-            "Yy5SZW1vdmVDaGFubmVsTGlua1JlcXVlc3QaJC5Nb2RlbGlScGMuUmVtb3Zl",
-            "Q2hhbm5lbExpbmtSZXNwb25zZRJFCglTZXRWYWx1ZXMSGi5Nb2RlbGlScGMu",
-            "U2V0VmFsdWVzUmVxZXN0GhwuTW9kZWxpUnBjLlNldFZhbHVlc1Jlc3BvbnNl",
-            "EkgKCU5ld1ZhbHVlcxIbLk1vZGVsaVJwYy5OZXdWYWx1ZXNSZXF1ZXN0Ghwu",
-            "TW9kZWxpUnBjLk5ld1ZhbHVlc1Jlc3BvbnNlMAESNgoDTG9nEhUuTW9kZWxp",
-            "UnBjLkxvZ1JlcXVlc3QaFi5Nb2RlbGlScGMuTG9nUmVzcG9uc2UwAWIGcHJv",
-            "dG8z"));
+            "Cg9Nb2RlbGlScGMucHJvdG8SCU1vZGVsaVJwYyIuCglJbnRWYWx1ZXMSEQoJ",
+            "dmFsdWVSZWZzGAEgAygNEg4KBnZhbHVlcxgCIAMoBSIvCgpSZWFsVmFsdWVz",
+            "EhEKCXZhbHVlUmVmcxgBIAMoDRIOCgZ2YWx1ZXMYAiADKAEiLwoKQm9vbFZh",
+            "bHVlcxIRCgl2YWx1ZVJlZnMYASADKA0SDgoGdmFsdWVzGAIgAygFIjEKDFN0",
+            "cmluZ1ZhbHVlcxIRCgl2YWx1ZVJlZnMYASADKA0SDgoGdmFsdWVzGAIgAygJ",
+            "Io0BCgtDaGFubmVsTGluaxIcChRtYXN0ZXJfaW5zdGFuY2VfbmFtZRgBIAEo",
+            "CRIbChNzbGF2ZV9pbnN0YW5jZV9uYW1lGAIgASgJEhEKCW1hc3Rlcl92chgD",
+            "IAEoDRIQCghzbGF2ZV92chgEIAEoDRIOCgZmYWN0b3IYBSABKAESDgoGb2Zm",
+            "c2V0GAYgASgBIg0KC1BsYXlSZXF1ZXN0IjUKDFBsYXlSZXNwb25zZRIlCgZz",
+            "dGF0dXMYASABKA4yFS5Nb2RlbGlScGMuRm1pMlN0YXR1cyIfCg9QbGF5RmFz",
+            "dFJlcXVlc3QSDAoEdGltZRgBIAEoASI5ChBQbGF5RmFzdFJlc3BvbnNlEiUK",
+            "BnN0YXR1cxgBIAEoDjIVLk1vZGVsaVJwYy5GbWkyU3RhdHVzIg4KDFBhdXNl",
+            "UmVxdWVzdCIPCg1QYXVzZVJlc3BvbnNlIg0KC1N0b3BSZXF1ZXN0IjUKDFN0",
+            "b3BSZXNwb25zZRIlCgZzdGF0dXMYASABKA4yFS5Nb2RlbGlScGMuRm1pMlN0",
+            "YXR1cyI0Cg1BZGRGbXVSZXF1ZXN0EhUKDWluc3RhbmNlX25hbWUYASABKAkS",
+            "DAoEZGF0YRgCIAEoDCIhCg5BZGRGbXVSZXNwb25zZRIPCgdzdWNjZXNzGAEg",
+            "ASgIIikKEFJlbW92ZUZtdVJlcXVlc3QSFQoNaW5zdGFuY2VfbmFtZRgBIAEo",
+            "CSIkChFSZW1vdmVGbXVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkUKFUFk",
+            "ZENoYW5uZWxMaW5rUmVxdWVzdBIsCgxjaGFubmVsX2xpbmsYASABKAsyFi5N",
+            "b2RlbGlScGMuQ2hhbm5lbExpbmsiKQoWQWRkQ2hhbm5lbExpbmtSZXNwb25z",
+            "ZRIPCgdzdWNjZXNzGAEgASgIIkgKGFJlbW92ZUNoYW5uZWxMaW5rUmVxdWVz",
+            "dBIsCgxjaGFubmVsX2xpbmsYASABKAsyFi5Nb2RlbGlScGMuQ2hhbm5lbExp",
+            "bmsiLAoZUmVtb3ZlQ2hhbm5lbExpbmtSZXNwb25zZRIPCgdzdWNjZXNzGAEg",
+            "ASgIIkwKDVNldEludFJlcXVlc3QSFQoNaW5zdGFuY2VfbmFtZRgBIAEoCRIk",
+            "CgZ2YWx1ZXMYAiABKAsyFC5Nb2RlbGlScGMuSW50VmFsdWVzIjcKDlNldElu",
+            "dFJlc3BvbnNlEiUKBnN0YXR1cxgBIAEoDjIVLk1vZGVsaVJwYy5GbWkyU3Rh",
+            "dHVzIk4KDlNldFJlYWxSZXF1ZXN0EhUKDWluc3RhbmNlX25hbWUYASABKAkS",
+            "JQoGdmFsdWVzGAIgASgLMhUuTW9kZWxpUnBjLlJlYWxWYWx1ZXMiOAoPU2V0",
+            "UmVhbFJlc3BvbnNlEiUKBnN0YXR1cxgBIAEoDjIVLk1vZGVsaVJwYy5GbWky",
+            "U3RhdHVzIk4KDlNldEJvb2xSZXF1ZXN0EhUKDWluc3RhbmNlX25hbWUYASAB",
+            "KAkSJQoGdmFsdWVzGAIgASgLMhUuTW9kZWxpUnBjLkJvb2xWYWx1ZXMiOAoP",
+            "U2V0Qm9vbFJlc3BvbnNlEiUKBnN0YXR1cxgBIAEoDjIVLk1vZGVsaVJwYy5G",
+            "bWkyU3RhdHVzIlIKEFNldFN0cmluZ1JlcXVlc3QSFQoNaW5zdGFuY2VfbmFt",
+            "ZRgBIAEoCRInCgZ2YWx1ZXMYAiABKAsyFy5Nb2RlbGlScGMuU3RyaW5nVmFs",
+            "dWVzIjoKEVNldFN0cmluZ1Jlc3BvbnNlEiUKBnN0YXR1cxgBIAEoDjIVLk1v",
+            "ZGVsaVJwYy5GbWkyU3RhdHVzIhIKEE5ld1ZhbHVlc1JlcXVlc3Qi1AEKEU5l",
+            "d1ZhbHVlc1Jlc3BvbnNlEhEKCXRpbWVzdGFtcBgBIAEoARInCglpbnRWYWx1",
+            "ZXMYAiABKAsyFC5Nb2RlbGlScGMuSW50VmFsdWVzEikKCnJlYWxWYWx1ZXMY",
+            "AyABKAsyFS5Nb2RlbGlScGMuUmVhbFZhbHVlcxIpCgpib29sVmFsdWVzGAQg",
+            "ASgLMhUuTW9kZWxpUnBjLkJvb2xWYWx1ZXMSLQoMc3RyaW5nVmFsdWVzGAUg",
+            "ASgLMhcuTW9kZWxpUnBjLlN0cmluZ1ZhbHVlcyIMCgpMb2dSZXF1ZXN0IlwK",
+            "C0xvZ1Jlc3BvbnNlEhUKDWluc3RhbmNlX25hbWUYASABKAkSJQoGc3RhdHVz",
+            "GAIgASgOMhUuTW9kZWxpUnBjLkZtaTJTdGF0dXMSDwoHbWVzc2FnZRgDIAEo",
+            "CSpvCgpGbWkyU3RhdHVzEgsKB0ZNSTJfT0sQABIQCgxGTUkyX1dBUk5JTkcQ",
+            "ARIQCgxGTUkyX0RJU0NBUkQQAhIOCgpGTUkyX0VSUk9SEAMSDgoKRk1JMl9G",
+            "QVRBTBAEEhAKDEZNSTJfUEVORElORxAFMs8HCg1Nb2RlbGlCYWNrZW5kEjcK",
+            "BFBsYXkSFi5Nb2RlbGlScGMuUGxheVJlcXVlc3QaFy5Nb2RlbGlScGMuUGxh",
+            "eVJlc3BvbnNlEkMKCFBsYXlGYXN0EhouTW9kZWxpUnBjLlBsYXlGYXN0UmVx",
+            "dWVzdBobLk1vZGVsaVJwYy5QbGF5RmFzdFJlc3BvbnNlEjoKBVBhdXNlEhcu",
+            "TW9kZWxpUnBjLlBhdXNlUmVxdWVzdBoYLk1vZGVsaVJwYy5QYXVzZVJlc3Bv",
+            "bnNlEjcKBFN0b3ASFi5Nb2RlbGlScGMuU3RvcFJlcXVlc3QaFy5Nb2RlbGlS",
+            "cGMuU3RvcFJlc3BvbnNlEj8KBkFkZEZtdRIYLk1vZGVsaVJwYy5BZGRGbXVS",
+            "ZXF1ZXN0GhkuTW9kZWxpUnBjLkFkZEZtdVJlc3BvbnNlKAESRgoJUmVtb3Zl",
+            "Rm11EhsuTW9kZWxpUnBjLlJlbW92ZUZtdVJlcXVlc3QaHC5Nb2RlbGlScGMu",
+            "UmVtb3ZlRm11UmVzcG9uc2USVQoOQWRkQ2hhbm5lbExpbmsSIC5Nb2RlbGlS",
+            "cGMuQWRkQ2hhbm5lbExpbmtSZXF1ZXN0GiEuTW9kZWxpUnBjLkFkZENoYW5u",
+            "ZWxMaW5rUmVzcG9uc2USXgoRUmVtb3ZlQ2hhbm5lbExpbmsSIy5Nb2RlbGlS",
+            "cGMuUmVtb3ZlQ2hhbm5lbExpbmtSZXF1ZXN0GiQuTW9kZWxpUnBjLlJlbW92",
+            "ZUNoYW5uZWxMaW5rUmVzcG9uc2USPQoGU2V0SW50EhguTW9kZWxpUnBjLlNl",
+            "dEludFJlcXVlc3QaGS5Nb2RlbGlScGMuU2V0SW50UmVzcG9uc2USQAoHU2V0",
+            "UmVhbBIZLk1vZGVsaVJwYy5TZXRSZWFsUmVxdWVzdBoaLk1vZGVsaVJwYy5T",
+            "ZXRSZWFsUmVzcG9uc2USQAoHU2V0Qm9vbBIZLk1vZGVsaVJwYy5TZXRCb29s",
+            "UmVxdWVzdBoaLk1vZGVsaVJwYy5TZXRCb29sUmVzcG9uc2USRgoJU2V0U3Ry",
+            "aW5nEhsuTW9kZWxpUnBjLlNldFN0cmluZ1JlcXVlc3QaHC5Nb2RlbGlScGMu",
+            "U2V0U3RyaW5nUmVzcG9uc2USSAoJTmV3VmFsdWVzEhsuTW9kZWxpUnBjLk5l",
+            "d1ZhbHVlc1JlcXVlc3QaHC5Nb2RlbGlScGMuTmV3VmFsdWVzUmVzcG9uc2Uw",
+            "ARI2CgNMb2cSFS5Nb2RlbGlScGMuTG9nUmVxdWVzdBoWLk1vZGVsaVJwYy5M",
+            "b2dSZXNwb25zZTABYgZwcm90bzM="));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { },
           new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ModeliRpc.Fmi2Status), }, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.Values), global::ModeliRpc.Values.Parser, new[]{ "InstanceName", "IntVrs", "IntValues", "RealVrs", "RealValues", "BoolVrs", "BoolValues", "StringVrs", "StringValues" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.IntValues), global::ModeliRpc.IntValues.Parser, new[]{ "ValueRefs", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.RealValues), global::ModeliRpc.RealValues.Parser, new[]{ "ValueRefs", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.BoolValues), global::ModeliRpc.BoolValues.Parser, new[]{ "ValueRefs", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.StringValues), global::ModeliRpc.StringValues.Parser, new[]{ "ValueRefs", "Values" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.ChannelLink), global::ModeliRpc.ChannelLink.Parser, new[]{ "MasterInstanceName", "SlaveInstanceName", "MasterVr", "SlaveVr", "Factor", "Offset" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.PlayRequest), global::ModeliRpc.PlayRequest.Parser, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.PlayResponse), global::ModeliRpc.PlayResponse.Parser, new[]{ "Status" }, null, null, null),
@@ -94,10 +114,16 @@ namespace ModeliRpc {
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.AddChannelLinkResponse), global::ModeliRpc.AddChannelLinkResponse.Parser, new[]{ "Success" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.RemoveChannelLinkRequest), global::ModeliRpc.RemoveChannelLinkRequest.Parser, new[]{ "ChannelLink" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.RemoveChannelLinkResponse), global::ModeliRpc.RemoveChannelLinkResponse.Parser, new[]{ "Success" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetValuesReqest), global::ModeliRpc.SetValuesReqest.Parser, new[]{ "Values" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetValuesResponse), global::ModeliRpc.SetValuesResponse.Parser, new[]{ "Status" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetIntRequest), global::ModeliRpc.SetIntRequest.Parser, new[]{ "InstanceName", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetIntResponse), global::ModeliRpc.SetIntResponse.Parser, new[]{ "Status" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetRealRequest), global::ModeliRpc.SetRealRequest.Parser, new[]{ "InstanceName", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetRealResponse), global::ModeliRpc.SetRealResponse.Parser, new[]{ "Status" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetBoolRequest), global::ModeliRpc.SetBoolRequest.Parser, new[]{ "InstanceName", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetBoolResponse), global::ModeliRpc.SetBoolResponse.Parser, new[]{ "Status" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetStringRequest), global::ModeliRpc.SetStringRequest.Parser, new[]{ "InstanceName", "Values" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.SetStringResponse), global::ModeliRpc.SetStringResponse.Parser, new[]{ "Status" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesRequest), global::ModeliRpc.NewValuesRequest.Parser, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesResponse), global::ModeliRpc.NewValuesResponse.Parser, new[]{ "Values", "Timestamp" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.NewValuesResponse), global::ModeliRpc.NewValuesResponse.Parser, new[]{ "Timestamp", "IntValues", "RealValues", "BoolValues", "StringValues" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.LogRequest), global::ModeliRpc.LogRequest.Parser, null, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::ModeliRpc.LogResponse), global::ModeliRpc.LogResponse.Parser, new[]{ "InstanceName", "Status", "Message" }, null, null, null)
           }));
@@ -124,10 +150,10 @@ namespace ModeliRpc {
   /// <summary>
   /// Contains values from and for the fmu
   /// </summary>
-  public sealed partial class Values : pb::IMessage<Values> {
-    private static readonly pb::MessageParser<Values> _parser = new pb::MessageParser<Values>(() => new Values());
+  public sealed partial class IntValues : pb::IMessage<IntValues> {
+    private static readonly pb::MessageParser<IntValues> _parser = new pb::MessageParser<IntValues>(() => new IntValues());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<Values> Parser { get { return _parser; } }
+    public static pb::MessageParser<IntValues> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
@@ -140,161 +166,197 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public Values() {
+    public IntValues() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public Values(Values other) : this() {
-      instanceName_ = other.instanceName_;
-      intVrs_ = other.intVrs_.Clone();
-      intValues_ = other.intValues_.Clone();
-      realVrs_ = other.realVrs_.Clone();
-      realValues_ = other.realValues_.Clone();
-      boolVrs_ = other.boolVrs_.Clone();
-      boolValues_ = other.boolValues_.Clone();
-      stringVrs_ = other.stringVrs_.Clone();
-      stringValues_ = other.stringValues_.Clone();
+    public IntValues(IntValues other) : this() {
+      valueRefs_ = other.valueRefs_.Clone();
+      values_ = other.values_.Clone();
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public Values Clone() {
-      return new Values(this);
+    public IntValues Clone() {
+      return new IntValues(this);
     }
 
-    /// <summary>Field number for the "instance_name" field.</summary>
-    public const int InstanceNameFieldNumber = 1;
-    private string instanceName_ = "";
+    /// <summary>Field number for the "valueRefs" field.</summary>
+    public const int ValueRefsFieldNumber = 1;
+    private static readonly pb::FieldCodec<uint> _repeated_valueRefs_codec
+        = pb::FieldCodec.ForUInt32(10);
+    private readonly pbc::RepeatedField<uint> valueRefs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string InstanceName {
-      get { return instanceName_; }
-      set {
-        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+    public pbc::RepeatedField<uint> ValueRefs {
+      get { return valueRefs_; }
+    }
+
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_values_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> values_ = new pbc::RepeatedField<int>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::RepeatedField<int> Values {
+      get { return values_; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as IntValues);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(IntValues other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
       }
+      if(!valueRefs_.Equals(other.valueRefs_)) return false;
+      if(!values_.Equals(other.values_)) return false;
+      return true;
     }
 
-    /// <summary>Field number for the "int_vrs" field.</summary>
-    public const int IntVrsFieldNumber = 2;
-    private static readonly pb::FieldCodec<uint> _repeated_intVrs_codec
-        = pb::FieldCodec.ForUInt32(18);
-    private readonly pbc::RepeatedField<uint> intVrs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<uint> IntVrs {
-      get { return intVrs_; }
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= valueRefs_.GetHashCode();
+      hash ^= values_.GetHashCode();
+      return hash;
     }
 
-    /// <summary>Field number for the "int_values" field.</summary>
-    public const int IntValuesFieldNumber = 3;
-    private static readonly pb::FieldCodec<int> _repeated_intValues_codec
-        = pb::FieldCodec.ForInt32(26);
-    private readonly pbc::RepeatedField<int> intValues_ = new pbc::RepeatedField<int>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<int> IntValues {
-      get { return intValues_; }
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
     }
 
-    /// <summary>Field number for the "real_vrs" field.</summary>
-    public const int RealVrsFieldNumber = 4;
-    private static readonly pb::FieldCodec<uint> _repeated_realVrs_codec
-        = pb::FieldCodec.ForUInt32(34);
-    private readonly pbc::RepeatedField<uint> realVrs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<uint> RealVrs {
-      get { return realVrs_; }
+    public void WriteTo(pb::CodedOutputStream output) {
+      valueRefs_.WriteTo(output, _repeated_valueRefs_codec);
+      values_.WriteTo(output, _repeated_values_codec);
     }
 
-    /// <summary>Field number for the "real_values" field.</summary>
-    public const int RealValuesFieldNumber = 5;
-    private static readonly pb::FieldCodec<double> _repeated_realValues_codec
-        = pb::FieldCodec.ForDouble(42);
-    private readonly pbc::RepeatedField<double> realValues_ = new pbc::RepeatedField<double>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<double> RealValues {
-      get { return realValues_; }
+    public int CalculateSize() {
+      int size = 0;
+      size += valueRefs_.CalculateSize(_repeated_valueRefs_codec);
+      size += values_.CalculateSize(_repeated_values_codec);
+      return size;
     }
 
-    /// <summary>Field number for the "bool_vrs" field.</summary>
-    public const int BoolVrsFieldNumber = 6;
-    private static readonly pb::FieldCodec<uint> _repeated_boolVrs_codec
-        = pb::FieldCodec.ForUInt32(50);
-    private readonly pbc::RepeatedField<uint> boolVrs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<uint> BoolVrs {
-      get { return boolVrs_; }
+    public void MergeFrom(IntValues other) {
+      if (other == null) {
+        return;
+      }
+      valueRefs_.Add(other.valueRefs_);
+      values_.Add(other.values_);
     }
 
-    /// <summary>Field number for the "bool_values" field.</summary>
-    public const int BoolValuesFieldNumber = 7;
-    private static readonly pb::FieldCodec<int> _repeated_boolValues_codec
-        = pb::FieldCodec.ForInt32(58);
-    private readonly pbc::RepeatedField<int> boolValues_ = new pbc::RepeatedField<int>();
-    /// <summary>
-    /// fmi2Bool = int32 (0 = false, 1 = true)
-    /// </summary>
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<int> BoolValues {
-      get { return boolValues_; }
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            valueRefs_.AddEntriesFrom(input, _repeated_valueRefs_codec);
+            break;
+          }
+          case 18:
+          case 16: {
+            values_.AddEntriesFrom(input, _repeated_values_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class RealValues : pb::IMessage<RealValues> {
+    private static readonly pb::MessageParser<RealValues> _parser = new pb::MessageParser<RealValues>(() => new RealValues());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<RealValues> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[1]; }
     }
 
-    /// <summary>Field number for the "string_vrs" field.</summary>
-    public const int StringVrsFieldNumber = 8;
-    private static readonly pb::FieldCodec<uint> _repeated_stringVrs_codec
-        = pb::FieldCodec.ForUInt32(66);
-    private readonly pbc::RepeatedField<uint> stringVrs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<uint> StringVrs {
-      get { return stringVrs_; }
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
     }
 
-    /// <summary>Field number for the "string_values" field.</summary>
-    public const int StringValuesFieldNumber = 9;
-    private static readonly pb::FieldCodec<string> _repeated_stringValues_codec
-        = pb::FieldCodec.ForString(74);
-    private readonly pbc::RepeatedField<string> stringValues_ = new pbc::RepeatedField<string>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<string> StringValues {
-      get { return stringValues_; }
+    public RealValues() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public RealValues(RealValues other) : this() {
+      valueRefs_ = other.valueRefs_.Clone();
+      values_ = other.values_.Clone();
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public RealValues Clone() {
+      return new RealValues(this);
+    }
+
+    /// <summary>Field number for the "valueRefs" field.</summary>
+    public const int ValueRefsFieldNumber = 1;
+    private static readonly pb::FieldCodec<uint> _repeated_valueRefs_codec
+        = pb::FieldCodec.ForUInt32(10);
+    private readonly pbc::RepeatedField<uint> valueRefs_ = new pbc::RepeatedField<uint>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::RepeatedField<uint> ValueRefs {
+      get { return valueRefs_; }
+    }
+
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pb::FieldCodec<double> _repeated_values_codec
+        = pb::FieldCodec.ForDouble(18);
+    private readonly pbc::RepeatedField<double> values_ = new pbc::RepeatedField<double>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::RepeatedField<double> Values {
+      get { return values_; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as Values);
+      return Equals(other as RealValues);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(Values other) {
+    public bool Equals(RealValues other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (InstanceName != other.InstanceName) return false;
-      if(!intVrs_.Equals(other.intVrs_)) return false;
-      if(!intValues_.Equals(other.intValues_)) return false;
-      if(!realVrs_.Equals(other.realVrs_)) return false;
-      if(!realValues_.Equals(other.realValues_)) return false;
-      if(!boolVrs_.Equals(other.boolVrs_)) return false;
-      if(!boolValues_.Equals(other.boolValues_)) return false;
-      if(!stringVrs_.Equals(other.stringVrs_)) return false;
-      if(!stringValues_.Equals(other.stringValues_)) return false;
+      if(!valueRefs_.Equals(other.valueRefs_)) return false;
+      if(!values_.Equals(other.values_)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
-      hash ^= intVrs_.GetHashCode();
-      hash ^= intValues_.GetHashCode();
-      hash ^= realVrs_.GetHashCode();
-      hash ^= realValues_.GetHashCode();
-      hash ^= boolVrs_.GetHashCode();
-      hash ^= boolValues_.GetHashCode();
-      hash ^= stringVrs_.GetHashCode();
-      hash ^= stringValues_.GetHashCode();
+      hash ^= valueRefs_.GetHashCode();
+      hash ^= values_.GetHashCode();
       return hash;
     }
 
@@ -305,53 +367,25 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (InstanceName.Length != 0) {
-        output.WriteRawTag(10);
-        output.WriteString(InstanceName);
-      }
-      intVrs_.WriteTo(output, _repeated_intVrs_codec);
-      intValues_.WriteTo(output, _repeated_intValues_codec);
-      realVrs_.WriteTo(output, _repeated_realVrs_codec);
-      realValues_.WriteTo(output, _repeated_realValues_codec);
-      boolVrs_.WriteTo(output, _repeated_boolVrs_codec);
-      boolValues_.WriteTo(output, _repeated_boolValues_codec);
-      stringVrs_.WriteTo(output, _repeated_stringVrs_codec);
-      stringValues_.WriteTo(output, _repeated_stringValues_codec);
+      valueRefs_.WriteTo(output, _repeated_valueRefs_codec);
+      values_.WriteTo(output, _repeated_values_codec);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (InstanceName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
-      }
-      size += intVrs_.CalculateSize(_repeated_intVrs_codec);
-      size += intValues_.CalculateSize(_repeated_intValues_codec);
-      size += realVrs_.CalculateSize(_repeated_realVrs_codec);
-      size += realValues_.CalculateSize(_repeated_realValues_codec);
-      size += boolVrs_.CalculateSize(_repeated_boolVrs_codec);
-      size += boolValues_.CalculateSize(_repeated_boolValues_codec);
-      size += stringVrs_.CalculateSize(_repeated_stringVrs_codec);
-      size += stringValues_.CalculateSize(_repeated_stringValues_codec);
+      size += valueRefs_.CalculateSize(_repeated_valueRefs_codec);
+      size += values_.CalculateSize(_repeated_values_codec);
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(Values other) {
+    public void MergeFrom(RealValues other) {
       if (other == null) {
         return;
       }
-      if (other.InstanceName.Length != 0) {
-        InstanceName = other.InstanceName;
-      }
-      intVrs_.Add(other.intVrs_);
-      intValues_.Add(other.intValues_);
-      realVrs_.Add(other.realVrs_);
-      realValues_.Add(other.realValues_);
-      boolVrs_.Add(other.boolVrs_);
-      boolValues_.Add(other.boolValues_);
-      stringVrs_.Add(other.stringVrs_);
-      stringValues_.Add(other.stringValues_);
+      valueRefs_.Add(other.valueRefs_);
+      values_.Add(other.values_);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -362,47 +396,14 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
-          case 10: {
-            InstanceName = input.ReadString();
+          case 10:
+          case 8: {
+            valueRefs_.AddEntriesFrom(input, _repeated_valueRefs_codec);
             break;
           }
           case 18:
-          case 16: {
-            intVrs_.AddEntriesFrom(input, _repeated_intVrs_codec);
-            break;
-          }
-          case 26:
-          case 24: {
-            intValues_.AddEntriesFrom(input, _repeated_intValues_codec);
-            break;
-          }
-          case 34:
-          case 32: {
-            realVrs_.AddEntriesFrom(input, _repeated_realVrs_codec);
-            break;
-          }
-          case 42:
-          case 41: {
-            realValues_.AddEntriesFrom(input, _repeated_realValues_codec);
-            break;
-          }
-          case 50:
-          case 48: {
-            boolVrs_.AddEntriesFrom(input, _repeated_boolVrs_codec);
-            break;
-          }
-          case 58:
-          case 56: {
-            boolValues_.AddEntriesFrom(input, _repeated_boolValues_codec);
-            break;
-          }
-          case 66:
-          case 64: {
-            stringVrs_.AddEntriesFrom(input, _repeated_stringVrs_codec);
-            break;
-          }
-          case 74: {
-            stringValues_.AddEntriesFrom(input, _repeated_stringValues_codec);
+          case 17: {
+            values_.AddEntriesFrom(input, _repeated_values_codec);
             break;
           }
         }
@@ -411,17 +412,14 @@ namespace ModeliRpc {
 
   }
 
-  /// <summary>
-  /// The metadata of a ChannelLink
-  /// </summary>
-  public sealed partial class ChannelLink : pb::IMessage<ChannelLink> {
-    private static readonly pb::MessageParser<ChannelLink> _parser = new pb::MessageParser<ChannelLink>(() => new ChannelLink());
+  public sealed partial class BoolValues : pb::IMessage<BoolValues> {
+    private static readonly pb::MessageParser<BoolValues> _parser = new pb::MessageParser<BoolValues>(() => new BoolValues());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<ChannelLink> Parser { get { return _parser; } }
+    public static pb::MessageParser<BoolValues> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[1]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[2]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -430,124 +428,69 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public ChannelLink() {
+    public BoolValues() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public ChannelLink(ChannelLink other) : this() {
-      masterInstanceName_ = other.masterInstanceName_;
-      slaveInstanceName_ = other.slaveInstanceName_;
-      masterVr_ = other.masterVr_;
-      slaveVr_ = other.slaveVr_;
-      factor_ = other.factor_;
-      offset_ = other.offset_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public ChannelLink Clone() {
-      return new ChannelLink(this);
-    }
-
-    /// <summary>Field number for the "master_instance_name" field.</summary>
-    public const int MasterInstanceNameFieldNumber = 1;
-    private string masterInstanceName_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string MasterInstanceName {
-      get { return masterInstanceName_; }
-      set {
-        masterInstanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "slave_instance_name" field.</summary>
-    public const int SlaveInstanceNameFieldNumber = 2;
-    private string slaveInstanceName_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SlaveInstanceName {
-      get { return slaveInstanceName_; }
-      set {
-        slaveInstanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "master_vr" field.</summary>
-    public const int MasterVrFieldNumber = 3;
-    private uint masterVr_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public uint MasterVr {
-      get { return masterVr_; }
-      set {
-        masterVr_ = value;
-      }
+    public BoolValues(BoolValues other) : this() {
+      valueRefs_ = other.valueRefs_.Clone();
+      values_ = other.values_.Clone();
     }
 
-    /// <summary>Field number for the "slave_vr" field.</summary>
-    public const int SlaveVrFieldNumber = 4;
-    private uint slaveVr_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public uint SlaveVr {
-      get { return slaveVr_; }
-      set {
-        slaveVr_ = value;
-      }
+    public BoolValues Clone() {
+      return new BoolValues(this);
     }
 
-    /// <summary>Field number for the "factor" field.</summary>
-    public const int FactorFieldNumber = 5;
-    private double factor_;
+    /// <summary>Field number for the "valueRefs" field.</summary>
+    public const int ValueRefsFieldNumber = 1;
+    private static readonly pb::FieldCodec<uint> _repeated_valueRefs_codec
+        = pb::FieldCodec.ForUInt32(10);
+    private readonly pbc::RepeatedField<uint> valueRefs_ = new pbc::RepeatedField<uint>();
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public double Factor {
-      get { return factor_; }
-      set {
-        factor_ = value;
-      }
+    public pbc::RepeatedField<uint> ValueRefs {
+      get { return valueRefs_; }
     }
 
-    /// <summary>Field number for the "offset" field.</summary>
-    public const int OffsetFieldNumber = 6;
-    private double offset_;
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pb::FieldCodec<int> _repeated_values_codec
+        = pb::FieldCodec.ForInt32(18);
+    private readonly pbc::RepeatedField<int> values_ = new pbc::RepeatedField<int>();
+    /// <summary>
+    /// Fmi2 standard encodes bools as int (1: true, 0: false)
+    /// </summary>
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public double Offset {
-      get { return offset_; }
-      set {
-        offset_ = value;
-      }
+    public pbc::RepeatedField<int> Values {
+      get { return values_; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as ChannelLink);
+      return Equals(other as BoolValues);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(ChannelLink other) {
+    public bool Equals(BoolValues other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (MasterInstanceName != other.MasterInstanceName) return false;
-      if (SlaveInstanceName != other.SlaveInstanceName) return false;
-      if (MasterVr != other.MasterVr) return false;
-      if (SlaveVr != other.SlaveVr) return false;
-      if (Factor != other.Factor) return false;
-      if (Offset != other.Offset) return false;
+      if(!valueRefs_.Equals(other.valueRefs_)) return false;
+      if(!values_.Equals(other.values_)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (MasterInstanceName.Length != 0) hash ^= MasterInstanceName.GetHashCode();
-      if (SlaveInstanceName.Length != 0) hash ^= SlaveInstanceName.GetHashCode();
-      if (MasterVr != 0) hash ^= MasterVr.GetHashCode();
-      if (SlaveVr != 0) hash ^= SlaveVr.GetHashCode();
-      if (Factor != 0D) hash ^= Factor.GetHashCode();
-      if (Offset != 0D) hash ^= Offset.GetHashCode();
+      hash ^= valueRefs_.GetHashCode();
+      hash ^= values_.GetHashCode();
       return hash;
     }
 
@@ -558,17 +501,339 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (MasterInstanceName.Length != 0) {
-        output.WriteRawTag(10);
-        output.WriteString(MasterInstanceName);
+      valueRefs_.WriteTo(output, _repeated_valueRefs_codec);
+      values_.WriteTo(output, _repeated_values_codec);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      size += valueRefs_.CalculateSize(_repeated_valueRefs_codec);
+      size += values_.CalculateSize(_repeated_values_codec);
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(BoolValues other) {
+      if (other == null) {
+        return;
       }
-      if (SlaveInstanceName.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SlaveInstanceName);
+      valueRefs_.Add(other.valueRefs_);
+      values_.Add(other.values_);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            valueRefs_.AddEntriesFrom(input, _repeated_valueRefs_codec);
+            break;
+          }
+          case 18:
+          case 16: {
+            values_.AddEntriesFrom(input, _repeated_values_codec);
+            break;
+          }
+        }
       }
-      if (MasterVr != 0) {
-        output.WriteRawTag(24);
-        output.WriteUInt32(MasterVr);
+    }
+
+  }
+
+  public sealed partial class StringValues : pb::IMessage<StringValues> {
+    private static readonly pb::MessageParser<StringValues> _parser = new pb::MessageParser<StringValues>(() => new StringValues());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<StringValues> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[3]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public StringValues() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public StringValues(StringValues other) : this() {
+      valueRefs_ = other.valueRefs_.Clone();
+      values_ = other.values_.Clone();
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public StringValues Clone() {
+      return new StringValues(this);
+    }
+
+    /// <summary>Field number for the "valueRefs" field.</summary>
+    public const int ValueRefsFieldNumber = 1;
+    private static readonly pb::FieldCodec<uint> _repeated_valueRefs_codec
+        = pb::FieldCodec.ForUInt32(10);
+    private readonly pbc::RepeatedField<uint> valueRefs_ = new pbc::RepeatedField<uint>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::RepeatedField<uint> ValueRefs {
+      get { return valueRefs_; }
+    }
+
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pb::FieldCodec<string> _repeated_values_codec
+        = pb::FieldCodec.ForString(18);
+    private readonly pbc::RepeatedField<string> values_ = new pbc::RepeatedField<string>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::RepeatedField<string> Values {
+      get { return values_; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as StringValues);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(StringValues other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if(!valueRefs_.Equals(other.valueRefs_)) return false;
+      if(!values_.Equals(other.values_)) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      hash ^= valueRefs_.GetHashCode();
+      hash ^= values_.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      valueRefs_.WriteTo(output, _repeated_valueRefs_codec);
+      values_.WriteTo(output, _repeated_values_codec);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      size += valueRefs_.CalculateSize(_repeated_valueRefs_codec);
+      size += values_.CalculateSize(_repeated_values_codec);
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(StringValues other) {
+      if (other == null) {
+        return;
+      }
+      valueRefs_.Add(other.valueRefs_);
+      values_.Add(other.values_);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10:
+          case 8: {
+            valueRefs_.AddEntriesFrom(input, _repeated_valueRefs_codec);
+            break;
+          }
+          case 18: {
+            values_.AddEntriesFrom(input, _repeated_values_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  /// The metadata of a ChannelLink
+  /// </summary>
+  public sealed partial class ChannelLink : pb::IMessage<ChannelLink> {
+    private static readonly pb::MessageParser<ChannelLink> _parser = new pb::MessageParser<ChannelLink>(() => new ChannelLink());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<ChannelLink> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[4]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChannelLink() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChannelLink(ChannelLink other) : this() {
+      masterInstanceName_ = other.masterInstanceName_;
+      slaveInstanceName_ = other.slaveInstanceName_;
+      masterVr_ = other.masterVr_;
+      slaveVr_ = other.slaveVr_;
+      factor_ = other.factor_;
+      offset_ = other.offset_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChannelLink Clone() {
+      return new ChannelLink(this);
+    }
+
+    /// <summary>Field number for the "master_instance_name" field.</summary>
+    public const int MasterInstanceNameFieldNumber = 1;
+    private string masterInstanceName_ = "";
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string MasterInstanceName {
+      get { return masterInstanceName_; }
+      set {
+        masterInstanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "slave_instance_name" field.</summary>
+    public const int SlaveInstanceNameFieldNumber = 2;
+    private string slaveInstanceName_ = "";
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string SlaveInstanceName {
+      get { return slaveInstanceName_; }
+      set {
+        slaveInstanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "master_vr" field.</summary>
+    public const int MasterVrFieldNumber = 3;
+    private uint masterVr_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint MasterVr {
+      get { return masterVr_; }
+      set {
+        masterVr_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "slave_vr" field.</summary>
+    public const int SlaveVrFieldNumber = 4;
+    private uint slaveVr_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint SlaveVr {
+      get { return slaveVr_; }
+      set {
+        slaveVr_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "factor" field.</summary>
+    public const int FactorFieldNumber = 5;
+    private double factor_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Factor {
+      get { return factor_; }
+      set {
+        factor_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "offset" field.</summary>
+    public const int OffsetFieldNumber = 6;
+    private double offset_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Offset {
+      get { return offset_; }
+      set {
+        offset_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as ChannelLink);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(ChannelLink other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (MasterInstanceName != other.MasterInstanceName) return false;
+      if (SlaveInstanceName != other.SlaveInstanceName) return false;
+      if (MasterVr != other.MasterVr) return false;
+      if (SlaveVr != other.SlaveVr) return false;
+      if (Factor != other.Factor) return false;
+      if (Offset != other.Offset) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (MasterInstanceName.Length != 0) hash ^= MasterInstanceName.GetHashCode();
+      if (SlaveInstanceName.Length != 0) hash ^= SlaveInstanceName.GetHashCode();
+      if (MasterVr != 0) hash ^= MasterVr.GetHashCode();
+      if (SlaveVr != 0) hash ^= SlaveVr.GetHashCode();
+      if (Factor != 0D) hash ^= Factor.GetHashCode();
+      if (Offset != 0D) hash ^= Offset.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (MasterInstanceName.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(MasterInstanceName);
+      }
+      if (SlaveInstanceName.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteString(SlaveInstanceName);
+      }
+      if (MasterVr != 0) {
+        output.WriteRawTag(24);
+        output.WriteUInt32(MasterVr);
       }
       if (SlaveVr != 0) {
         output.WriteRawTag(32);
@@ -587,50 +852,695 @@ namespace ModeliRpc {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (MasterInstanceName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(MasterInstanceName);
-      }
-      if (SlaveInstanceName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SlaveInstanceName);
-      }
-      if (MasterVr != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MasterVr);
-      }
-      if (SlaveVr != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveVr);
-      }
-      if (Factor != 0D) {
-        size += 1 + 8;
-      }
-      if (Offset != 0D) {
-        size += 1 + 8;
-      }
+      if (MasterInstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(MasterInstanceName);
+      }
+      if (SlaveInstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(SlaveInstanceName);
+      }
+      if (MasterVr != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MasterVr);
+      }
+      if (SlaveVr != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SlaveVr);
+      }
+      if (Factor != 0D) {
+        size += 1 + 8;
+      }
+      if (Offset != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(ChannelLink other) {
+      if (other == null) {
+        return;
+      }
+      if (other.MasterInstanceName.Length != 0) {
+        MasterInstanceName = other.MasterInstanceName;
+      }
+      if (other.SlaveInstanceName.Length != 0) {
+        SlaveInstanceName = other.SlaveInstanceName;
+      }
+      if (other.MasterVr != 0) {
+        MasterVr = other.MasterVr;
+      }
+      if (other.SlaveVr != 0) {
+        SlaveVr = other.SlaveVr;
+      }
+      if (other.Factor != 0D) {
+        Factor = other.Factor;
+      }
+      if (other.Offset != 0D) {
+        Offset = other.Offset;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            MasterInstanceName = input.ReadString();
+            break;
+          }
+          case 18: {
+            SlaveInstanceName = input.ReadString();
+            break;
+          }
+          case 24: {
+            MasterVr = input.ReadUInt32();
+            break;
+          }
+          case 32: {
+            SlaveVr = input.ReadUInt32();
+            break;
+          }
+          case 41: {
+            Factor = input.ReadDouble();
+            break;
+          }
+          case 49: {
+            Offset = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  /// Request &amp; Response definitions
+  /// </summary>
+  public sealed partial class PlayRequest : pb::IMessage<PlayRequest> {
+    private static readonly pb::MessageParser<PlayRequest> _parser = new pb::MessageParser<PlayRequest>(() => new PlayRequest());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PlayRequest> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[5]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayRequest(PlayRequest other) : this() {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayRequest Clone() {
+      return new PlayRequest(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PlayRequest);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PlayRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PlayRequest other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class PlayResponse : pb::IMessage<PlayResponse> {
+    private static readonly pb::MessageParser<PlayResponse> _parser = new pb::MessageParser<PlayResponse>(() => new PlayResponse());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PlayResponse> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[6]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayResponse(PlayResponse other) : this() {
+      status_ = other.status_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayResponse Clone() {
+      return new PlayResponse(this);
+    }
+
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::ModeliRpc.Fmi2Status status_ = 0;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.Fmi2Status Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PlayResponse);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PlayResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Status != other.Status) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Status != 0) hash ^= Status.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Status != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Status);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PlayResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class PlayFastRequest : pb::IMessage<PlayFastRequest> {
+    private static readonly pb::MessageParser<PlayFastRequest> _parser = new pb::MessageParser<PlayFastRequest>(() => new PlayFastRequest());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PlayFastRequest> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[7]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastRequest(PlayFastRequest other) : this() {
+      time_ = other.time_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastRequest Clone() {
+      return new PlayFastRequest(this);
+    }
+
+    /// <summary>Field number for the "time" field.</summary>
+    public const int TimeFieldNumber = 1;
+    private double time_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Time {
+      get { return time_; }
+      set {
+        time_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PlayFastRequest);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PlayFastRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Time != other.Time) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Time != 0D) hash ^= Time.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Time != 0D) {
+        output.WriteRawTag(9);
+        output.WriteDouble(Time);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Time != 0D) {
+        size += 1 + 8;
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PlayFastRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Time != 0D) {
+        Time = other.Time;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 9: {
+            Time = input.ReadDouble();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class PlayFastResponse : pb::IMessage<PlayFastResponse> {
+    private static readonly pb::MessageParser<PlayFastResponse> _parser = new pb::MessageParser<PlayFastResponse>(() => new PlayFastResponse());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PlayFastResponse> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[8]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastResponse(PlayFastResponse other) : this() {
+      status_ = other.status_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PlayFastResponse Clone() {
+      return new PlayFastResponse(this);
+    }
+
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::ModeliRpc.Fmi2Status status_ = 0;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.Fmi2Status Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PlayFastResponse);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PlayFastResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Status != other.Status) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Status != 0) hash ^= Status.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Status != 0) {
+        output.WriteRawTag(8);
+        output.WriteEnum((int) Status);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PlayFastResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Status != 0) {
+        Status = other.Status;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class PauseRequest : pb::IMessage<PauseRequest> {
+    private static readonly pb::MessageParser<PauseRequest> _parser = new pb::MessageParser<PauseRequest>(() => new PauseRequest());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PauseRequest> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[9]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseRequest(PauseRequest other) : this() {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseRequest Clone() {
+      return new PauseRequest(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PauseRequest);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PauseRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PauseRequest other) {
+      if (other == null) {
+        return;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class PauseResponse : pb::IMessage<PauseResponse> {
+    private static readonly pb::MessageParser<PauseResponse> _parser = new pb::MessageParser<PauseResponse>(() => new PauseResponse());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PauseResponse> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[10]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseResponse(PauseResponse other) : this() {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PauseResponse Clone() {
+      return new PauseResponse(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PauseResponse);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PauseResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(ChannelLink other) {
+    public void MergeFrom(PauseResponse other) {
       if (other == null) {
         return;
       }
-      if (other.MasterInstanceName.Length != 0) {
-        MasterInstanceName = other.MasterInstanceName;
-      }
-      if (other.SlaveInstanceName.Length != 0) {
-        SlaveInstanceName = other.SlaveInstanceName;
-      }
-      if (other.MasterVr != 0) {
-        MasterVr = other.MasterVr;
-      }
-      if (other.SlaveVr != 0) {
-        SlaveVr = other.SlaveVr;
-      }
-      if (other.Factor != 0D) {
-        Factor = other.Factor;
-      }
-      if (other.Offset != 0D) {
-        Offset = other.Offset;
-      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -641,47 +1551,20 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
-          case 10: {
-            MasterInstanceName = input.ReadString();
-            break;
-          }
-          case 18: {
-            SlaveInstanceName = input.ReadString();
-            break;
-          }
-          case 24: {
-            MasterVr = input.ReadUInt32();
-            break;
-          }
-          case 32: {
-            SlaveVr = input.ReadUInt32();
-            break;
-          }
-          case 41: {
-            Factor = input.ReadDouble();
-            break;
-          }
-          case 49: {
-            Offset = input.ReadDouble();
-            break;
-          }
         }
       }
     }
 
   }
 
-  /// <summary>
-  /// Request &amp; Response definitions
-  /// </summary>
-  public sealed partial class PlayRequest : pb::IMessage<PlayRequest> {
-    private static readonly pb::MessageParser<PlayRequest> _parser = new pb::MessageParser<PlayRequest>(() => new PlayRequest());
+  public sealed partial class StopRequest : pb::IMessage<StopRequest> {
+    private static readonly pb::MessageParser<StopRequest> _parser = new pb::MessageParser<StopRequest>(() => new StopRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PlayRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<StopRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[2]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[11]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -690,28 +1573,28 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayRequest() {
+    public StopRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayRequest(PlayRequest other) : this() {
+    public StopRequest(StopRequest other) : this() {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayRequest Clone() {
-      return new PlayRequest(this);
+    public StopRequest Clone() {
+      return new StopRequest(this);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PlayRequest);
+      return Equals(other as StopRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PlayRequest other) {
+    public bool Equals(StopRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -743,7 +1626,7 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PlayRequest other) {
+    public void MergeFrom(StopRequest other) {
       if (other == null) {
         return;
       }
@@ -763,14 +1646,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class PlayResponse : pb::IMessage<PlayResponse> {
-    private static readonly pb::MessageParser<PlayResponse> _parser = new pb::MessageParser<PlayResponse>(() => new PlayResponse());
+  public sealed partial class StopResponse : pb::IMessage<StopResponse> {
+    private static readonly pb::MessageParser<StopResponse> _parser = new pb::MessageParser<StopResponse>(() => new StopResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PlayResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<StopResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[3]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[12]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -779,20 +1662,20 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayResponse() {
+    public StopResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayResponse(PlayResponse other) : this() {
+    public StopResponse(StopResponse other) : this() {
       status_ = other.status_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayResponse Clone() {
-      return new PlayResponse(this);
+    public StopResponse Clone() {
+      return new StopResponse(this);
     }
 
     /// <summary>Field number for the "status" field.</summary>
@@ -808,11 +1691,11 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PlayResponse);
+      return Equals(other as StopResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PlayResponse other) {
+    public bool Equals(StopResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -853,7 +1736,7 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PlayResponse other) {
+    public void MergeFrom(StopResponse other) {
       if (other == null) {
         return;
       }
@@ -880,14 +1763,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class PlayFastRequest : pb::IMessage<PlayFastRequest> {
-    private static readonly pb::MessageParser<PlayFastRequest> _parser = new pb::MessageParser<PlayFastRequest>(() => new PlayFastRequest());
+  public sealed partial class AddFmuRequest : pb::IMessage<AddFmuRequest> {
+    private static readonly pb::MessageParser<AddFmuRequest> _parser = new pb::MessageParser<AddFmuRequest>(() => new AddFmuRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PlayFastRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<AddFmuRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[4]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[13]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -896,54 +1779,68 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastRequest() {
+    public AddFmuRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastRequest(PlayFastRequest other) : this() {
-      time_ = other.time_;
+    public AddFmuRequest(AddFmuRequest other) : this() {
+      instanceName_ = other.instanceName_;
+      data_ = other.data_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastRequest Clone() {
-      return new PlayFastRequest(this);
+    public AddFmuRequest Clone() {
+      return new AddFmuRequest(this);
     }
 
-    /// <summary>Field number for the "time" field.</summary>
-    public const int TimeFieldNumber = 1;
-    private double time_;
+    /// <summary>Field number for the "instance_name" field.</summary>
+    public const int InstanceNameFieldNumber = 1;
+    private string instanceName_ = "";
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public double Time {
-      get { return time_; }
+    public string InstanceName {
+      get { return instanceName_; }
       set {
-        time_ = value;
+        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "data" field.</summary>
+    public const int DataFieldNumber = 2;
+    private pb::ByteString data_ = pb::ByteString.Empty;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pb::ByteString Data {
+      get { return data_; }
+      set {
+        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PlayFastRequest);
+      return Equals(other as AddFmuRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PlayFastRequest other) {
+    public bool Equals(AddFmuRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Time != other.Time) return false;
+      if (InstanceName != other.InstanceName) return false;
+      if (Data != other.Data) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Time != 0D) hash ^= Time.GetHashCode();
+      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
+      if (Data.Length != 0) hash ^= Data.GetHashCode();
       return hash;
     }
 
@@ -954,28 +1851,38 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Time != 0D) {
-        output.WriteRawTag(9);
-        output.WriteDouble(Time);
+      if (InstanceName.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(InstanceName);
+      }
+      if (Data.Length != 0) {
+        output.WriteRawTag(18);
+        output.WriteBytes(Data);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Time != 0D) {
-        size += 1 + 8;
+      if (InstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
+      }
+      if (Data.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PlayFastRequest other) {
+    public void MergeFrom(AddFmuRequest other) {
       if (other == null) {
         return;
       }
-      if (other.Time != 0D) {
-        Time = other.Time;
+      if (other.InstanceName.Length != 0) {
+        InstanceName = other.InstanceName;
+      }
+      if (other.Data.Length != 0) {
+        Data = other.Data;
       }
     }
 
@@ -987,8 +1894,12 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
-          case 9: {
-            Time = input.ReadDouble();
+          case 10: {
+            InstanceName = input.ReadString();
+            break;
+          }
+          case 18: {
+            Data = input.ReadBytes();
             break;
           }
         }
@@ -997,14 +1908,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class PlayFastResponse : pb::IMessage<PlayFastResponse> {
-    private static readonly pb::MessageParser<PlayFastResponse> _parser = new pb::MessageParser<PlayFastResponse>(() => new PlayFastResponse());
+  public sealed partial class AddFmuResponse : pb::IMessage<AddFmuResponse> {
+    private static readonly pb::MessageParser<AddFmuResponse> _parser = new pb::MessageParser<AddFmuResponse>(() => new AddFmuResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PlayFastResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<AddFmuResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[5]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[14]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1013,54 +1924,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastResponse() {
+    public AddFmuResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastResponse(PlayFastResponse other) : this() {
-      status_ = other.status_;
+    public AddFmuResponse(AddFmuResponse other) : this() {
+      success_ = other.success_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PlayFastResponse Clone() {
-      return new PlayFastResponse(this);
+    public AddFmuResponse Clone() {
+      return new AddFmuResponse(this);
     }
 
-    /// <summary>Field number for the "status" field.</summary>
-    public const int StatusFieldNumber = 1;
-    private global::ModeliRpc.Fmi2Status status_ = 0;
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.Fmi2Status Status {
-      get { return status_; }
+    public bool Success {
+      get { return success_; }
       set {
-        status_ = value;
+        success_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PlayFastResponse);
+      return Equals(other as AddFmuResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PlayFastResponse other) {
+    public bool Equals(AddFmuResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Status != other.Status) return false;
+      if (Success != other.Success) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Status != 0) hash ^= Status.GetHashCode();
+      if (Success != false) hash ^= Success.GetHashCode();
       return hash;
     }
 
@@ -1071,28 +1982,28 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Status != 0) {
+      if (Success != false) {
         output.WriteRawTag(8);
-        output.WriteEnum((int) Status);
+        output.WriteBool(Success);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Status != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      if (Success != false) {
+        size += 1 + 1;
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PlayFastResponse other) {
+    public void MergeFrom(AddFmuResponse other) {
       if (other == null) {
         return;
       }
-      if (other.Status != 0) {
-        Status = other.Status;
+      if (other.Success != false) {
+        Success = other.Success;
       }
     }
 
@@ -1105,7 +2016,7 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 8: {
-            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
+            Success = input.ReadBool();
             break;
           }
         }
@@ -1114,14 +2025,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class PauseRequest : pb::IMessage<PauseRequest> {
-    private static readonly pb::MessageParser<PauseRequest> _parser = new pb::MessageParser<PauseRequest>(() => new PauseRequest());
+  public sealed partial class RemoveFmuRequest : pb::IMessage<RemoveFmuRequest> {
+    private static readonly pb::MessageParser<RemoveFmuRequest> _parser = new pb::MessageParser<RemoveFmuRequest>(() => new RemoveFmuRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PauseRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<RemoveFmuRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[6]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[15]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1130,40 +2041,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseRequest() {
+    public RemoveFmuRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseRequest(PauseRequest other) : this() {
+    public RemoveFmuRequest(RemoveFmuRequest other) : this() {
+      instanceName_ = other.instanceName_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseRequest Clone() {
-      return new PauseRequest(this);
+    public RemoveFmuRequest Clone() {
+      return new RemoveFmuRequest(this);
+    }
+
+    /// <summary>Field number for the "instance_name" field.</summary>
+    public const int InstanceNameFieldNumber = 1;
+    private string instanceName_ = "";
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string InstanceName {
+      get { return instanceName_; }
+      set {
+        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PauseRequest);
+      return Equals(other as RemoveFmuRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PauseRequest other) {
+    public bool Equals(RemoveFmuRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
+      if (InstanceName != other.InstanceName) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
+      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
       return hash;
     }
 
@@ -1174,19 +2099,29 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
+      if (InstanceName.Length != 0) {
+        output.WriteRawTag(10);
+        output.WriteString(InstanceName);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
+      if (InstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
+      }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PauseRequest other) {
+    public void MergeFrom(RemoveFmuRequest other) {
       if (other == null) {
         return;
       }
+      if (other.InstanceName.Length != 0) {
+        InstanceName = other.InstanceName;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1197,20 +2132,24 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
+          case 10: {
+            InstanceName = input.ReadString();
+            break;
+          }
         }
       }
     }
 
   }
 
-  public sealed partial class PauseResponse : pb::IMessage<PauseResponse> {
-    private static readonly pb::MessageParser<PauseResponse> _parser = new pb::MessageParser<PauseResponse>(() => new PauseResponse());
+  public sealed partial class RemoveFmuResponse : pb::IMessage<RemoveFmuResponse> {
+    private static readonly pb::MessageParser<RemoveFmuResponse> _parser = new pb::MessageParser<RemoveFmuResponse>(() => new RemoveFmuResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<PauseResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<RemoveFmuResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[7]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[16]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1219,40 +2158,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseResponse() {
+    public RemoveFmuResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseResponse(PauseResponse other) : this() {
+    public RemoveFmuResponse(RemoveFmuResponse other) : this() {
+      success_ = other.success_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public PauseResponse Clone() {
-      return new PauseResponse(this);
+    public RemoveFmuResponse Clone() {
+      return new RemoveFmuResponse(this);
+    }
+
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Success {
+      get { return success_; }
+      set {
+        success_ = value;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as PauseResponse);
+      return Equals(other as RemoveFmuResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(PauseResponse other) {
+    public bool Equals(RemoveFmuResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
+      if (Success != other.Success) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
+      if (Success != false) hash ^= Success.GetHashCode();
       return hash;
     }
 
@@ -1263,19 +2216,29 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
+      if (Success != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Success);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
+      if (Success != false) {
+        size += 1 + 1;
+      }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(PauseResponse other) {
+    public void MergeFrom(RemoveFmuResponse other) {
       if (other == null) {
         return;
       }
+      if (other.Success != false) {
+        Success = other.Success;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1286,20 +2249,24 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
+          case 8: {
+            Success = input.ReadBool();
+            break;
+          }
         }
       }
     }
 
   }
 
-  public sealed partial class StopRequest : pb::IMessage<StopRequest> {
-    private static readonly pb::MessageParser<StopRequest> _parser = new pb::MessageParser<StopRequest>(() => new StopRequest());
+  public sealed partial class AddChannelLinkRequest : pb::IMessage<AddChannelLinkRequest> {
+    private static readonly pb::MessageParser<AddChannelLinkRequest> _parser = new pb::MessageParser<AddChannelLinkRequest>(() => new AddChannelLinkRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<StopRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<AddChannelLinkRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[8]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[17]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1308,40 +2275,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopRequest() {
+    public AddChannelLinkRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopRequest(StopRequest other) : this() {
+    public AddChannelLinkRequest(AddChannelLinkRequest other) : this() {
+      ChannelLink = other.channelLink_ != null ? other.ChannelLink.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopRequest Clone() {
-      return new StopRequest(this);
+    public AddChannelLinkRequest Clone() {
+      return new AddChannelLinkRequest(this);
+    }
+
+    /// <summary>Field number for the "channel_link" field.</summary>
+    public const int ChannelLinkFieldNumber = 1;
+    private global::ModeliRpc.ChannelLink channelLink_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.ChannelLink ChannelLink {
+      get { return channelLink_; }
+      set {
+        channelLink_ = value;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as StopRequest);
+      return Equals(other as AddChannelLinkRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(StopRequest other) {
+    public bool Equals(AddChannelLinkRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
+      if (!object.Equals(ChannelLink, other.ChannelLink)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
+      if (channelLink_ != null) hash ^= ChannelLink.GetHashCode();
       return hash;
     }
 
@@ -1352,19 +2333,32 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
+      if (channelLink_ != null) {
+        output.WriteRawTag(10);
+        output.WriteMessage(ChannelLink);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
+      if (channelLink_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChannelLink);
+      }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(StopRequest other) {
+    public void MergeFrom(AddChannelLinkRequest other) {
       if (other == null) {
         return;
       }
+      if (other.channelLink_ != null) {
+        if (channelLink_ == null) {
+          channelLink_ = new global::ModeliRpc.ChannelLink();
+        }
+        ChannelLink.MergeFrom(other.ChannelLink);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1375,20 +2369,27 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
+          case 10: {
+            if (channelLink_ == null) {
+              channelLink_ = new global::ModeliRpc.ChannelLink();
+            }
+            input.ReadMessage(channelLink_);
+            break;
+          }
         }
       }
     }
 
   }
 
-  public sealed partial class StopResponse : pb::IMessage<StopResponse> {
-    private static readonly pb::MessageParser<StopResponse> _parser = new pb::MessageParser<StopResponse>(() => new StopResponse());
+  public sealed partial class AddChannelLinkResponse : pb::IMessage<AddChannelLinkResponse> {
+    private static readonly pb::MessageParser<AddChannelLinkResponse> _parser = new pb::MessageParser<AddChannelLinkResponse>(() => new AddChannelLinkResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<StopResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<AddChannelLinkResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[9]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[18]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1397,54 +2398,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopResponse() {
+    public AddChannelLinkResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopResponse(StopResponse other) : this() {
-      status_ = other.status_;
+    public AddChannelLinkResponse(AddChannelLinkResponse other) : this() {
+      success_ = other.success_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public StopResponse Clone() {
-      return new StopResponse(this);
+    public AddChannelLinkResponse Clone() {
+      return new AddChannelLinkResponse(this);
     }
 
-    /// <summary>Field number for the "status" field.</summary>
-    public const int StatusFieldNumber = 1;
-    private global::ModeliRpc.Fmi2Status status_ = 0;
+    /// <summary>Field number for the "success" field.</summary>
+    public const int SuccessFieldNumber = 1;
+    private bool success_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.Fmi2Status Status {
-      get { return status_; }
+    public bool Success {
+      get { return success_; }
       set {
-        status_ = value;
+        success_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as StopResponse);
+      return Equals(other as AddChannelLinkResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(StopResponse other) {
+    public bool Equals(AddChannelLinkResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Status != other.Status) return false;
+      if (Success != other.Success) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Status != 0) hash ^= Status.GetHashCode();
+      if (Success != false) hash ^= Success.GetHashCode();
       return hash;
     }
 
@@ -1455,28 +2456,28 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Status != 0) {
+      if (Success != false) {
         output.WriteRawTag(8);
-        output.WriteEnum((int) Status);
+        output.WriteBool(Success);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Status != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
+      if (Success != false) {
+        size += 1 + 1;
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(StopResponse other) {
+    public void MergeFrom(AddChannelLinkResponse other) {
       if (other == null) {
         return;
       }
-      if (other.Status != 0) {
-        Status = other.Status;
+      if (other.Success != false) {
+        Success = other.Success;
       }
     }
 
@@ -1489,7 +2490,7 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 8: {
-            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
+            Success = input.ReadBool();
             break;
           }
         }
@@ -1498,14 +2499,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class AddFmuRequest : pb::IMessage<AddFmuRequest> {
-    private static readonly pb::MessageParser<AddFmuRequest> _parser = new pb::MessageParser<AddFmuRequest>(() => new AddFmuRequest());
+  public sealed partial class RemoveChannelLinkRequest : pb::IMessage<RemoveChannelLinkRequest> {
+    private static readonly pb::MessageParser<RemoveChannelLinkRequest> _parser = new pb::MessageParser<RemoveChannelLinkRequest>(() => new RemoveChannelLinkRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<AddFmuRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<RemoveChannelLinkRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[10]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[19]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1514,68 +2515,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuRequest() {
+    public RemoveChannelLinkRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuRequest(AddFmuRequest other) : this() {
-      instanceName_ = other.instanceName_;
-      data_ = other.data_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuRequest Clone() {
-      return new AddFmuRequest(this);
+    public RemoveChannelLinkRequest(RemoveChannelLinkRequest other) : this() {
+      ChannelLink = other.channelLink_ != null ? other.ChannelLink.Clone() : null;
     }
 
-    /// <summary>Field number for the "instance_name" field.</summary>
-    public const int InstanceNameFieldNumber = 1;
-    private string instanceName_ = "";
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string InstanceName {
-      get { return instanceName_; }
-      set {
-        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
+    public RemoveChannelLinkRequest Clone() {
+      return new RemoveChannelLinkRequest(this);
     }
 
-    /// <summary>Field number for the "data" field.</summary>
-    public const int DataFieldNumber = 2;
-    private pb::ByteString data_ = pb::ByteString.Empty;
+    /// <summary>Field number for the "channel_link" field.</summary>
+    public const int ChannelLinkFieldNumber = 1;
+    private global::ModeliRpc.ChannelLink channelLink_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pb::ByteString Data {
-      get { return data_; }
+    public global::ModeliRpc.ChannelLink ChannelLink {
+      get { return channelLink_; }
       set {
-        data_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+        channelLink_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as AddFmuRequest);
+      return Equals(other as RemoveChannelLinkRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(AddFmuRequest other) {
+    public bool Equals(RemoveChannelLinkRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (InstanceName != other.InstanceName) return false;
-      if (Data != other.Data) return false;
+      if (!object.Equals(ChannelLink, other.ChannelLink)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
-      if (Data.Length != 0) hash ^= Data.GetHashCode();
+      if (channelLink_ != null) hash ^= ChannelLink.GetHashCode();
       return hash;
     }
 
@@ -1586,38 +2573,31 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (InstanceName.Length != 0) {
+      if (channelLink_ != null) {
         output.WriteRawTag(10);
-        output.WriteString(InstanceName);
-      }
-      if (Data.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteBytes(Data);
+        output.WriteMessage(ChannelLink);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (InstanceName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
-      }
-      if (Data.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data);
+      if (channelLink_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChannelLink);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(AddFmuRequest other) {
+    public void MergeFrom(RemoveChannelLinkRequest other) {
       if (other == null) {
         return;
       }
-      if (other.InstanceName.Length != 0) {
-        InstanceName = other.InstanceName;
-      }
-      if (other.Data.Length != 0) {
-        Data = other.Data;
+      if (other.channelLink_ != null) {
+        if (channelLink_ == null) {
+          channelLink_ = new global::ModeliRpc.ChannelLink();
+        }
+        ChannelLink.MergeFrom(other.ChannelLink);
       }
     }
 
@@ -1630,11 +2610,10 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 10: {
-            InstanceName = input.ReadString();
-            break;
-          }
-          case 18: {
-            Data = input.ReadBytes();
+            if (channelLink_ == null) {
+              channelLink_ = new global::ModeliRpc.ChannelLink();
+            }
+            input.ReadMessage(channelLink_);
             break;
           }
         }
@@ -1643,14 +2622,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class AddFmuResponse : pb::IMessage<AddFmuResponse> {
-    private static readonly pb::MessageParser<AddFmuResponse> _parser = new pb::MessageParser<AddFmuResponse>(() => new AddFmuResponse());
+  public sealed partial class RemoveChannelLinkResponse : pb::IMessage<RemoveChannelLinkResponse> {
+    private static readonly pb::MessageParser<RemoveChannelLinkResponse> _parser = new pb::MessageParser<RemoveChannelLinkResponse>(() => new RemoveChannelLinkResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<AddFmuResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<RemoveChannelLinkResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[11]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[20]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1659,20 +2638,20 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuResponse() {
+    public RemoveChannelLinkResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuResponse(AddFmuResponse other) : this() {
+    public RemoveChannelLinkResponse(RemoveChannelLinkResponse other) : this() {
       success_ = other.success_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddFmuResponse Clone() {
-      return new AddFmuResponse(this);
+    public RemoveChannelLinkResponse Clone() {
+      return new RemoveChannelLinkResponse(this);
     }
 
     /// <summary>Field number for the "success" field.</summary>
@@ -1688,11 +2667,11 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as AddFmuResponse);
+      return Equals(other as RemoveChannelLinkResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(AddFmuResponse other) {
+    public bool Equals(RemoveChannelLinkResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -1733,7 +2712,7 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(AddFmuResponse other) {
+    public void MergeFrom(RemoveChannelLinkResponse other) {
       if (other == null) {
         return;
       }
@@ -1760,14 +2739,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class RemoveFmuRequest : pb::IMessage<RemoveFmuRequest> {
-    private static readonly pb::MessageParser<RemoveFmuRequest> _parser = new pb::MessageParser<RemoveFmuRequest>(() => new RemoveFmuRequest());
+  public sealed partial class SetIntRequest : pb::IMessage<SetIntRequest> {
+    private static readonly pb::MessageParser<SetIntRequest> _parser = new pb::MessageParser<SetIntRequest>(() => new SetIntRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<RemoveFmuRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetIntRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[12]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[21]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1776,20 +2755,21 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuRequest() {
+    public SetIntRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuRequest(RemoveFmuRequest other) : this() {
+    public SetIntRequest(SetIntRequest other) : this() {
       instanceName_ = other.instanceName_;
+      Values = other.values_ != null ? other.Values.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuRequest Clone() {
-      return new RemoveFmuRequest(this);
+    public SetIntRequest Clone() {
+      return new SetIntRequest(this);
     }
 
     /// <summary>Field number for the "instance_name" field.</summary>
@@ -1803,13 +2783,24 @@ namespace ModeliRpc {
       }
     }
 
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private global::ModeliRpc.IntValues values_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.IntValues Values {
+      get { return values_; }
+      set {
+        values_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as RemoveFmuRequest);
+      return Equals(other as SetIntRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(RemoveFmuRequest other) {
+    public bool Equals(SetIntRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -1817,6 +2808,7 @@ namespace ModeliRpc {
         return true;
       }
       if (InstanceName != other.InstanceName) return false;
+      if (!object.Equals(Values, other.Values)) return false;
       return true;
     }
 
@@ -1824,6 +2816,7 @@ namespace ModeliRpc {
     public override int GetHashCode() {
       int hash = 1;
       if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
+      if (values_ != null) hash ^= Values.GetHashCode();
       return hash;
     }
 
@@ -1838,6 +2831,10 @@ namespace ModeliRpc {
         output.WriteRawTag(10);
         output.WriteString(InstanceName);
       }
+      if (values_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Values);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1846,17 +2843,26 @@ namespace ModeliRpc {
       if (InstanceName.Length != 0) {
         size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
       }
+      if (values_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
+      }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(RemoveFmuRequest other) {
+    public void MergeFrom(SetIntRequest other) {
       if (other == null) {
         return;
       }
       if (other.InstanceName.Length != 0) {
         InstanceName = other.InstanceName;
       }
+      if (other.values_ != null) {
+        if (values_ == null) {
+          values_ = new global::ModeliRpc.IntValues();
+        }
+        Values.MergeFrom(other.Values);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1871,20 +2877,27 @@ namespace ModeliRpc {
             InstanceName = input.ReadString();
             break;
           }
+          case 18: {
+            if (values_ == null) {
+              values_ = new global::ModeliRpc.IntValues();
+            }
+            input.ReadMessage(values_);
+            break;
+          }
         }
       }
     }
 
   }
 
-  public sealed partial class RemoveFmuResponse : pb::IMessage<RemoveFmuResponse> {
-    private static readonly pb::MessageParser<RemoveFmuResponse> _parser = new pb::MessageParser<RemoveFmuResponse>(() => new RemoveFmuResponse());
+  public sealed partial class SetIntResponse : pb::IMessage<SetIntResponse> {
+    private static readonly pb::MessageParser<SetIntResponse> _parser = new pb::MessageParser<SetIntResponse>(() => new SetIntResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<RemoveFmuResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetIntResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[13]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[22]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1893,54 +2906,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuResponse() {
+    public SetIntResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuResponse(RemoveFmuResponse other) : this() {
-      success_ = other.success_;
+    public SetIntResponse(SetIntResponse other) : this() {
+      status_ = other.status_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveFmuResponse Clone() {
-      return new RemoveFmuResponse(this);
+    public SetIntResponse Clone() {
+      return new SetIntResponse(this);
     }
 
-    /// <summary>Field number for the "success" field.</summary>
-    public const int SuccessFieldNumber = 1;
-    private bool success_;
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::ModeliRpc.Fmi2Status status_ = 0;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Success {
-      get { return success_; }
+    public global::ModeliRpc.Fmi2Status Status {
+      get { return status_; }
       set {
-        success_ = value;
+        status_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as RemoveFmuResponse);
+      return Equals(other as SetIntResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(RemoveFmuResponse other) {
+    public bool Equals(SetIntResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Success != other.Success) return false;
+      if (Status != other.Status) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Success != false) hash ^= Success.GetHashCode();
+      if (Status != 0) hash ^= Status.GetHashCode();
       return hash;
     }
 
@@ -1951,28 +2964,28 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Success != false) {
+      if (Status != 0) {
         output.WriteRawTag(8);
-        output.WriteBool(Success);
+        output.WriteEnum((int) Status);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Success != false) {
-        size += 1 + 1;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(RemoveFmuResponse other) {
+    public void MergeFrom(SetIntResponse other) {
       if (other == null) {
         return;
       }
-      if (other.Success != false) {
-        Success = other.Success;
+      if (other.Status != 0) {
+        Status = other.Status;
       }
     }
 
@@ -1985,7 +2998,7 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 8: {
-            Success = input.ReadBool();
+            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
             break;
           }
         }
@@ -1994,14 +3007,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class AddChannelLinkRequest : pb::IMessage<AddChannelLinkRequest> {
-    private static readonly pb::MessageParser<AddChannelLinkRequest> _parser = new pb::MessageParser<AddChannelLinkRequest>(() => new AddChannelLinkRequest());
+  public sealed partial class SetRealRequest : pb::IMessage<SetRealRequest> {
+    private static readonly pb::MessageParser<SetRealRequest> _parser = new pb::MessageParser<SetRealRequest>(() => new SetRealRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<AddChannelLinkRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetRealRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[14]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[23]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2010,54 +3023,68 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkRequest() {
+    public SetRealRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkRequest(AddChannelLinkRequest other) : this() {
-      ChannelLink = other.channelLink_ != null ? other.ChannelLink.Clone() : null;
+    public SetRealRequest(SetRealRequest other) : this() {
+      instanceName_ = other.instanceName_;
+      Values = other.values_ != null ? other.Values.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkRequest Clone() {
-      return new AddChannelLinkRequest(this);
+    public SetRealRequest Clone() {
+      return new SetRealRequest(this);
     }
 
-    /// <summary>Field number for the "channel_link" field.</summary>
-    public const int ChannelLinkFieldNumber = 1;
-    private global::ModeliRpc.ChannelLink channelLink_;
+    /// <summary>Field number for the "instance_name" field.</summary>
+    public const int InstanceNameFieldNumber = 1;
+    private string instanceName_ = "";
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.ChannelLink ChannelLink {
-      get { return channelLink_; }
+    public string InstanceName {
+      get { return instanceName_; }
       set {
-        channelLink_ = value;
+        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private global::ModeliRpc.RealValues values_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.RealValues Values {
+      get { return values_; }
+      set {
+        values_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as AddChannelLinkRequest);
+      return Equals(other as SetRealRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(AddChannelLinkRequest other) {
+    public bool Equals(SetRealRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (!object.Equals(ChannelLink, other.ChannelLink)) return false;
+      if (InstanceName != other.InstanceName) return false;
+      if (!object.Equals(Values, other.Values)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (channelLink_ != null) hash ^= ChannelLink.GetHashCode();
+      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
+      if (values_ != null) hash ^= Values.GetHashCode();
       return hash;
     }
 
@@ -2068,31 +3095,41 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (channelLink_ != null) {
+      if (InstanceName.Length != 0) {
         output.WriteRawTag(10);
-        output.WriteMessage(ChannelLink);
+        output.WriteString(InstanceName);
+      }
+      if (values_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Values);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (channelLink_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChannelLink);
+      if (InstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
+      }
+      if (values_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(AddChannelLinkRequest other) {
+    public void MergeFrom(SetRealRequest other) {
       if (other == null) {
         return;
       }
-      if (other.channelLink_ != null) {
-        if (channelLink_ == null) {
-          channelLink_ = new global::ModeliRpc.ChannelLink();
+      if (other.InstanceName.Length != 0) {
+        InstanceName = other.InstanceName;
+      }
+      if (other.values_ != null) {
+        if (values_ == null) {
+          values_ = new global::ModeliRpc.RealValues();
         }
-        ChannelLink.MergeFrom(other.ChannelLink);
+        Values.MergeFrom(other.Values);
       }
     }
 
@@ -2105,10 +3142,14 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 10: {
-            if (channelLink_ == null) {
-              channelLink_ = new global::ModeliRpc.ChannelLink();
+            InstanceName = input.ReadString();
+            break;
+          }
+          case 18: {
+            if (values_ == null) {
+              values_ = new global::ModeliRpc.RealValues();
             }
-            input.ReadMessage(channelLink_);
+            input.ReadMessage(values_);
             break;
           }
         }
@@ -2117,14 +3158,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class AddChannelLinkResponse : pb::IMessage<AddChannelLinkResponse> {
-    private static readonly pb::MessageParser<AddChannelLinkResponse> _parser = new pb::MessageParser<AddChannelLinkResponse>(() => new AddChannelLinkResponse());
+  public sealed partial class SetRealResponse : pb::IMessage<SetRealResponse> {
+    private static readonly pb::MessageParser<SetRealResponse> _parser = new pb::MessageParser<SetRealResponse>(() => new SetRealResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<AddChannelLinkResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetRealResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[15]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[24]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2133,54 +3174,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkResponse() {
+    public SetRealResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkResponse(AddChannelLinkResponse other) : this() {
-      success_ = other.success_;
+    public SetRealResponse(SetRealResponse other) : this() {
+      status_ = other.status_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public AddChannelLinkResponse Clone() {
-      return new AddChannelLinkResponse(this);
+    public SetRealResponse Clone() {
+      return new SetRealResponse(this);
     }
 
-    /// <summary>Field number for the "success" field.</summary>
-    public const int SuccessFieldNumber = 1;
-    private bool success_;
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::ModeliRpc.Fmi2Status status_ = 0;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Success {
-      get { return success_; }
+    public global::ModeliRpc.Fmi2Status Status {
+      get { return status_; }
       set {
-        success_ = value;
+        status_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as AddChannelLinkResponse);
+      return Equals(other as SetRealResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(AddChannelLinkResponse other) {
+    public bool Equals(SetRealResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Success != other.Success) return false;
+      if (Status != other.Status) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Success != false) hash ^= Success.GetHashCode();
+      if (Status != 0) hash ^= Status.GetHashCode();
       return hash;
     }
 
@@ -2191,28 +3232,28 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Success != false) {
+      if (Status != 0) {
         output.WriteRawTag(8);
-        output.WriteBool(Success);
+        output.WriteEnum((int) Status);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Success != false) {
-        size += 1 + 1;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(AddChannelLinkResponse other) {
+    public void MergeFrom(SetRealResponse other) {
       if (other == null) {
         return;
       }
-      if (other.Success != false) {
-        Success = other.Success;
+      if (other.Status != 0) {
+        Status = other.Status;
       }
     }
 
@@ -2225,7 +3266,7 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 8: {
-            Success = input.ReadBool();
+            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
             break;
           }
         }
@@ -2234,14 +3275,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class RemoveChannelLinkRequest : pb::IMessage<RemoveChannelLinkRequest> {
-    private static readonly pb::MessageParser<RemoveChannelLinkRequest> _parser = new pb::MessageParser<RemoveChannelLinkRequest>(() => new RemoveChannelLinkRequest());
+  public sealed partial class SetBoolRequest : pb::IMessage<SetBoolRequest> {
+    private static readonly pb::MessageParser<SetBoolRequest> _parser = new pb::MessageParser<SetBoolRequest>(() => new SetBoolRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<RemoveChannelLinkRequest> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetBoolRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[16]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[25]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2250,54 +3291,68 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkRequest() {
+    public SetBoolRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkRequest(RemoveChannelLinkRequest other) : this() {
-      ChannelLink = other.channelLink_ != null ? other.ChannelLink.Clone() : null;
+    public SetBoolRequest(SetBoolRequest other) : this() {
+      instanceName_ = other.instanceName_;
+      Values = other.values_ != null ? other.Values.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkRequest Clone() {
-      return new RemoveChannelLinkRequest(this);
+    public SetBoolRequest Clone() {
+      return new SetBoolRequest(this);
     }
 
-    /// <summary>Field number for the "channel_link" field.</summary>
-    public const int ChannelLinkFieldNumber = 1;
-    private global::ModeliRpc.ChannelLink channelLink_;
+    /// <summary>Field number for the "instance_name" field.</summary>
+    public const int InstanceNameFieldNumber = 1;
+    private string instanceName_ = "";
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.ChannelLink ChannelLink {
-      get { return channelLink_; }
+    public string InstanceName {
+      get { return instanceName_; }
       set {
-        channelLink_ = value;
+        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private global::ModeliRpc.BoolValues values_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.BoolValues Values {
+      get { return values_; }
+      set {
+        values_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as RemoveChannelLinkRequest);
+      return Equals(other as SetBoolRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(RemoveChannelLinkRequest other) {
+    public bool Equals(SetBoolRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (!object.Equals(ChannelLink, other.ChannelLink)) return false;
+      if (InstanceName != other.InstanceName) return false;
+      if (!object.Equals(Values, other.Values)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (channelLink_ != null) hash ^= ChannelLink.GetHashCode();
+      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
+      if (values_ != null) hash ^= Values.GetHashCode();
       return hash;
     }
 
@@ -2308,31 +3363,41 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (channelLink_ != null) {
+      if (InstanceName.Length != 0) {
         output.WriteRawTag(10);
-        output.WriteMessage(ChannelLink);
+        output.WriteString(InstanceName);
+      }
+      if (values_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(Values);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (channelLink_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ChannelLink);
+      if (InstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
+      }
+      if (values_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(RemoveChannelLinkRequest other) {
+    public void MergeFrom(SetBoolRequest other) {
       if (other == null) {
         return;
       }
-      if (other.channelLink_ != null) {
-        if (channelLink_ == null) {
-          channelLink_ = new global::ModeliRpc.ChannelLink();
+      if (other.InstanceName.Length != 0) {
+        InstanceName = other.InstanceName;
+      }
+      if (other.values_ != null) {
+        if (values_ == null) {
+          values_ = new global::ModeliRpc.BoolValues();
         }
-        ChannelLink.MergeFrom(other.ChannelLink);
+        Values.MergeFrom(other.Values);
       }
     }
 
@@ -2345,10 +3410,14 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 10: {
-            if (channelLink_ == null) {
-              channelLink_ = new global::ModeliRpc.ChannelLink();
+            InstanceName = input.ReadString();
+            break;
+          }
+          case 18: {
+            if (values_ == null) {
+              values_ = new global::ModeliRpc.BoolValues();
             }
-            input.ReadMessage(channelLink_);
+            input.ReadMessage(values_);
             break;
           }
         }
@@ -2357,14 +3426,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class RemoveChannelLinkResponse : pb::IMessage<RemoveChannelLinkResponse> {
-    private static readonly pb::MessageParser<RemoveChannelLinkResponse> _parser = new pb::MessageParser<RemoveChannelLinkResponse>(() => new RemoveChannelLinkResponse());
+  public sealed partial class SetBoolResponse : pb::IMessage<SetBoolResponse> {
+    private static readonly pb::MessageParser<SetBoolResponse> _parser = new pb::MessageParser<SetBoolResponse>(() => new SetBoolResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<RemoveChannelLinkResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetBoolResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[17]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[26]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2373,54 +3442,54 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkResponse() {
+    public SetBoolResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkResponse(RemoveChannelLinkResponse other) : this() {
-      success_ = other.success_;
+    public SetBoolResponse(SetBoolResponse other) : this() {
+      status_ = other.status_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public RemoveChannelLinkResponse Clone() {
-      return new RemoveChannelLinkResponse(this);
+    public SetBoolResponse Clone() {
+      return new SetBoolResponse(this);
     }
 
-    /// <summary>Field number for the "success" field.</summary>
-    public const int SuccessFieldNumber = 1;
-    private bool success_;
+    /// <summary>Field number for the "status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private global::ModeliRpc.Fmi2Status status_ = 0;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Success {
-      get { return success_; }
+    public global::ModeliRpc.Fmi2Status Status {
+      get { return status_; }
       set {
-        success_ = value;
+        status_ = value;
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as RemoveChannelLinkResponse);
+      return Equals(other as SetBoolResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(RemoveChannelLinkResponse other) {
+    public bool Equals(SetBoolResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (Success != other.Success) return false;
+      if (Status != other.Status) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (Success != false) hash ^= Success.GetHashCode();
+      if (Status != 0) hash ^= Status.GetHashCode();
       return hash;
     }
 
@@ -2431,28 +3500,28 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Success != false) {
+      if (Status != 0) {
         output.WriteRawTag(8);
-        output.WriteBool(Success);
+        output.WriteEnum((int) Status);
       }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (Success != false) {
-        size += 1 + 1;
+      if (Status != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
       }
       return size;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(RemoveChannelLinkResponse other) {
+    public void MergeFrom(SetBoolResponse other) {
       if (other == null) {
         return;
       }
-      if (other.Success != false) {
-        Success = other.Success;
+      if (other.Status != 0) {
+        Status = other.Status;
       }
     }
 
@@ -2465,7 +3534,7 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 8: {
-            Success = input.ReadBool();
+            status_ = (global::ModeliRpc.Fmi2Status) input.ReadEnum();
             break;
           }
         }
@@ -2474,14 +3543,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class SetValuesReqest : pb::IMessage<SetValuesReqest> {
-    private static readonly pb::MessageParser<SetValuesReqest> _parser = new pb::MessageParser<SetValuesReqest>(() => new SetValuesReqest());
+  public sealed partial class SetStringRequest : pb::IMessage<SetStringRequest> {
+    private static readonly pb::MessageParser<SetStringRequest> _parser = new pb::MessageParser<SetStringRequest>(() => new SetStringRequest());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SetValuesReqest> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetStringRequest> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[18]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[27]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2490,27 +3559,39 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesReqest() {
+    public SetStringRequest() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesReqest(SetValuesReqest other) : this() {
+    public SetStringRequest(SetStringRequest other) : this() {
+      instanceName_ = other.instanceName_;
       Values = other.values_ != null ? other.Values.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesReqest Clone() {
-      return new SetValuesReqest(this);
+    public SetStringRequest Clone() {
+      return new SetStringRequest(this);
+    }
+
+    /// <summary>Field number for the "instance_name" field.</summary>
+    public const int InstanceNameFieldNumber = 1;
+    private string instanceName_ = "";
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string InstanceName {
+      get { return instanceName_; }
+      set {
+        instanceName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
     }
 
     /// <summary>Field number for the "values" field.</summary>
-    public const int ValuesFieldNumber = 1;
-    private global::ModeliRpc.Values values_;
+    public const int ValuesFieldNumber = 2;
+    private global::ModeliRpc.StringValues values_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.Values Values {
+    public global::ModeliRpc.StringValues Values {
       get { return values_; }
       set {
         values_ = value;
@@ -2519,17 +3600,18 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as SetValuesReqest);
+      return Equals(other as SetStringRequest);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SetValuesReqest other) {
+    public bool Equals(SetStringRequest other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
       if (ReferenceEquals(other, this)) {
         return true;
       }
+      if (InstanceName != other.InstanceName) return false;
       if (!object.Equals(Values, other.Values)) return false;
       return true;
     }
@@ -2537,6 +3619,7 @@ namespace ModeliRpc {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
+      if (InstanceName.Length != 0) hash ^= InstanceName.GetHashCode();
       if (values_ != null) hash ^= Values.GetHashCode();
       return hash;
     }
@@ -2548,8 +3631,12 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (values_ != null) {
+      if (InstanceName.Length != 0) {
         output.WriteRawTag(10);
+        output.WriteString(InstanceName);
+      }
+      if (values_ != null) {
+        output.WriteRawTag(18);
         output.WriteMessage(Values);
       }
     }
@@ -2557,6 +3644,9 @@ namespace ModeliRpc {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
+      if (InstanceName.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(InstanceName);
+      }
       if (values_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
       }
@@ -2564,13 +3654,16 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SetValuesReqest other) {
+    public void MergeFrom(SetStringRequest other) {
       if (other == null) {
         return;
       }
+      if (other.InstanceName.Length != 0) {
+        InstanceName = other.InstanceName;
+      }
       if (other.values_ != null) {
         if (values_ == null) {
-          values_ = new global::ModeliRpc.Values();
+          values_ = new global::ModeliRpc.StringValues();
         }
         Values.MergeFrom(other.Values);
       }
@@ -2585,8 +3678,12 @@ namespace ModeliRpc {
             input.SkipLastField();
             break;
           case 10: {
+            InstanceName = input.ReadString();
+            break;
+          }
+          case 18: {
             if (values_ == null) {
-              values_ = new global::ModeliRpc.Values();
+              values_ = new global::ModeliRpc.StringValues();
             }
             input.ReadMessage(values_);
             break;
@@ -2597,14 +3694,14 @@ namespace ModeliRpc {
 
   }
 
-  public sealed partial class SetValuesResponse : pb::IMessage<SetValuesResponse> {
-    private static readonly pb::MessageParser<SetValuesResponse> _parser = new pb::MessageParser<SetValuesResponse>(() => new SetValuesResponse());
+  public sealed partial class SetStringResponse : pb::IMessage<SetStringResponse> {
+    private static readonly pb::MessageParser<SetStringResponse> _parser = new pb::MessageParser<SetStringResponse>(() => new SetStringResponse());
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SetValuesResponse> Parser { get { return _parser; } }
+    public static pb::MessageParser<SetStringResponse> Parser { get { return _parser; } }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[19]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[28]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2613,20 +3710,20 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesResponse() {
+    public SetStringResponse() {
       OnConstruction();
     }
 
     partial void OnConstruction();
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesResponse(SetValuesResponse other) : this() {
+    public SetStringResponse(SetStringResponse other) : this() {
       status_ = other.status_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SetValuesResponse Clone() {
-      return new SetValuesResponse(this);
+    public SetStringResponse Clone() {
+      return new SetStringResponse(this);
     }
 
     /// <summary>Field number for the "status" field.</summary>
@@ -2642,11 +3739,11 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
-      return Equals(other as SetValuesResponse);
+      return Equals(other as SetStringResponse);
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SetValuesResponse other) {
+    public bool Equals(SetStringResponse other) {
       if (ReferenceEquals(other, null)) {
         return false;
       }
@@ -2687,7 +3784,7 @@ namespace ModeliRpc {
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SetValuesResponse other) {
+    public void MergeFrom(SetStringResponse other) {
       if (other == null) {
         return;
       }
@@ -2721,7 +3818,7 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[20]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[29]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2810,7 +3907,7 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[21]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[30]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2827,8 +3924,11 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public NewValuesResponse(NewValuesResponse other) : this() {
-      Values = other.values_ != null ? other.Values.Clone() : null;
       timestamp_ = other.timestamp_;
+      IntValues = other.intValues_ != null ? other.IntValues.Clone() : null;
+      RealValues = other.realValues_ != null ? other.RealValues.Clone() : null;
+      BoolValues = other.boolValues_ != null ? other.BoolValues.Clone() : null;
+      StringValues = other.stringValues_ != null ? other.StringValues.Clone() : null;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2836,19 +3936,8 @@ namespace ModeliRpc {
       return new NewValuesResponse(this);
     }
 
-    /// <summary>Field number for the "values" field.</summary>
-    public const int ValuesFieldNumber = 1;
-    private global::ModeliRpc.Values values_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::ModeliRpc.Values Values {
-      get { return values_; }
-      set {
-        values_ = value;
-      }
-    }
-
     /// <summary>Field number for the "timestamp" field.</summary>
-    public const int TimestampFieldNumber = 2;
+    public const int TimestampFieldNumber = 1;
     private double timestamp_;
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public double Timestamp {
@@ -2858,6 +3947,50 @@ namespace ModeliRpc {
       }
     }
 
+    /// <summary>Field number for the "intValues" field.</summary>
+    public const int IntValuesFieldNumber = 2;
+    private global::ModeliRpc.IntValues intValues_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.IntValues IntValues {
+      get { return intValues_; }
+      set {
+        intValues_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "realValues" field.</summary>
+    public const int RealValuesFieldNumber = 3;
+    private global::ModeliRpc.RealValues realValues_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.RealValues RealValues {
+      get { return realValues_; }
+      set {
+        realValues_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "boolValues" field.</summary>
+    public const int BoolValuesFieldNumber = 4;
+    private global::ModeliRpc.BoolValues boolValues_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.BoolValues BoolValues {
+      get { return boolValues_; }
+      set {
+        boolValues_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stringValues" field.</summary>
+    public const int StringValuesFieldNumber = 5;
+    private global::ModeliRpc.StringValues stringValues_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::ModeliRpc.StringValues StringValues {
+      get { return stringValues_; }
+      set {
+        stringValues_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as NewValuesResponse);
@@ -2871,16 +4004,22 @@ namespace ModeliRpc {
       if (ReferenceEquals(other, this)) {
         return true;
       }
-      if (!object.Equals(Values, other.Values)) return false;
       if (Timestamp != other.Timestamp) return false;
+      if (!object.Equals(IntValues, other.IntValues)) return false;
+      if (!object.Equals(RealValues, other.RealValues)) return false;
+      if (!object.Equals(BoolValues, other.BoolValues)) return false;
+      if (!object.Equals(StringValues, other.StringValues)) return false;
       return true;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override int GetHashCode() {
       int hash = 1;
-      if (values_ != null) hash ^= Values.GetHashCode();
       if (Timestamp != 0D) hash ^= Timestamp.GetHashCode();
+      if (intValues_ != null) hash ^= IntValues.GetHashCode();
+      if (realValues_ != null) hash ^= RealValues.GetHashCode();
+      if (boolValues_ != null) hash ^= BoolValues.GetHashCode();
+      if (stringValues_ != null) hash ^= StringValues.GetHashCode();
       return hash;
     }
 
@@ -2891,25 +4030,46 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public void WriteTo(pb::CodedOutputStream output) {
-      if (values_ != null) {
-        output.WriteRawTag(10);
-        output.WriteMessage(Values);
-      }
       if (Timestamp != 0D) {
-        output.WriteRawTag(17);
+        output.WriteRawTag(9);
         output.WriteDouble(Timestamp);
       }
+      if (intValues_ != null) {
+        output.WriteRawTag(18);
+        output.WriteMessage(IntValues);
+      }
+      if (realValues_ != null) {
+        output.WriteRawTag(26);
+        output.WriteMessage(RealValues);
+      }
+      if (boolValues_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(BoolValues);
+      }
+      if (stringValues_ != null) {
+        output.WriteRawTag(42);
+        output.WriteMessage(StringValues);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public int CalculateSize() {
       int size = 0;
-      if (values_ != null) {
-        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values);
-      }
       if (Timestamp != 0D) {
         size += 1 + 8;
       }
+      if (intValues_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IntValues);
+      }
+      if (realValues_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RealValues);
+      }
+      if (boolValues_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BoolValues);
+      }
+      if (stringValues_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StringValues);
+      }
       return size;
     }
 
@@ -2918,15 +4078,33 @@ namespace ModeliRpc {
       if (other == null) {
         return;
       }
-      if (other.values_ != null) {
-        if (values_ == null) {
-          values_ = new global::ModeliRpc.Values();
-        }
-        Values.MergeFrom(other.Values);
-      }
       if (other.Timestamp != 0D) {
         Timestamp = other.Timestamp;
       }
+      if (other.intValues_ != null) {
+        if (intValues_ == null) {
+          intValues_ = new global::ModeliRpc.IntValues();
+        }
+        IntValues.MergeFrom(other.IntValues);
+      }
+      if (other.realValues_ != null) {
+        if (realValues_ == null) {
+          realValues_ = new global::ModeliRpc.RealValues();
+        }
+        RealValues.MergeFrom(other.RealValues);
+      }
+      if (other.boolValues_ != null) {
+        if (boolValues_ == null) {
+          boolValues_ = new global::ModeliRpc.BoolValues();
+        }
+        BoolValues.MergeFrom(other.BoolValues);
+      }
+      if (other.stringValues_ != null) {
+        if (stringValues_ == null) {
+          stringValues_ = new global::ModeliRpc.StringValues();
+        }
+        StringValues.MergeFrom(other.StringValues);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2937,15 +4115,36 @@ namespace ModeliRpc {
           default:
             input.SkipLastField();
             break;
-          case 10: {
-            if (values_ == null) {
-              values_ = new global::ModeliRpc.Values();
+          case 9: {
+            Timestamp = input.ReadDouble();
+            break;
+          }
+          case 18: {
+            if (intValues_ == null) {
+              intValues_ = new global::ModeliRpc.IntValues();
             }
-            input.ReadMessage(values_);
+            input.ReadMessage(intValues_);
             break;
           }
-          case 17: {
-            Timestamp = input.ReadDouble();
+          case 26: {
+            if (realValues_ == null) {
+              realValues_ = new global::ModeliRpc.RealValues();
+            }
+            input.ReadMessage(realValues_);
+            break;
+          }
+          case 34: {
+            if (boolValues_ == null) {
+              boolValues_ = new global::ModeliRpc.BoolValues();
+            }
+            input.ReadMessage(boolValues_);
+            break;
+          }
+          case 42: {
+            if (stringValues_ == null) {
+              stringValues_ = new global::ModeliRpc.StringValues();
+            }
+            input.ReadMessage(stringValues_);
             break;
           }
         }
@@ -2961,7 +4160,7 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[22]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[31]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -3050,7 +4249,7 @@ namespace ModeliRpc {
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public static pbr::MessageDescriptor Descriptor {
-      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[23]; }
+      get { return global::ModeliRpc.ModeliRpcReflection.Descriptor.MessageTypes[32]; }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
diff --git a/ModeliRpc_Cs/ModeliRpcGrpc.cs b/ModeliRpc_Cs/ModeliRpcGrpc.cs
index 7ca987ecdb791d7d41c92cec845a3477279a9449..d4dcbdcb776c39e8fbb1b79aae7ce05d45eee263 100644
--- a/ModeliRpc_Cs/ModeliRpcGrpc.cs
+++ b/ModeliRpc_Cs/ModeliRpcGrpc.cs
@@ -37,8 +37,14 @@ namespace ModeliRpc {
     static readonly grpc::Marshaller<global::ModeliRpc.AddChannelLinkResponse> __Marshaller_AddChannelLinkResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.AddChannelLinkResponse.Parser.ParseFrom);
     static readonly grpc::Marshaller<global::ModeliRpc.RemoveChannelLinkRequest> __Marshaller_RemoveChannelLinkRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.RemoveChannelLinkRequest.Parser.ParseFrom);
     static readonly grpc::Marshaller<global::ModeliRpc.RemoveChannelLinkResponse> __Marshaller_RemoveChannelLinkResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.RemoveChannelLinkResponse.Parser.ParseFrom);
-    static readonly grpc::Marshaller<global::ModeliRpc.SetValuesReqest> __Marshaller_SetValuesReqest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetValuesReqest.Parser.ParseFrom);
-    static readonly grpc::Marshaller<global::ModeliRpc.SetValuesResponse> __Marshaller_SetValuesResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetValuesResponse.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetIntRequest> __Marshaller_SetIntRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetIntRequest.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetIntResponse> __Marshaller_SetIntResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetIntResponse.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetRealRequest> __Marshaller_SetRealRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetRealRequest.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetRealResponse> __Marshaller_SetRealResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetRealResponse.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetBoolRequest> __Marshaller_SetBoolRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetBoolRequest.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetBoolResponse> __Marshaller_SetBoolResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetBoolResponse.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetStringRequest> __Marshaller_SetStringRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetStringRequest.Parser.ParseFrom);
+    static readonly grpc::Marshaller<global::ModeliRpc.SetStringResponse> __Marshaller_SetStringResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.SetStringResponse.Parser.ParseFrom);
     static readonly grpc::Marshaller<global::ModeliRpc.NewValuesRequest> __Marshaller_NewValuesRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.NewValuesRequest.Parser.ParseFrom);
     static readonly grpc::Marshaller<global::ModeliRpc.NewValuesResponse> __Marshaller_NewValuesResponse = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.NewValuesResponse.Parser.ParseFrom);
     static readonly grpc::Marshaller<global::ModeliRpc.LogRequest> __Marshaller_LogRequest = grpc::Marshallers.Create((arg) => global::Google.Protobuf.MessageExtensions.ToByteArray(arg), global::ModeliRpc.LogRequest.Parser.ParseFrom);
@@ -100,12 +106,33 @@ namespace ModeliRpc {
         __Marshaller_RemoveChannelLinkRequest,
         __Marshaller_RemoveChannelLinkResponse);
 
-    static readonly grpc::Method<global::ModeliRpc.SetValuesReqest, global::ModeliRpc.SetValuesResponse> __Method_SetValues = new grpc::Method<global::ModeliRpc.SetValuesReqest, global::ModeliRpc.SetValuesResponse>(
+    static readonly grpc::Method<global::ModeliRpc.SetIntRequest, global::ModeliRpc.SetIntResponse> __Method_SetInt = new grpc::Method<global::ModeliRpc.SetIntRequest, global::ModeliRpc.SetIntResponse>(
         grpc::MethodType.Unary,
         __ServiceName,
-        "SetValues",
-        __Marshaller_SetValuesReqest,
-        __Marshaller_SetValuesResponse);
+        "SetInt",
+        __Marshaller_SetIntRequest,
+        __Marshaller_SetIntResponse);
+
+    static readonly grpc::Method<global::ModeliRpc.SetRealRequest, global::ModeliRpc.SetRealResponse> __Method_SetReal = new grpc::Method<global::ModeliRpc.SetRealRequest, global::ModeliRpc.SetRealResponse>(
+        grpc::MethodType.Unary,
+        __ServiceName,
+        "SetReal",
+        __Marshaller_SetRealRequest,
+        __Marshaller_SetRealResponse);
+
+    static readonly grpc::Method<global::ModeliRpc.SetBoolRequest, global::ModeliRpc.SetBoolResponse> __Method_SetBool = new grpc::Method<global::ModeliRpc.SetBoolRequest, global::ModeliRpc.SetBoolResponse>(
+        grpc::MethodType.Unary,
+        __ServiceName,
+        "SetBool",
+        __Marshaller_SetBoolRequest,
+        __Marshaller_SetBoolResponse);
+
+    static readonly grpc::Method<global::ModeliRpc.SetStringRequest, global::ModeliRpc.SetStringResponse> __Method_SetString = new grpc::Method<global::ModeliRpc.SetStringRequest, global::ModeliRpc.SetStringResponse>(
+        grpc::MethodType.Unary,
+        __ServiceName,
+        "SetString",
+        __Marshaller_SetStringRequest,
+        __Marshaller_SetStringResponse);
 
     static readonly grpc::Method<global::ModeliRpc.NewValuesRequest, global::ModeliRpc.NewValuesResponse> __Method_NewValues = new grpc::Method<global::ModeliRpc.NewValuesRequest, global::ModeliRpc.NewValuesResponse>(
         grpc::MethodType.ServerStreaming,
@@ -195,7 +222,22 @@ namespace ModeliRpc {
       /// <param name="request">The request received from the client.</param>
       /// <param name="context">The context of the server-side call handler being invoked.</param>
       /// <returns>The response to send back to the client (wrapped by a task).</returns>
-      public virtual global::System.Threading.Tasks.Task<global::ModeliRpc.SetValuesResponse> SetValues(global::ModeliRpc.SetValuesReqest request, grpc::ServerCallContext context)
+      public virtual global::System.Threading.Tasks.Task<global::ModeliRpc.SetIntResponse> SetInt(global::ModeliRpc.SetIntRequest request, grpc::ServerCallContext context)
+      {
+        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
+      }
+
+      public virtual global::System.Threading.Tasks.Task<global::ModeliRpc.SetRealResponse> SetReal(global::ModeliRpc.SetRealRequest request, grpc::ServerCallContext context)
+      {
+        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
+      }
+
+      public virtual global::System.Threading.Tasks.Task<global::ModeliRpc.SetBoolResponse> SetBool(global::ModeliRpc.SetBoolRequest request, grpc::ServerCallContext context)
+      {
+        throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
+      }
+
+      public virtual global::System.Threading.Tasks.Task<global::ModeliRpc.SetStringResponse> SetString(global::ModeliRpc.SetStringRequest request, grpc::ServerCallContext context)
       {
         throw new grpc::RpcException(new grpc::Status(grpc::StatusCode.Unimplemented, ""));
       }
@@ -447,9 +489,9 @@ namespace ModeliRpc {
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::ModeliRpc.SetValuesResponse SetValues(global::ModeliRpc.SetValuesReqest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::ModeliRpc.SetIntResponse SetInt(global::ModeliRpc.SetIntRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
-        return SetValues(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+        return SetInt(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
       /// <summary>
       /// Transfer settable channel values
@@ -457,9 +499,9 @@ namespace ModeliRpc {
       /// <param name="request">The request to send to the server.</param>
       /// <param name="options">The options for the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::ModeliRpc.SetValuesResponse SetValues(global::ModeliRpc.SetValuesReqest request, grpc::CallOptions options)
+      public virtual global::ModeliRpc.SetIntResponse SetInt(global::ModeliRpc.SetIntRequest request, grpc::CallOptions options)
       {
-        return CallInvoker.BlockingUnaryCall(__Method_SetValues, null, options, request);
+        return CallInvoker.BlockingUnaryCall(__Method_SetInt, null, options, request);
       }
       /// <summary>
       /// Transfer settable channel values
@@ -469,9 +511,9 @@ namespace ModeliRpc {
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetValuesResponse> SetValuesAsync(global::ModeliRpc.SetValuesReqest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetIntResponse> SetIntAsync(global::ModeliRpc.SetIntRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
-        return SetValuesAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+        return SetIntAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
       /// <summary>
       /// Transfer settable channel values
@@ -479,9 +521,57 @@ namespace ModeliRpc {
       /// <param name="request">The request to send to the server.</param>
       /// <param name="options">The options for the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetValuesResponse> SetValuesAsync(global::ModeliRpc.SetValuesReqest request, grpc::CallOptions options)
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetIntResponse> SetIntAsync(global::ModeliRpc.SetIntRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.AsyncUnaryCall(__Method_SetInt, null, options, request);
+      }
+      public virtual global::ModeliRpc.SetRealResponse SetReal(global::ModeliRpc.SetRealRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetReal(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual global::ModeliRpc.SetRealResponse SetReal(global::ModeliRpc.SetRealRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.BlockingUnaryCall(__Method_SetReal, null, options, request);
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetRealResponse> SetRealAsync(global::ModeliRpc.SetRealRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetRealAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetRealResponse> SetRealAsync(global::ModeliRpc.SetRealRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.AsyncUnaryCall(__Method_SetReal, null, options, request);
+      }
+      public virtual global::ModeliRpc.SetBoolResponse SetBool(global::ModeliRpc.SetBoolRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetBool(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual global::ModeliRpc.SetBoolResponse SetBool(global::ModeliRpc.SetBoolRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.BlockingUnaryCall(__Method_SetBool, null, options, request);
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetBoolResponse> SetBoolAsync(global::ModeliRpc.SetBoolRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetBoolAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetBoolResponse> SetBoolAsync(global::ModeliRpc.SetBoolRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.AsyncUnaryCall(__Method_SetBool, null, options, request);
+      }
+      public virtual global::ModeliRpc.SetStringResponse SetString(global::ModeliRpc.SetStringRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetString(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual global::ModeliRpc.SetStringResponse SetString(global::ModeliRpc.SetStringRequest request, grpc::CallOptions options)
+      {
+        return CallInvoker.BlockingUnaryCall(__Method_SetString, null, options, request);
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetStringResponse> SetStringAsync(global::ModeliRpc.SetStringRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      {
+        return SetStringAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
+      }
+      public virtual grpc::AsyncUnaryCall<global::ModeliRpc.SetStringResponse> SetStringAsync(global::ModeliRpc.SetStringRequest request, grpc::CallOptions options)
       {
-        return CallInvoker.AsyncUnaryCall(__Method_SetValues, null, options, request);
+        return CallInvoker.AsyncUnaryCall(__Method_SetString, null, options, request);
       }
       /// <summary>
       /// Stream simulation results to the client
@@ -547,7 +637,10 @@ namespace ModeliRpc {
           .AddMethod(__Method_RemoveFmu, serviceImpl.RemoveFmu)
           .AddMethod(__Method_AddChannelLink, serviceImpl.AddChannelLink)
           .AddMethod(__Method_RemoveChannelLink, serviceImpl.RemoveChannelLink)
-          .AddMethod(__Method_SetValues, serviceImpl.SetValues)
+          .AddMethod(__Method_SetInt, serviceImpl.SetInt)
+          .AddMethod(__Method_SetReal, serviceImpl.SetReal)
+          .AddMethod(__Method_SetBool, serviceImpl.SetBool)
+          .AddMethod(__Method_SetString, serviceImpl.SetString)
           .AddMethod(__Method_NewValues, serviceImpl.NewValues)
           .AddMethod(__Method_Log, serviceImpl.Log).Build();
     }