Glsl function - add ModularProgram

I reverted back to using a set. I think either I imagined there was a problem, or this was done to fix a bug that is no longer relevant.