Rewrite using monad Parser
Add the program header parser