implemented producer part