this function should be static so it is not exported