renamed to avoid conflicting with builtin