explain the function