it would be nice to break the entire Gem-library into single externals (which would only load after the infrastructure library has been loaded)
one huge pro of this would be, that dynamic dependencies of single objects (e.g. openGL-2.0 for glsl; or the codec-libraries for movie/video decoding) would not affect Gem in its entirety.
e.g. if the card does not support openGL-2.0 all objects BUT some special ones would load, moving from compile-time checks towards run-time checks.
probably this is also a solution to having MMX/SSE2/AltiVec versions of an object in parallel.
this would need more ressources though.