basic vector2 implementation