imperfect solution