shaders shaders and some refactor