added a lot of extra vector stuff