diff --git a/main.cpp b/main.cpp
index 0ebd7042f13b155f88ea3dec11a9429d69ae7948..e8eff3c5ad53f8cb775b9073514f91bdd7102e70 100644
--- a/main.cpp
+++ b/main.cpp
@@ -18,7 +18,7 @@
 #include <vtkNew.h>
 #include <vtkSmartPointer.h>
 #include <vtkOBJReader.h>
-#include <ttkOFFReader.h>
+#include "vtkOFFReader.h"
 #include <vtksys/SystemTools.hxx>
 #include <vtkPolyData.h>
 
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
   vtkObject::GlobalWarningDisplayOff();
   if (argc != 2)
   {
-    std::cout << "Required arguments: Filename(.obj)" << std::endl;
+    std::cerr << "Required arguments: Filename(.obj)\n";
     return EXIT_FAILURE;
   }
 
@@ -80,9 +80,22 @@ int main(int argc, char *argv[])
     reader->Update();
     source = triangulate::buildValidTriangulation(reader->GetOutput());
   }
+  else if (extension == ".off")
+  {
+    vtkNew<vtkOFFReader> reader;
+    reader->SetFileName(filename.c_str());
+    reader->Update();
+    source = reader->GetOutput();
+  }
   else
   {
-    std::cout << "Required arguments: Filename(.obj)" << std::endl;
+    std::cerr << "Required arguments: Filename(.obj)\n";
+    return EXIT_FAILURE;
+  }
+
+  if (source->GetNumberOfCells() > 90000) // avoid segmentation fault
+  {
+    std::cerr << "Your mesh has too many polygones (" << source->GetNumberOfCells() << ") for this program to run properly.\n";
     return EXIT_FAILURE;
   }