diff --git a/R/vtu.R b/R/vtu.R
index 7106734e77f98ee68d83c292e9b650f965466edd..fd3eca5d78c5b5cb9ca2613a30e7370c0f0a9f6a 100644
--- a/R/vtu.R
+++ b/R/vtu.R
@@ -1,5 +1,35 @@
 # Functions for adding .vtu data to a OGS6 simulation object
 
+
+#'r2ogs6_mesh
+#'@description Wrapper class, so far only has a reference to a .vtu file
+#'@param mesh_ref A reference to a .vtu file
+#'@export
+r2ogs6_mesh <- function(mesh_ref){
+    new_r2ogs6_mesh(mesh_ref)
+}
+
+new_r2ogs6_mesh <- function(mesh_ref){
+
+    assertthat::assert_that(assertthat::is.string(mesh_ref))
+
+    structure(
+        list(
+            mesh_ref = mesh_ref
+            ),
+        class = "r2ogs6_mesh"
+    )
+}
+
+#'as_node.r2ogs6_curve
+#'@description Implementation of generic function as_node for S3 class r2ogs6_mesh
+#'@param x A r2ogs6_mesh class object
+as_node.r2ogs6_mesh <- function(x){
+    node <- list(mesh = structure(list(x$mesh_ref)))
+    return(node)
+}
+
+
 #'generate_structured_mesh
 #'@description Wrapper function to call generateStructuredMesh.exe (VTK mesh generator).
 #'For full documentation see https://www.opengeosys.org/docs/tools/meshing/structured-mesh-generation/
@@ -29,7 +59,7 @@ generate_structured_mesh = function(ogs6_obj, call_str) {
     system(command = paste0(ogs6_obj$ogs_bin_path, "generateStructuredMesh.exe",
                             " -o ", mesh_output_file, " ", call_str))
 
-    ogs6_obj$add_mesh(mesh_output_file_name)
+    ogs6_obj$add_mesh(r2ogs6_mesh(mesh_output_file_name))
 
     return(invisible(mesh_output_file_name))
 }
\ No newline at end of file