version 0.1 , no exception handling and cancel function