producer struct