first cleanup pass