refactored Vec to Vec3 because there will be added a Vec2