lotsa refinements
lots of revision