why do these private functions need to be exposed in the main header?