diff --git a/main.cpp b/main.cpp
index 88caa41..60fcdad 100644
--- a/main.cpp
+++ b/main.cpp
@@ -167,7 +167,7 @@ int main(int argc, char* argv[]) {
       //grid.printToPrism(std::cout, prism::ModelType::MDP);
       std::stringstream ss;
       // grid.printToPrism(file, configurations ,prism::ModelType::MDP);
-      grid.printToPrism(ss, configurations ,prism::ModelType::MDP);
+      grid.printToPrism(ss, configurations , gridOptions.getModelType());
       std::string str = ss.str();
       grid.applyOverwrites(str, configurations);
       file << str;
diff --git a/util/Grid.cpp b/util/Grid.cpp
index e47ea2f..0b9fd23 100644
--- a/util/Grid.cpp
+++ b/util/Grid.cpp
@@ -2,6 +2,15 @@
 
 #include <algorithm>
 
+prism::ModelType GridOptions::getModelType() const 
+{
+  if (agentsWithView.size() > 1) {
+    return prism::ModelType::SMG;
+  } 
+
+  return prism::ModelType::MDP;
+}
+
 Grid::Grid(cells gridCells, cells background, const GridOptions &gridOptions, const std::map<coordinates, float> &stateRewards)
   : allGridCells(gridCells), background(background), gridOptions(gridOptions), stateRewards(stateRewards)
 {
diff --git a/util/Grid.h b/util/Grid.h
index c869945..1ac8965 100644
--- a/util/Grid.h
+++ b/util/Grid.h
@@ -15,6 +15,8 @@ struct GridOptions {
   std::vector<AgentName> agentsWithProbabilisticBehaviour;
   std::vector<float>     probabilitiesForActions;
   bool                   enforceOneWays;
+
+  prism::ModelType getModelType() const;
 };
 
 class Grid {