Added a bunch more stuff to handle multiple shaders