implements vector