diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbd21e22c2cbb8380421db505effb1edf3839e51..0aae37de33695ded5a1ce0a68c792d21620864af 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1054,7 +1054,10 @@ if ( WALBERLA_BUILD_WITH_CUDA )
 
     #   set ( BUILD_SHARED_LIBS                      ON )
     set ( CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE ON )
-    set ( CUDA_PROPAGATE_HOST_FLAGS OFF CACHE BOOL "" )
+   
+    if( NOT WALBERLA_CXX_COMPILER_IS_MSVC )
+        set ( CUDA_PROPAGATE_HOST_FLAGS OFF CACHE BOOL "" )
+    endif()
 
     if ( (NOT DEFINED CUDA_HOST_COMPILER) AND (${CMAKE_C_COMPILER} MATCHES "ccache") )
         string ( STRIP "${CMAKE_C_COMPILER_ARG1}" stripped_compiler_string )
@@ -1074,11 +1077,11 @@ if ( WALBERLA_BUILD_WITH_CUDA )
         # but the compiler seems to note the "isystem" not the "-I"
         # it is also not possible to get all system include directories - so as a workaround we at least add boost here
         # as system include
-        foreach( boostInclude ${Boost_INCLUDE_DIRS} )
+        foreach( boostInclude ${Boost_INCLUDE_DIRS} AND NOT WALBERLA_CXX_COMPILER_IS_MSVC )
             list( APPEND CUDA_NVCC_FLAGS "-isystem ${boostInclude}" )
         endforeach()
 
-        if ( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=" )
+        if ( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=" AND NOT WALBERLA_CXX_COMPILER_IS_MSVC )
             list ( APPEND CUDA_NVCC_FLAGS "-std=c++11" )
         endif ()
 
@@ -1092,7 +1095,7 @@ if ( WALBERLA_BUILD_WITH_CUDA )
         set ( WALBERLA_BUILD_WITH_CUDA FALSE )
     endif ( )
 
-    set_directory_properties(PROPERTIES COMPILE_DEFINITIONS COMPILE_DEFINITIONS_SAVED_STATE)
+    set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${COMPILE_DEFINITIONS_SAVED_STATE}" )
 endif ( )
 ############################################################################################################################
 
diff --git a/apps/tutorials/cuda/01_GameOfLife_cuda.cpp b/apps/tutorials/cuda/01_GameOfLife_cuda.cpp
index 391f4ab11687558e476b2cddac86aed133aa71ab..518acb7e16f39b0136414fd52e9b480f4ee7b11d 100644
--- a/apps/tutorials/cuda/01_GameOfLife_cuda.cpp
+++ b/apps/tutorials/cuda/01_GameOfLife_cuda.cpp
@@ -36,6 +36,7 @@
 
 #include "field/AddToStorage.h"
 #include "field/communication/UniformMPIDatatypeInfo.h"
+#include "field/vtk/VTKWriter.h"
 
 #include "geometry/initializer/ScalarFieldFromGrayScaleImage.h"
 #include "geometry/structured/GrayScaleImage.h"
@@ -127,7 +128,7 @@ int main( int argc, char ** argv )
    commScheme.addDataToCommunicate( make_shared<Packing>(gpuFieldSrcID) );
 
    // Create Timeloop
-   const uint_t numberOfTimesteps = uint_t(10); // number of timesteps for non-gui runs
+   const uint_t numberOfTimesteps = uint_t(100); // number of timesteps for non-gui runs
    SweepTimeloop timeloop ( blocks, numberOfTimesteps );
 
    // Registering the sweep
@@ -136,6 +137,10 @@ int main( int argc, char ** argv )
 
    timeloop.add() << Sweep( cuda::fieldCpyFunctor<ScalarField, GPUField >(cpuFieldID, gpuFieldDstID) );
 
+   // Register VTK output
+   timeloop.addFuncAfterTimeStep( field::createVTKOutput<ScalarField>( cpuFieldID, *blocks, "game_of_life" ) );
+   
+   // GUI output
    GUI gui ( timeloop, blocks, argc, argv );
    gui.run();
 
diff --git a/tests/cuda/CudaMPI.cpp b/tests/cuda/CudaMPI.cpp
index 1669a1acdab3afc377067cb6edc927558f4339dd..56d03807f25da2e62e1616d95cf52abd8d92dd9c 100644
--- a/tests/cuda/CudaMPI.cpp
+++ b/tests/cuda/CudaMPI.cpp
@@ -44,7 +44,7 @@ void fullFieldTransfer()
    Field<double,4>  h_f1 ( 3, 4, 2, 42.0, field::fzyx );
    Field<double,4>  h_f2 ( 3, 4, 2, 27.0, field::fzyx );
 
-   cuda::GPUField<double> d_f ( 3, 4, 2, 4, 8.0, field::fzyx );
+   cuda::GPUField<double> d_f ( 3, 4, 2, 4, 0, field::fzyx );
 
 
    // Transfer h_f1 from CPU to GPU d_f
@@ -100,7 +100,7 @@ void blockStorageAndGui( int argc, char ** argv )
                return new GPUField( s->getNumberOfXCells(*block),
                                     s->getNumberOfYCells(*block),
                                     s->getNumberOfZCells(*block),
-                                    1 , 1.0);
+                                    1 , 1);
              },
              "GPU Field" );
 
diff --git a/tests/cuda/communication/CommTest.cpp b/tests/cuda/communication/CommTest.cpp
index ada3c766f8a3854e5ae4ec2e9e761704c1bc75a6..8233ac5615a106413516627720ee563e98b4fe0a 100644
--- a/tests/cuda/communication/CommTest.cpp
+++ b/tests/cuda/communication/CommTest.cpp
@@ -54,7 +54,7 @@ void hostToHost()
 void hostToDevice()
 {
 	Field<double, 1> hostField(SIZE_X, SIZE_Y, SIZE_Z, 4321.0, LAYOUT);
-	cuda::GPUField<double> deviceField(SIZE_X, SIZE_Y, SIZE_Z, 1, 0.0, LAYOUT);
+	cuda::GPUField<double> deviceField(SIZE_X, SIZE_Y, SIZE_Z, 1, 0, LAYOUT);
 
 	double startTime = MPI_Wtime();
 	for (int i = 0; i < NUM_ITER; ++i) {