Private functions below should be static.