refactor shaders