explanation and function