introduce Shader
refactor shaders