add promise, generaotr, co works.