made Vector2D immutable, adjusted other formulas accordingly