+struct
+{
+  float lookRadius = LATTICE_SIZE*LATTICE_UNIT*1.5;
+  float lookAz = 0;
+  float lookAlt = M_PI/4;
+  float fstMouseAngle[2], oldLookAz, oldLookAlt;
+} view;
+
+void glDisplayFunc();
+void glReshapeFunc(int width, int height);
+void glMouseFunc(int button, int state, int x, int y);
+void glMotionFunc(int x, int y);
+
+int main(int argc, char** argv)
+{
+  std::srand(std::time(0));
+
+  surface = std::make_shared<WaterSurface>(LATTICE_SIZE, LATTICE_UNIT);
+  sea = std::make_shared<Sea>(surface);
+
+  glutInit(&argc, argv);
+  glutInitDisplayMode(GLUT_DOUBLE);
+  glutInitWindowSize(300, 300);
+  glutInitWindowPosition(100, 100);
+  glutCreateWindow("seamulator");
+
+  glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+
+  glutDisplayFunc(glDisplayFunc);
+  glutReshapeFunc(glReshapeFunc);
+  glutMouseFunc(glMouseFunc);
+  glutMotionFunc(glMotionFunc);
+
+  glutMainLoop();
+
+  return 0;
+}
+