functions up to twenty arguments