required funcionality