client functional