refactoring
core.async is updated