Re-wrote the Vector class