Shader refactor

Code for managing shaders were strongly refactor