added worker reports, worker routines moved to struct to hold state