more learning golang. try to use channels maybe?