implement consumer3