I feel like all of the birthday and date related stuff can be abstracted out of this function.