picky compilers required typedef to be public in order to use it in a return type.