abstract vector spaces