modified readline