includes cleanup, 2nd pass