introducing buffer and vao types