refine getline can get user arbitary input