add some comments: use collecitons.namedtuple() later