added boilerplate to handle easily many shaders