mandatory class functionality