These functions don't all need to be public