detect circular deps