try to avoid cyclic dependency