implement consumer4