baby steps toward GL 4.x implementation. ugh, why does that API suck so much