break the gl stuff into its own file, start on a scene graph