refactored to return Vector from add and linear combination, exposed components for cleaner client code