use reflect