imperfect type