refactored saveAsync method
moved components used for SequentialResult into separate package