lots of refinements