Refactoring: moving to ExecutorService infrastructure and non-blocking implementation of tasks