make shader an opaque handle
read shaders from file directly in context class