start of applying first class ADT to material
separated buffer logic from vertex buffer