generic vertex class