refactoring shaders