imperfect loop