should probably use a namedtuple, but meh