Pulled out program/shader stuff into new class