diff --git a/catalyst_adapter.cpp b/catalyst_adapter.cpp
index ec410eba9b404eb384a96c14a7dabe6b8f928f94..f94d721eb9dd5fd755cf46f2dfb160776ca424a5 100644
--- a/catalyst_adapter.cpp
+++ b/catalyst_adapter.cpp
@@ -79,6 +79,7 @@ void catalyst_adapter_secondary_constructor(){
     }
     channel["data/topologies/mesh/elements/connectivity"].set(vidx);
 
+    // add all 2d variables
     for(void* it = comin_var_get_descr_list_head();
         it != nullptr;
         it = comin_var_get_descr_list_next(it)){
@@ -88,6 +89,7 @@ void catalyst_adapter_secondary_constructor(){
       comin_metadata_get_integer(var_desc, "zaxis_id", &zaxis_id, &ierr);
       if(var_desc.id == jg &&
          zaxis_id == COMIN_ZAXIS_2D){
+        // TODO split tracers in separate arrays
         channel["data/fields/" + std::string(var_desc.name) + "/association"] = "element";
         channel["data/fields/" + std::string(var_desc.name) + "/topology"] = "mesh";
         channel["data/fields/" + std::string(var_desc.name) + "/volume_dependend"] = false;
@@ -97,6 +99,22 @@ void catalyst_adapter_secondary_constructor(){
           .set_external(comin_var_get_ptr(handle), ncells);
       }
     }
+
+    // add some special fields
+    channel["data/fields/mpi_rank/association"] = "element";
+    channel["data/fields/mpi_rank/topology"] = "mesh";
+    channel["data/fields/mpi_rank/volume_dependend"] = false;
+    channel["data/fields/mpi_rank/values"]
+      .set(std::vector<int>(ncells, comin_parallel_get_host_mpi_rank()));
+
+    channel["data/fields/decomp_domain/association"] = "element";
+    channel["data/fields/decomp_domain/topology"] = "mesh";
+    channel["data/fields/decomp_domain/volume_dependend"] = false;
+    int* decomp_domain_ptr = nullptr;
+    int arr_size2[2];
+    comin_descrdata_get_domain_cells_decomp_domain(jg, &decomp_domain_ptr, arr_size2);
+    channel["data/fields/decomp_domain/values"]
+      .set_external(decomp_domain_ptr, ncells);
   }
 }
 
@@ -104,9 +122,12 @@ void catalyst_adapter_execute(){
 
   static int64_t cycle = 0;
   catalyst_exec_params["catalyst/state/cycle"] = cycle;
-  catalyst_exec_params["catalyst/state/time"] = cycle;
+  static double dt = comin_descrdata_get_timesteplength(1); // TODO jg=1?!
+  catalyst_exec_params["catalyst/state/time"] = cycle*dt;
   cycle++;
 
+  // TODO: update pointers of time dependend variables
+
   enum catalyst_status err = catalyst_execute(conduit_cpp::c_node(&catalyst_exec_params));
   if (err != catalyst_status_ok)
   {