we just do reflection at this point to avoid cyclic dependencies