Modified to use Executor Service