updated to avoid function name conflicts