use IOHandler to route option choose
refacotry