fail-fast when header is not a string
use custom exception