Changed the output structure from a list of dicts to objects with convenience methods