refactor the shader loading and error handling a lot more