support user-defined header