Refactoring
Use goroutines
Merge branch 'channels'
Bug fix: callback can't be blocking function