Refactored architecture to support multiple values per GLenum