Can this be abstracted out?