rewrote VertexBufferPool as generic Pool<T>