we should check max of three levels here and raise a clear error message
otherwise we'd get the misleading `wrong number of arguments`