Use interface system and neaten

Use an interface system for shaders and draw elements allowing easier customizable shaders and draw elements.