migrated from using GLUT (bad) to GLFW (good)