refactor Session.Read()