client mostly functional