more efficient vec2d usage