use Consumer instead of GLSink type