break into helper function (inlined so no performance  hit)
bit more comment cleanup