goroutines support must be completely rewritten :(