a little farther on functions