implement 2D vectors