implement threads in derived classes