required functionality explanation