It would be better to provide void Geometry::copy(const Array<Vertex>& vertices, const Array<int32_t>& indices, VertexDef vertex_definition) instead of void Geometry::copy(const uint8_t* data, int size, const Array<int32_t>& indices, VertexDef vertex_definition), wouldn't be?