Refactored shader code into its own class so now you can create instances of a shader