needs vec2