Changed to use a VAO internally