implement provider3 / consumer3