finish swift storage, need test