todo: c++ style io to interact with user