# Legacy Code - In the implementation of the `Vector2d`, you don't need to use the `add`, `mul`, `div` and `sub` inside the `Vector2d` definition, since we have already implemented them using the traits `Add, Sub, Mul and Div`. ```rust impl Vector2d where T: Add + Sub + AddAssign + Mul + Div + Copy + std::fmt::Display, { pub fn new(x: T, y: T) -> Self { Self { x, y } } // pub fn add(&self, other: U) -> Vector2d // where // T: Add, // U: Copy, // { // Vector2d { // x: self.x + other, // y: self.y + other, // } // } // // pub fn sub(&self, other: U) -> Vector2d // where // T: Sub, // U: Copy, // { // Vector2d { // x: self.x - other, // y: self.y - other, // } // } // // pub fn mul(&self, other: U) -> Vector2d // where // T: Mul, // U: Copy, // { // Vector2d { // x: self.x * other, // y: self.y * other, // } // } // // pub fn div(&self, other: U) -> Vector2d // where // T: Div, // U: Copy, // { // Vector2d { // x: self.x / other, // y: self.y / other, // } // } } ```