added generalized vector3