refacor loop