Yes this version works.. I am not sure though if the parallel case is necessary I think without it would still work fine. I tried with 2 parallel vectors and it works fine. Maybe you can verify that as well and if so I guess you can comment it out as a further optimization.
Haitham