Moving generic functions into thier own headers