add InputReader and OutputWriter