explained function signatures