using futures instead of six, less code