add Progress type, simple async support, running IO action in Future