diff --git a/extern/glow-extras b/extern/glow-extras
index a821ee75e99e1303060aed3048732b35e01adab4..2f3aa099ae50bed454a76911421db7279782464b 160000
--- a/extern/glow-extras
+++ b/extern/glow-extras
@@ -1 +1 @@
-Subproject commit a821ee75e99e1303060aed3048732b35e01adab4
+Subproject commit 2f3aa099ae50bed454a76911421db7279782464b
diff --git a/samples/wip/viewer/main.cc b/samples/wip/viewer/main.cc
index 6ba321736f8f44a2e54c688ce5f1b74fa4b1107f..1410ed925149e65c72ea644f7f22931124696d45 100644
--- a/samples/wip/viewer/main.cc
+++ b/samples/wip/viewer/main.cc
@@ -16,6 +16,8 @@
 #include <glow-extras/vector/image2D.hh>
 #include <glow-extras/viewer/view.hh>
 
+#include <GLFW/glfw3.h>
+
 #include <typed-geometry/tg.hh>
 
 int main()
@@ -47,7 +49,7 @@ int main()
     pm::vertex_attribute<float> ptsize = m.vertices().map([&](pm::vertex_handle v) { return v.edges().avg(edge_lengths); });
 
     // Simplest view
-    glow::viewer::view(pos);
+    gv::view(pos);
 
     // Grid of examples
     {
@@ -277,6 +279,12 @@ int main()
         }
     }
 
+    // custom close keys
+    {
+        gv::view(pos, gv::close_keys('A', 'B', 'C'));
+        glow::info() << gv::get_last_close_info().closed_by_key;
+    }
+
     // Interactive Torus
     {
         pm::Mesh m;