Now using Scala futures/ExecutionContext instead of Java ExecutorService