split out task functionality into a separate c file