complete survey enginewith polymorphism