From http://blog.golang.org/pipelines