add parser interface and enhance some IO classes