pulled all data fetch + parsing/munging into higher level component