a 2d vector class