Use empty struct for print goroutine finish channel.
Use empty struct for grep goroutine sem channel.
Extracted decorating implementation to decorator.