separate opencv impl