many changes; including ability to set attribute pointers