major rewrite - 'struct thread' replaced with internal 'class Thread'