Add better gl program class api