rewrite fifo to use oo style
use function generator
update_meta_finish callback move to object method
fix retry