too many loop needs modify