generic and forbid loops