add required header and retain delegate