These functions should be private.