more futures refactoring