reduce cyclic dependency