add more type abstraction
implement del_application_list
fix header deps
implement can_apply