add error catching
handle missing data