resolver circular dependence