rough, first pass