headers can be optional