Cleaner format than before, using structs etc