added vector calculus