Changed protocols to extend thread instead of implementing runnables since the threads are now being manually managed rather than submitting a set of runnables to an executorservice