actually return Vec2D objects
aaaand do the constructor right too