use correct future factory
shutdown executor when closing the cluster
use same-thread executor for combining futures