remove awaitTermination method
add helper methods & implement abstract classes