The names `GL.programs` and `GL.programTable` seem confusing. How about changing programTable to `GL.programInfos`?