Refactored ShaderHelper and subclasses