start refactoring
add main
add then
update test main
add catch
update test catch
add reduce
rewrite reduce
update test reduce
add map
update test map
version 0.3.0