violate
not defined yet