first pass almost done